Projektit
Valikoituja projekteja, joissa näkyvät käytännön toteutus, tekninen vastuu ja kykyni rakentaa monimutkaisia ominaisuuksia sekä toimivia tuotteita epäselvistä vaatimuksista.

Gamified Joint Rehabilitation, Analysis and Training (GameRAT)
Aikajana: 1/2024 - 3/2025
15 kuukauden terveydenhuollon ohjelmistoprojekti, jossa rakensin itsenäisesti web-alustan, GraphQL-backendin, MongoDB-infrastruktuurin, 3D-harjoite-editorin, liikedataputken, analyysityökalut, viestinnän ja Quest 3 -fysioterapiadataa tukevat järjestelmät.
Vastasin itsenäisesti web-alustasta, backendistä, tietokantainfrastruktuurista, autentikoinnista, 3D-harjoite-editorista, liikedataputkesta ja neuroverkkoa tukevista järjestelmistä.
- TypeScript
- React
- Vite
- Three.js
- GraphQL
- Node.js
- MongoDB
- JWT
- RSA-salaus
- .NET
- Unity-integraatio
- Machine Learning
- GameRAT rakennettiin fysioterapiaharjoitteiden pelillistämiseen ja fysioterapeuteille työkaluksi harjoitteiden määräämiseen, seurantaan ja analysointiin.
- Suunnittelin ja rakensin itsenäisesti koko web-alustan ja backendin alusta asti, mukaan lukien React-frontendin, GraphQL-rajapinnan, JWT-autentikoinnin, roolipohjaisen käyttöoikeuksien hallinnan, MongoDB-datamallin ja palvelininfrastruktuurin.
- Rakensin fysioterapeutin käyttöliittymän kirjautumiseen, potilaiden luontiin ja muokkaukseen, valmiiden tai tallennettujen harjoitteiden määräämiseen, 3D-esikatseluun, suoritusten tarkasteluun, potilasviestintään ja harjoitekohtaiseen kipuasteikkopalautteeseen.
- Toteutin räätälöidyn Three.js-pohjaisen 3D-harjoite-editorin, jossa fysioterapeutti voi muokata käsivarren niveliä liukusäätimillä ja tallentaa uudelleenkäytettäviä keyframe-pohjaisia harjoiteanimaatioita intuitiivisella työnkululla.
- Suunnittelin räätälöidyn JSON-liikedataformaatin ja parserin, joka muunsi Quest 3:n käsien seurantadatan selaimessa toistettavaksi Three.js-animaatiodataksi liikeanalyysiä varten.
- Toteutin Unity-sovellusta varten rajapinnat potilaan autentikointiin, harjoitedatan vaihtoon ja Quest 3 -sovelluksista lähetetyn liikedatan vastaanottoon.
- Rakensin erillisen .NET-datankeruusovelluksen ja backendin hyvien ja huonojen fysioterapialiikkeiden tallentamiseen räätälöidyn neuroverkkojärjestelmän koulutusta varten.
- Toteutin arkaluonteisen datan käsittelyyn liittyviä ratkaisuja, kuten roolipohjaiset käyttörajat, backendin kautta rajatun tietokantayhteyden ja potilastietoon liittyvän RSA-salauksen.
Linkit: Projektisivu • Projektivideo
Koodi: Harjoite-editori • GraphQL-backend • AI

Autonomisen telakuorma-auton reitinhallintajärjestelmä
TypeScriptillä toteutettu insinöörityöjärjestelmä autonomisen telakuorma-auton visuaaliseen reittien luontiin, ajoneuvokohtaiseen komentojen välitykseen ja reaaliaikaiseen simulaatioseurantaan.
Ainoa kehittäjä, joka vastasi frontendistä, backendistä, WebSocket-protokollasta, simulaattorista, dokumentaatiosta ja järjestelmäarkkitehtuurista.
- TypeScript
- React
- Vite
- Leaflet
- Node.js
- WebSocket
- JSON
- Rakensin järjestelmän insinöörityönä autonomisen telakuorma-auton reittien visuaaliseen luontiin ja hallintaan.
- Järjestelmän tavoitteena oli siirtyä suorasta kauko-ohjauksesta kohti reittipohjaista autonomista hallintaa, kun taas täysi esteiden väistöön perustuva autonomia rajattiin työn ulkopuolelle.
- Rakensin React- ja Leaflet-karttakäyttöliittymän, jossa käyttäjä voi lisätä, siirtää ja poistaa reittimerkkejä, ja reitti piirtyy automaattisesti GPS-pisteiden välille.
- Mallinsin reitit GeoJSONilla sekä reittimetadatalla, kuten reitin nimellä ja pisteiden tyypeillä: alku-, väli- ja loppupiste.
- Toteutin TypeScriptillä Node.js WebSocket -palvelimen reaaliaikaiseen kommunikaatioon, ajoneuvokohtaisiin tunnisteisiin, komentojen välitykseen ja tilapäivityksiin.
- Rakensin ajoneuvosimulaattorin, joka ylläpitää omaa GPS-sijaintia ja suuntaa muistissa, reagoi komentoihin kuten oikea ajoneuvo ja seuraa reittikomentoja yksinkertaistettuna GPS-linjaseuraajana.
- Lisäsin turvallisuustoiminnon, jossa yhteyden katkeaminen lähettää pysäytyssignaalin kaikille yhdistetyille ajoneuvoille.
- Varmensin järjestelmän usealla samanaikaisella simuloidulla ajoneuvolla ja dokumentoin toteutuksen jatkokehitystä varten.

TKIO-Finder
Aikajana: 1/2026 - 5/2026
Full-stack-matchmaking-alusta, joka auttaa Metropolian opiskelijoita ja henkilöstöä löytämään ja yhdistämään TKI-projektipaikkojen ympärille.
Vastasin pääosin backend-kehityksestä, tietokantasuunnittelusta, autentikoinnista, julkaisusta ja infrastruktuurista.
- TypeScript
- React
- Vite
- Google OAuth2
- PostgreSQL
- Node.js
- Rakensin full-stack-alustan ratkaisemaan ongelmaa, jossa monet Metropolian TKI-projektipaikat olivat avoinna opiskelijoille ja henkilöstölle, mutta niitä oli vaikea löytää.
- Toteutin kevyen matchmaking-työnkulun, jossa opiskelija voi tykätä projektipaikasta, liittää mukaan lyhyen viestin ja muodostaa matchin projektin omistajan kanssa, jos molemmat osoittavat kiinnostusta.
- Suunnittelin PostgreSQL-tietokantamallin käyttäjille, työ-/projektipaikoille, hakemuksille ja matcheille.
- Toteutin full-text-haun ja suodattimet, kuten sijainnin ja paikan tyypin, jotta projektimahdollisuuksia olisi helpompi selata.
- Lisäsin Google OAuth2 -autentikoinnin ja rajasin käytön Metropolian hallinnoimiin sähköpostitileihin, erillisillä opiskelija-, henkilökunta- ja ylläpitäjärooleilla.
- Toteutin profiili- ja ilmoituskohtaiset CRUD-ominaisuudet opiskelijoille ja henkilökunnalle.
- Julkaisin projektin omalle palvelimelle käyttäen Nginxiä, PM2:ta, reverse proxy -konfiguraatiota, HTTPS:ää, domain-asetuksia, palvelinprosessien hallintaa ja CI/CD-putkea.
- Sain projektista korkeimman arvosanan.

Portfolio
Next.js:llä toteutettu monikielinen portfolio, jonka tarkoitus on esittää projektit, tekninen vastuu, CV ja yhteystiedot selkeästi rekrytoijille ja teknisille arvioijille.
- TypeScript
- Next.js
- next-intl
- CSS Modules
- Vercel
- Suunnittelin ja toteutin monikielisen portfoliosivuston projektieni, osaamiseni, CV:ni ja yhteystietojeni esittelyyn.
- Rakensin responsiivisen käyttöliittymän CSS-moduleilla ja pidin rakenteen selkeänä sekä ylläpidettävänä.
- Lisäsin sivukohtaiset metatiedot, kieliversioiden canonical- ja alternate-linkit sekä JSON-LD-rakenteista dataa hakukonenäkyvyyttä varten.
- Julkaisin sivuston Vercelissä ja hyödynsin Vercel Analyticsia kävijäseurannan tueksi.
Linkit: Projektisivu
Koodi: Lähdekoodi