Projektit

Projektit

listaamisen arvoisia projekteja

2026

Trackness


Trackness on opinnäytetyöni, full stack -verkkosovellus harjoitus- ja ravitsemustietojen seurantaan. Käyttäjä voi kirjata päivittäiset askeleet, treenit ja ruokailut, tarkastella tietoja kaavioina ja saada arvion painon kehityksestä valitulta ajanjaksolta. Selainpuoli on toteutettu Reactilla ja Vitellä, palvelinpuoli Honolla Bunin päällä, ja tietokantana toimii Firestore.

Toteutin koodikannan monorepona, jossa TypeScript-tyypit ovat jaettuja, ja noudatin service-repository-mallia, jonka päällä Jotai huolehtii monimutkaisemmasta tilanhallinnasta. Sovellukseen kuuluu myös autentikointi, ja julkaisin sen tuotantoympäristöön.

Opinnäytetyön tavoitteena oli rakentaa toimiva sovellus ja arvioida, sopiiko BHVR-teknologiapino (Bun, Hono, Vite, React) tämäntyyppiseen full stack -projektiin. Tuloksena syntyi toimiva selainsovellus, ja pino osoittautui sopivaksi ja selkeäksi pohjaksi vaiheittain rakentamiselle. Työ toi myös esiin, että Bunin ekosysteemi ei ole vielä yhtä vakiintunut kuin perinteisemmät vaihtoehdot, vaikka se suoriutuikin tässä projektissa hyvin.

Trackness
Trackness
Trackness
Trackness
2024

GitHub Readme Footer Generator


Harjoitteluni aikana tein monenlaisia päivittäisiä tehtäviä, mutta kokonaisuudessaan omistamani projekti oli GitHub Readme Footer Generator. Se oli yrityksen sisäinen terminaalityökalu, joka haki organisaation kaikki repositoriot ja muokkasi niiden README-tiedostoja joko yksitellen tai massana lisäämällä tiedostojen loppuun mukautetun HTML-footerin, jossa oli yrityksen logo ja linkit. Työkalu myös arkistoi vanhoja repoja ja tunnisti jo lisätyn footerin, jolloin sen pystyi ylikirjoittamaan tai ohittamaan. Toteutin työkalun itse, ja senior-kehittäjä vastasi vaatimuksista ja koodin katselmoinnista.

2023

Sääsovellus


Sääsovellus oli kurssitehtävä, jossa keskeinen oppimistavoite oli ulkoisten rajapintojen käyttö. Hain säätiedot julkisesta Visual Crossing -rajapinnasta ja rakensin sen ympärille yksinkertaisen verkkosovelluksen, joka toimii sekä tietokoneilla että puhelimilla. Käyttäjä pystyi hakemaan paikkakuntia ja näkemään nykyiset olosuhteet, seuraavat 24 tuntia ja seitsemän päivän ennusteen. Selainpuolen toteutin pääosin Reactilla ja Tailwind CSS:llä ja pidin palvelinpuolen yksinkertaisena Express-palvelimena.

weather app gif
2023

Buglister


Rakensin Buglisterin pienenä henkilökohtaisena työkaluna, lähinnä päästäkseni kokeilemaan Electronia. Se oli työpöytäsovellus, jossa pystyi lisäämään bugeja listaan, siirtämään ne korjattuihin tai poistamaan ne, ja tallentamaan tai lataamaan koko näkymän JSON-tiedostona. Projektin tarkoitus oli päästä käsiksi Electroniin ja työpöytäsovelluksen paketointiin, ei niinkään rakentaa mitään näyttävää.

2022

Super Inventory


Tein Super Inventoryn Web-teknologiat-kurssin lopputyönä. Se on inventaariosovellus, jolla voi hallinnoida useita varastoja ja niiden tuotteita. Toteutin selainpuolen Reactilla ja palvelinpuolen Node.js:llä, Expressillä ja SQLite-tietokannalla.

Pelit

itse Unityllä tekemiäni pelejä sekä yksi kouluprojekti Unreal Enginellä

2025

The Yōkai Within


The Yōkai Within sai alkunsa koulun pelinkehityskurssin päätösprojektina, mutta kasvoi lopulta selvästi tehtävän vaatimuksia suuremmaksi. Suurimman osan siihen tarvituista taidoista opettelin itse matkan varrella. Se on feodaaliseen Japaniin sijoittuva Souls-like-peli, toteutettu Unreal Enginellä. Hahmon liikkumisessa hyödynsin Unrealin omaa Motion Matching -järjestelmää, joka mahdollistaa sulavan parkourin, reunakiipeämisen ja vaultit, ja ympäristön visuaalit tulevat alennusmyynnistä ostetusta Japani-aiheisesta asset-paketista (assetit eivät ole itse tekemiäni). Pelin järjestelmät olen sen sijaan toteuttanut itse.

Toteuttamani järjestelmät kattavat laajan kirjon. Ovien avaaminen onnistuu avaimilla tai ovi voi olla lukittu toiselta puolen. Inventaarion kautta pelaaja voi kerätä arkusta löytyvät tavarat, siirtää esineitä drag & drop -menetelmällä, ja varusteet on jaettu valmiisiin kategorioihin, kuten kulutustavaroihin. Asejärjestelmä tukee useita aseita, joilla jokaisella on omat animaationsa ja vaihtoehtoiset hyökkäyksensä, ja taistelussa on mukana lock-on yhden vihollisen kohdistamiseen kerrallaan. Maailmassa sumuseinä (este, joka merkitsee siirtymää alueiden välillä) ja illuusio-seinä (umpinaiselta näyttävä seinä, jonka läpi voi kävellä paljastaakseen kätketyn alueen) tuovat tutkimiseen lisää syvyyttä. Vihollistekoäly jakautuu eri tyyppeihin: jousiampujat sekä lähitaistelijat, jotka heittävät pommin, kun eivät yllä pelaajan luo.

Pyhäköt toimivat tallennuspisteinä: pelaaja voi rukoilla niissä, ja ne parantavat pelaajan sekä herättävät alueen viholliset uudelleen. Peliin kuuluvat myös kartan vaihdot, dungeon, miniboss ja keräilyesineet, souls-järjestelmä, tasojärjestelmä sekä statsien päivitykset ja pääpomo. Rakenne perustuu yhteen pääkenttään: pelaaja kulkee pakollisen sivudungeonin läpi ja palaa takaisin pääkentälle loppupomoa varten. Yksi työläimmistä osuuksista oli tallennusjärjestelmä, joka tallentaa kaikkien karttojen ja pelaajan tilan.

2023

Picture Perfect Pairs


Picture Perfect Pairs on simppeli kaksinpeli-muistipeli, jonka tein itse opetellakseni verkkopelien toteuttamista. Sitä pelataan verkon yli, ja mukana on myös yksinpeli. Se on toteutettu Unityn Netcode for GameObjects -kirjastolla. Pelaajat kääntelevät kortteja vuorotellen, kunnes kaikki on käännetty, ja eniten pareja saanut voittaa. Pelin jälkeen molemmat voivat halutessaan pelata uusintaottelun.

2023

Ammo Camp


Ammo Camp syntyi kymmenen tunnin tutoriaalisarjasta, jossa tavoitteena oli tehdä Overcooked-tyylinen peli eli peli, jossa valmistetaan reseptien mukaisia annoksia aikapaineessa. Omassa versiossani valmistettiin ruokien sijasta erilaisia tykin ammuksia, ja tein pelin 3D-mallit itse. Sarjassa panostettiin paljon koodin laatuun, joten se oli projekti, jossa opin eniten tapahtumapohjaisesta arkkitehtuurista.

2021

Galactic Expansion


Galactic Expansion on yksi varhaisemmista peleistäni. Siinä pelaaja kasvattaa avaruusasemien verkostoa, kerää galaksin resursseja ja puolustaa omistuksiaan aalloittain hyökkääviä vihollisia vastaan. Peli on loputon, ja tavoitteena on selvitä mahdollisimman monesta aallosta.

2021

Dash


Dash on 2D-roguelike, jonka tein viikossa itselleni asettamana haasteena ja ilman valmiiden tutoriaalien seuraamista. Pelaaja aloittaa satunnaisesti generoidusta luolastosta ja etenee yhtä kolmesta mahdollisesta pomosta kohti, kolmen elämän ja dash-kyvyn turvin. Jokainen kukistettu pomo näkyy pelin päävalikossa. Jälkikäteen ajateltuna olen lopputuloksesta edelleen ylpeä.

2020

The Battery


The Battery oli tarkoituksella ilkeä pikku peli, jonka tein noin päivässä. Pelaaja aloittaa tyhjästä huoneesta, jossa ainoa valonlähde on loppumassa, ja pelaajan pitää löytää lattialle satunnaiseen paikkaan ilmestynyt paristo ja sen jälkeen lamppu uudelleen ennen kuin valo sammuu. Kyse oli nopeasta kokeilusta enemmän kuin vakavasta projektista; pääosassa olivat tunnelma ja satunnainen sijoittelu.

2020

Booster


Booster oli ensimmäinen pelini, ja suunnittelin sen tarkoituksella vaikeaksi ja anteeksiantamattomaksi, teema joka toistui myöhemmissä peleissäni. Pelissä ohjataan avaruusalusta ja yritetään laskeutua laskeutumisalustalle seitsemässä yhä vaikeammassa tasossa; törmäys palauttaa pelaajan alkuun. Se oli ensimmäinen kerta, kun vein pienen pelin loppuun asti.