Hi, I'm Toni.
I like building things that work.

Final-year Software Engineering student at Savonia University of Applied Sciences, with hands-on coursework in full-stack web, Java, .NET, cloud, and databases. My main focus is software development, but I'm comfortable across IT and quick to pick up new tools. I also have a strong interest in AI and use modern AI tooling to build software more efficiently.

See my work on GitHub

Projects

A lightweight, dependency-free desktop client for yt-dlp, built with Python's standard tkinter library.

  • Python
  • Tkinter

An AI-integrated Discord bot for my personal server — Gemini-powered chat and a persistent reminder system.

  • Python
  • Discord
  • Gemini
  • PostgreSQL

Web dashboard for a group IoT project — live telemetry from Raspberry Pi motion sensors through an Azure pipeline. I built the entire dashboard.

  • React
  • TypeScript
  • Tailwind
  • Azure

ytdlp-tk

ytdlp-tk main window: URL field, metadata card with title and duration, resolution dropdown, and download progress bar

A desktop client for yt-dlp built entirely with Python's standard tkinter library — no GUI framework dependencies. Extractions and downloads run on background threads, so the interface stays responsive while work happens.

It fetches title, channel, and duration automatically, recalculates expected file sizes when you switch resolutions, and maps the available video tracks into a quality dropdown. Status is shown as flat, color-coded inline messages instead of popup dialogs, and downloads have a live progress bar with speed and ETA plus a cancel button.

discord-helper

A lightweight Discord bot built for my own server. It hooks the Gemini API into channel chat: !c starts a conversation the bot remembers per channel, !clear wipes that history, and an optional system prompt file gives it a custom persona.

It also has a reminder system — !r 45m or a full date and time — that pings you in-channel when due. Reminders are stored in PostgreSQL, so nothing is lost if the bot restarts. The bot runs 24/7 on an Ubuntu VM in Azure alongside its database.

IoT Dashboard

Device overview page listing three Raspberry Pi sensors with online status, location, and last-seen time
Device detail view with stat cards, time range filters, and accelerometer and gyroscope charts

A school group project: Raspberry Pi devices with MPU-6050 motion sensors read acceleration and rotation over I²C and stream telemetry through Azure IoT Hub. Azure Functions (Node.js) provide the REST API and alert detection, with measurements stored in Cosmos DB and raw data archived to Blob Storage as NDJSON.

My part was the entire web dashboard: a device overview with live online status, and a per-device view with summary stat cards, X/Y/Z accelerometer and gyroscope charts over selectable time ranges (raw readings or hourly averages), alert history with configurable thresholds, and CSV export. Built with React, Vite, and TypeScript using Tailwind CSS and shadcn/ui, deployed on Azure Static Web Apps.