Projects Projektit

Software projects, experiments, and shipped tools Ohjelmistoprojekteja, kokeiluja ja julkaistuja työkaluja

Things I have built over the years: AI tools, game and stream utilities, mobile apps, dashboards, and small websites. Open the code, read the write-up when one exists, or try the live demo if it is still online. Vuosien varrella rakentamiani asioita: tekoälytyökaluja, peli- ja striimiapuohjelmia, mobiilisovelluksia, dashboardeja ja pieniä verkkosivustoja. Avaa lähdekoodi, lue kirjoitus kun sellainen on olemassa tai kokeile demoa, jos se on yhä verkossa.

2026

TREPO Research Analytics

TREPO Research Analytics is a local Python analytics toolkit for exploring Tampere University's TREPO open repository. It scrapes recent submissions, enriches each publication with accepted dates, download counts, and optional OpenAI title-interest ratings, then serves the results through CLI reports and a Flask dashboard for rankings, charts, search, filters, and random discovery picks.

TREPO Research Analytics on paikallinen Python-pohjainen analytiikkatyökalu Tampereen yliopiston TREPO-julkaisuarkiston tutkimiseen. Se kerää uudet julkaisut, täydentää niihin hyväksymispäivät, latausmäärät ja valinnaiset OpenAI-pohjaiset kiinnostavuusarviot, ja näyttää tulokset komentoriviraportteina sekä Flask-dashboardina rankingien, kaavioiden, haun, suodattimien ja satunnaisten löytöjen selaamiseen.

2026

Niilo22.dev

Niilo22.dev is a data pipeline and web application for building a searchable archive of Niilo22 YouTube videos. It fetches YouTube metadata, downloads media with yt-dlp, transcribes Finnish speech with faster-whisper into word-level timestamps, imports transcript chunks into PostgreSQL, and serves a Next.js and Fastify search UI that links to exact video moments.

Niilo22.dev on dataputki ja web-sovellus Niilo22:n YouTube-videoiden hakukelpoisen arkiston rakentamiseen. Se hakee YouTube-metadatan, lataa median yt-dlp:llä, litteroi suomenkielisen puheen faster-whisperillä sanatason aikaleimoiksi, vie tekstikatkelmat PostgreSQL:ään ja tarjoaa Next.js- ja Fastify-pohjaisen hakukäyttöliittymän, joka linkittää suoraan oikeisiin videohetkiin.

2026

AI Workshop Playground

AI Workshop Playground is a workshop-ready web IDE where participants describe a website idea in English or Finnish and watch AI stream editable HTML, CSS, and JavaScript into a Monaco editor. It turns a classroom AI demo into a controlled teaching tool with live preview, templates, sandboxed execution, admin passwords, and usage limits.

AI Workshop Playground on workshop-käyttöön rakennettu web-IDE, jossa osallistuja kuvaa sivuidean englanniksi tai suomeksi ja tekoäly kirjoittaa muokattavaa HTML-, CSS- ja JavaScript-koodia Monaco-editoriin. Kiinnostavaa siinä on se, että tekoälydemo on viety opetustilanteeseen sopivaksi työkaluksi: mukana ovat live-esikatselu, pohjat, eristetty suoritus, hallinnan salasanat ja käyttörajat.

2026

Vaarattu's Twitch AI Chat Bot

Vaarattu's Twitch AI Chat Bot is a Gemini-powered chat bot that answers when mentioned, keeps per-user conversation context, detects language, and gives the channel a playful AI personality. Beyond simple chat replies, it can capture stream screenshots, wait out pre-roll ads, search the web, scrape pages, and use OCR and stream tools to reason about what is happening live.

Vaarattu's Twitch AI Chat Bot on Gemini-pohjainen Twitch-botti, joka vastaa mainittaessa, säilyttää käyttäjäkohtaisen keskustelukontekstin, tunnistaa kielen ja tuo kanavalle leikkisän tekoälypersoonan. Pelkkien chat-vastausten lisäksi se voi ottaa striimikuvia, odottaa mainoskatkojen ohi, hakea verkosta, lukea sivuja ja käyttää OCR- sekä striimityökaluja live-tilanteen ymmärtämiseen.

2025

WoW Guild Progress Tracker

WoW Guild Progress Tracker is a full-stack raid progression platform for World of Warcraft guilds, combining Warcraft Logs, Battle.net, Raider.IO, and Twitch data into live rankings and guild profiles. It turns scattered raid data into a community hub with boss timelines, pull counts, prediction games, tier lists, live events, and stream visibility.

WoW Guild Progress Tracker on full-stack-seurantapalvelu World of Warcraft -kiltojen raid-etenemiselle, jossa Warcraft Logs-, Battle.net-, Raider.IO- ja Twitch-data yhdistyvät live-rankingeiksi ja kiltaprofiileiksi. Se muuttaa hajallaan olevan raid-datan yhteisösivustoksi, jossa näkyvät bossien aikajanat, pullimäärät, veikkauskilpailut, tier-listat, live-tapahtumat ja käynnissä olevat striimit.

2025

WCL VOD Review

WCL VOD Review synchronizes Warcraft Logs combat reports with Twitch or YouTube VODs so raid teams can click from deaths, boss casts, and other log events to the exact video moment. It solves a real review pain point by keeping the combat timeline and footage together, with manual sync controls, boss assets, zoomable timelines, and click-to-seek analysis.

WCL VOD Review synkronoi Warcraft Logs -taisteluraportit Twitch- tai YouTube-tallenteisiin, jotta raid-tiimi voi hypätä kuolemista, bossin loitsuista ja muista logitapahtumista suoraan oikeaan videohetkeen. Se ratkaisee käytännön review-ongelman pitämällä taisteluaikajanan ja videon yhdessä, mukana manuaalinen synkronointi, bossikuvat, zoomattava aikajana ja klikkauksella tapahtuva videohaku.

2025

Generative Imagining

Generative Imagining is a bilingual AI image platform for creating, editing, organizing, and sharing images from natural-language prompts without user accounts. Its focus is educational use: password-based access, content moderation, galleries, usage limits, and admin monitoring make image generation easier to run safely in classrooms and workshops.

Generative Imagining on kaksikielinen tekoälykuvapalvelu, jossa kuvia voi luoda, muokata, järjestää ja jakaa luonnollisen kielen kehotteilla ilman käyttäjätilejä. Painopiste on opetuskäytössä: salasanapohjainen pääsy, sisällön moderointi, galleriat, käyttörajat ja hallintanäkymä helpottavat kuvageneroinnin turvallista käyttöä luokissa ja workshopeissa.

2025

Vaarattu.TV

Vaarattu.TV is a self-hosted Twitch analytics and community platform that records chat, watch time, redemptions, emote usage, stream sessions, and viewer activity for one channel. What makes it stand out is the community layer on top of the data: leaderboards, moderator search tools, stream history, multi-platform emote stats, and automatically generated Finnish viewer biographies.

Vaarattu.TV on itse hostattu Twitch-analytiikka- ja yhteisöalusta, joka tallentaa yhden kanavan chatin, katseluajan, lunastukset, emotejen käytön, striimisessiot ja katsoja-aktiivisuuden. Sen erottaa tavallisesta analytiikasta datan päälle rakennettu yhteisökerros: leaderboardit, moderaattorien hakutyökalut, striimihistoria, usean emote-alustan tilastot ja automaattisesti generoidut suomenkieliset katsojabiografiat.

2025

Unity 3D AI Assistant

Unity 3D AI Assistant turns a Ready Player Me avatar into a voice-driven AI companion inside Unity, with speech recognition, spoken responses, lip sync, animations, and multilingual conversation. It it combines several AI modalities in one embodied interface: chat, image generation and editing, web search, text-to-speech, and webcam-based Rock-Paper-Scissors.

Unity 3D AI Assistant muuttaa Ready Player Me -avatarin puheohjatuksi tekoälykumppaniksi Unityssä, mukana puheentunnistus, puhutut vastaukset, huulisynkka, animaatiot ja monikielinen keskustelu. Prototyyppinä se on kiinnostava, koska se yhdistää samaan keholliseen käyttöliittymään useita tekoälymuotoja: chatin, kuvien luonnin ja muokkauksen, web-haun, puhesynteesin ja webcamilla pelattavan kivi-paperi-sakset-pelin.

2025

GPT-Lab Score Keeper

GPT-Lab Score Keeper is a mobile-first scoreboard for team events where organizers need to create teams, score several sports quickly, and show live individual and team leaderboards. Its practical event focus is the interesting part: touch-friendly scoring, simple admin protection, three-second spectator updates, Docker deployment, and data storage light enough to run locally on event hardware.

GPT-Lab Score Keeper on mobiililähtöinen tulostaulu tiimitapahtumiin, joissa järjestäjien pitää luoda joukkueet, pisteyttää useita lajeja nopeasti ja näyttää henkilökohtaiset sekä joukkuekohtaiset leaderboardit livenä. Kiinnostavaa siinä on käytännön tapahtumafokus: kosketusystävällinen pisteytys, kevyt admin-suojaus, kolmen sekunnin välein päivittyvät katsomonäkymät, Docker-käyttöönotto ja paikalliselle tapahtumalaitteistolle riittävän kevyt tallennus.

2025

WhatsApp AI Assistant

WhatsApp AI Assistant is a proof-of-concept chatbot that brings LLM workflows directly into WhatsApp through Neonize and Whatsmeow, with QR authentication and persistent SQLite conversation context. It goes beyond text replies by handling scenarios, link scraping, PDF and DOCX extraction, image analysis, audio transcription, text-to-speech, web search, and image generation inside normal chat.

WhatsApp AI Assistant on proof of concept -chatbot, joka tuo LLM-työnkulut suoraan WhatsAppiin Neonizen ja Whatsmeow'n kautta, mukana QR-tunnistautuminen ja pysyvä SQLite-keskustelukonteksti. Se ei rajoitu tekstivastauksiin, vaan tukee skenaarioita, linkkien lukemista, PDF- ja DOCX-poimintaa, kuva-analyysia, äänen litterointia, puhesynteesiä, web-hakua ja kuvagenerointia tavallisen chatin sisällä.

2025

Voice AI Assistant Framework

Voice AI Assistant Framework is a local-first Python framework for building spoken AI assistants from separate speech-to-text, language-model, state, orchestration, and text-to-speech modules. The pieces are swappable: RealtimeSTT and Whisper input, Ollama JSON-mode reasoning, short-term memory, silence-aware conversation modes, and Finnish TTS backends such as Piper or F5-TTS can be combined for experiments.

Voice AI Assistant Framework on paikalliseen ajoon painottuva Python-runko puhuvien tekoälyavustajien rakentamiseen erillisistä puheentunnistus-, kielimalli-, tila-, orkestrointi- ja puhesynteesimoduuleista. Osia voi vaihtaa kokeilujen mukaan: RealtimeSTT- ja Whisper-syöte, Ollaman JSON-tila, lyhytkestoinen muisti, hiljaisuuden huomioivat keskustelutilat sekä suomenkieliset Piper- ja F5-TTS-taustat.

2024

Aihio Digital Demo App

Aihio Digital Demo App is a Flutter showcase for an AI-assisted marketing product, presenting revenue, SEO, social media, campaign, and customer-engagement views in a polished mobile dashboard. It makes abstract AI marketing promises concrete through a Gemini-powered assistant, strategic insights, and business-friendly analytics screens.

Aihio Digital Demo App on Flutterilla rakennettu esittelysovellus tekoälyavusteiselle markkinointituotteelle, jossa liikevaihto-, SEO-, some-, kampanja- ja asiakasvuorovaikutusnäkymät on koottu viimeisteltyyn mobiilidashboardiin. Se tekee abstrakteista tekoälymarkkinoinnin lupauksista konkreettisia Gemini-avustajan, strategisten oivallusten ja yrityskäyttöön sopivien analytiikkanäkymien avulla.

2024

Voice Guided Imaging

Voice Guided Imaging is a voice-controlled AI image generation and editing platform with a lightweight web relay, a heavier inference backend, and cloud or local processing modes. It treats image creation as a full workflow: push-to-talk prompts, session limits, persistent galleries, queue positions, progress updates, partial previews, and image-history visualization.

Voice Guided Imaging on puheohjattu tekoälykuvien luonti- ja muokkausalusta, jossa on kevyt web-välityspalvelin, raskaampi inferenssitausta sekä pilvi- ja paikalliset käsittelytilat. Se käsittelee kuvien luonnin kokonaisena työnkulkuna: push-to-talk-kehotteet, sessiorajat, pysyvät galleriat, jonosijainnit, etenemispäivitykset, osittaiset esikatselut ja kuvahistorian visualisointi.

2024

SDX Restaurant Menus

SDX Restaurant Menus is a cross-platform Flutter app for browsing daily and weekly menus from more than 100 Sodexo restaurants across Finland. It pairs live menu data with practical discovery features: smart search, favorites, restaurant-type filters, location-aware sorting, upcoming menus, and automated scripts that keep restaurant metadata fresh.

SDX Restaurant Menus on monialustainen Flutter-sovellus, jolla voi selata yli sadan suomalaisen Sodexo-ravintolan päivä- ja viikkoruokalistoja. Se yhdistää ajantasaisen menudatan käytännöllisiin hakutoimintoihin: älyhakuun, suosikkeihin, ravintolatyyppien suodatukseen, sijaintipohjaiseen järjestykseen, tuleviin ruokalistoihin ja automaattisiin skripteihin, jotka pitävät ravintolametadatan ajan tasalla.

2024

Fyr'alath Data Tracker

Fyr'alath Data Tracker is a World of Warcraft dashboard for tracking the crafting cost and acquisition trends of the Fyr'alath legendary axe across regions. It combines auction-house price history, material breakdowns, Raider.IO character discovery, Blizzard achievement data, and Chart.js visualizations into a focused player-economy analytics tool.

Fyr'alath Data Tracker on World of Warcraft -dashboard, joka seuraa Fyr'alath-legendaarisen kirveen valmistuskustannuksia ja hankintatrendejä eri alueilla. Se yhdistää huutokauppahintojen historian, materiaalierittelyt, Raider.IO:n hahmolöydökset, Blizzardin achievement-datan ja Chart.js-visualisoinnit tarkaksi pelaajatalouden analytiikkatyökaluksi.

2024

Personal Website

Personal Website is the static Astro portfolio that powers this site, organizing CV links, work history, project pages, writing, RSS, and sitemap generation without a backend. It keeps the maintenance model simple while still using reusable components, typed local data, Markdown content, SEO metadata, and a GitHub Pages deployment workflow.

Personal Website on staattinen Astro-portfolio, joka pyörittää tätä sivustoa ja kokoaa CV-linkit, työhistorian, projektisivut, kirjoitukset, RSS-syötteen ja sivukartan ilman backendia. Se pitää ylläpidon yksinkertaisena, mutta hyödyntää silti uudelleenkäytettäviä komponentteja, tyypitettyä paikallista dataa, Markdown-sisältöä, SEO-metatietoja ja GitHub Pages -julkaisutyönkulkua.

2023

Twitch Song Request Desktop

Twitch Song Request Desktop is a Windows WPF app that turns Twitch Channel Point redemptions into Spotify or YouTube song requests for a stream. It packages the whole streamer workflow into a desktop tool: Twitch account setup, reward creation, Spotify integration, embedded YouTube playback, bot chat replies, playback-device control, and automatic point refunds when a request cannot be played.

Twitch Song Request Desktop on Windowsille tehty WPF-sovellus, joka muuttaa Twitchin Channel Point -lunastukset Spotify- tai YouTube-biisipyyntöiksi striimiä varten. Se paketoi koko striimaajan työnkulun työpöytätyökaluksi: Twitch-tilien asetukset, rewardin luonti, Spotify-integraatio, sisäinen YouTube-soitin, botin chat-vastaukset, toistolaitteen hallinta ja automaattiset pistepalautukset, jos pyyntöä ei voi soittaa.

2023

Twitch Spotify Song Request

Twitch Spotify Song Request is a lightweight OBS browser-source script that connects Twitch Channel Point redemptions to a Spotify queue without needing a hosted backend after setup. Its minimal deployment model is the clever part: Python is only used to generate initial OAuth tokens, while the local HTML and JavaScript handle Twitch events, Spotify search, queueing, chat replies, token refresh, and failed-request refunds.

Twitch Spotify Song Request on kevyt OBS:n browser source -skripti, joka yhdistää Twitchin Channel Point -lunastukset Spotify-jonoon ilman erillistä hostattua backendia käyttöönoton jälkeen. Sen oivallus on minimaalinen käyttöönotto: Pythonia käytetään vain alkuperäisten OAuth-tokenien luomiseen, kun taas paikallinen HTML ja JavaScript hoitavat Twitch-tapahtumat, Spotify-haun, jonotuksen, chat-vastaukset, tokenien päivityksen ja epäonnistuneiden pyyntöjen palautukset.

2021

Staff Restaurant Lunch Menu App

Staff Restaurant Lunch Menu App is a Flutter and Spring Boot application for publishing a staff restaurant's weekly menus, history, and course voting. The backend watches a Word document in Google Drive, parses menu updates into PostgreSQL, exposes them through a REST API, and gives the mobile app bilingual views with voting and historical statistics.

Staff Restaurant Lunch Menu App on Flutter- ja Spring Boot -sovellus henkilöstöravintolan viikkoruokalistojen, historian ja annosäänestyksen julkaisuun. Backend seuraa Google Drivessa olevaa Word-dokumenttia, parsii muutokset PostgreSQL-tietokantaan, tarjoaa datan REST-rajapinnan kautta ja mahdollistaa mobiilisovelluksessa kaksikieliset näkymät, äänestykset ja historiatilastot.

2018

Räccis SeAMK Food Royale

Räccis SeAMK Food Royale is a small Android lunch-menu app built to compare two SeAMK-area restaurants side by side. Its value is in the practical data stitching: it pulls Sodexo menus from JSON APIs, scrapes Eventti menu HTML, and presents both daily menus in one quick mobile view for students choosing where to eat.

Räccis SeAMK Food Royale on pieni Android-lounaslistasovellus, joka rakennettiin kahden SeAMK-alueen ravintolan vertailuun rinnakkain. Sen arvo on käytännöllisessä datan yhdistelyssä: sovellus hakee Sodexon ruokalistat JSON-rajapinnoista, parsii Eventin menut HTML-sivulta ja näyttää molemmat päivän lounaat yhdessä nopeassa mobiilinäkymässä opiskelijoille, jotka valitsevat ruokapaikkaa.

2017

Tsumppi Coffee Shop

Tsumppi Coffee Shop is an Android catalogue app for the SeAMK student services coffee shop, built when there was no official mobile app for browsing its products. As an early service app, it combines Google Sheets as a lightweight catalogue backend with Facebook and Instagram post feeds, giving students one place to check products and updates.

Tsumppi Coffee Shop on Android-katalogisovellus SeAMKin opiskelijapalveluiden kahvilalle, rakennettu aikana jolloin tuotteiden selaamiseen ei ollut virallista mobiilisovellusta. Varhaisena palvelusovelluksena se yhdistää Google Sheetsin kevyenä katalogitaustana Facebook- ja Instagram-julkaisuihin, jolloin opiskelijat näkevät tuotteet ja päivitykset yhdestä paikasta.

2017

SeAMK Lukkari

SeAMK Lukkari is an Android timetable app for Seinäjoki University of Applied Sciences students, built before an official mobile timetable existed. It wrapped Peppi timetable APIs into a practical student tool with weekly schedules, study baskets, group and room lookup, empty-room search, lunch menus, and partial English and Finnish support.

SeAMK Lukkari on Android-lukujärjestyssovellus Seinäjoen ammattikorkeakoulun opiskelijoille, rakennettu ennen virallisen mobiililukujärjestyksen olemassaoloa. Se paketoi Pepin lukujärjestysrajapinnat käytännölliseksi opiskelijatyökaluksi, jossa ovat viikkoaikataulut, opintokori, ryhmä- ja huonehaut, tyhjien huoneiden haku, lounaslistat sekä osittainen englannin- ja suomenkielinen tuki.

2017

SeAMK WinhaWille

SeAMK WinhaWille is an Android study-registry client for SeAMK students that scraped the campus WinhaWille portal to show GPA, credits, completed courses, and grades. As a student-built utility, it turned a web-only registry into a focused mobile view for the information students checked most often.

SeAMK WinhaWille on Android-opintorekisterisovellus SeAMK-opiskelijoille, joka parsi kampuksen WinhaWille-portaalia ja näytti keskiarvon, opintopisteet, suoritetut kurssit ja arvosanat. Opiskelijan rakentamana hyötysovelluksena se muutti vain webissä toimineen rekisterin kohdennetuksi mobiilinäkymäksi tiedoille, joita opiskelijat tarkistivat useimmin.

2016

SeAMK Ruoka

SeAMK Ruoka is an Android lunch-menu app for SeAMK students, built before there was an official mobile lunch menu experience. It focuses on one daily need: fetching Sodexo restaurant data through REST and JSON and showing weekly student restaurant menus in a simple mobile interface.

SeAMK Ruoka on Android-lounaslistasovellus SeAMK-opiskelijoille, rakennettu ennen virallista mobiilia lounaslistakokemusta. Se keskittyy yhteen päivittäiseen tarpeeseen: Sodexon ravintoladatan hakemiseen REST- ja JSON-rajapinnoista sekä opiskelijaravintoloiden viikkolistojen näyttämiseen yksinkertaisessa mobiilikäyttöliittymässä.