Projects 22
Embedded & low-level4
Register-level firmware with no HAL: custom linker script, vector table and button interrupts via EXTI and NVIC.
C · ARM Cortex-M4 · STM32F4Access-control prototype: a four-state machine (normal, locked, unlocked, alarm), a two-button password, debounced inputs and a light sensor that sets off the alarm.
C++ · Arduino Uno (AVR) · PlatformIOPomodoro timer on a 16x2 LCD: a five-state machine, three debounced buttons, selectable work and break profiles, a progress bar and buzzer alerts.
C++ · Arduino Uno (AVR) · PlatformIO · I2C LCDUniversity coursework: a matchsticks game against the computer in assembly (functions, stack, random moves, pixel drawing), plus digital-logic circuits built in Logisim.
ARM-style assembly · Logisim EvolutionBackend4
Food delivery API for customers, restaurants and drivers: shopping carts, orders with a nine-step status flow, bank payments and observer-pattern notifications.
C# · ASP.NET Core Web API · EF Core · PostgreSQLTour booking site with a REST API, JWT cookie login, roles, geospatial tour search, reviews, rate limiting and Stripe checkout. Built while following a Node.js course.
Node.js · Express · MongoDB · Pug · StripeTeam backend for a blood donation system. I built the Appointments module: validated CRUD with soft delete, and a transaction that reserves blood inventory and marks the request fulfilled.
NestJS · TypeScript · Prisma · PostgreSQL · DockerDatabase coursework in a team of four: archers enter scores by hand or from a target photo and recorders verify them. I built the photo-scoring API and the Docker Compose setup.
React · Express · FastAPI · MySQL · Docker ComposeAI & Machine Learning3
Photo-scoring API for archery: a Roboflow-hosted model finds the arrows in a target photo and the service returns the scores for each end, then stages them in MySQL.
Python · FastAPI · Roboflow · MySQL · DockerInstallable web app that records Burmese voice notes, uses Gemini to transcribe, summarise, categorise and tag them, and saves each one to Notion.
Next.js · TypeScript · Gemini · Notion API · PWAUniversity AI assignment in a team of four: BFS, DFS, GBFS, A*, Dijkstra and IDA* on coordinate maps. I built the Pygame visualizer that runs them side by side.
Python · Pygame · pytestFrontend & Mobile8
Recipe app from a JavaScript course: search with pagination, adjustable servings, bookmarks saved in the browser and a form to add your own recipes, in an MVC structure.
JavaScript · MVC · Parcel · Sass · Forkify APIWorkout map app from a JavaScript course: log runs and rides by clicking the map, with edit, delete, sorting and saving in localStorage.
JavaScript · Leaflet · Geolocation API · localStorageAndroid app that scores a 10-element gymnastics routine with three point zones, a 20-point cap and a deduction rule, with unit tests.
Kotlin · Android · Material · JUnitAndroid app for personal challenges and moments: complete a challenge to save a memory with a photo and location, browse a timeline and see your stats.
Kotlin · Android · SQLite · CoroutinesTower defence game for a university unit: an archer tower with 7 upgrade levels, five enemy types, 20 waves read from text files and a lightning spell.
Ruby · GosuBanking dashboard from a JavaScript course: login, transfers, loans, closing an account, sorting, currency and date formatting and a logout timer.
JavaScript · Array methods · IntlLanding page from a JavaScript course: sticky nav, lazy-loaded images, tabs, a modal, reveal on scroll and smooth scrolling.
HTML · CSS · JavaScript · IntersectionObserverLanding page from a JavaScript course: Grid and Flexbox layouts, media queries at five breakpoints, a mobile menu, a sticky header and smooth scrolling.
HTML · CSS Grid · Flexbox · JavaScriptTools3
Open-source Obsidian plugin I founded and maintain, with over 1,000 downloads. Scan handwritten notes from a photo: perspective crop, background removal and filters, saved to your vault.
TypeScript · Obsidian API · Canvas · esbuild · VitestNeovim plugin that sends editor context (selection, diagnostics, buffers, git diff) to the Antigravity command-line agent in a terminal split.
Lua · Neovim API · TerminalCommand-line tool that renders Markdown into a styled HTML preview in the browser, with GitHub-style Markdown, syntax highlighting, math, Mermaid diagrams and a table of contents.
TypeScript · Node.js · marked · KaTeX · Mermaid