Projects

Things I have shipped and kept running, not tutorials I followed.

VizTube

Video platform backend with an AI-powered RAG engine — Whisper transcription, local embeddings and pgvector semantic search, running on a deliberately tiny 1 GB EC2 box.

  • Engineered a RAG pipeline where a decoupled FastAPI microservice streams audio to Groq whisper-large-v3, embeds chunks locally with all-MiniLM-L6-v2, and answers through pgvector search with cited sources.
  • Runs live on a 1 GB-RAM EC2 t3.micro by design — pgvector inside Postgres rather than a separate vector database, cloud Whisper instead of local inference.
  • Three Docker containers shipped via GitHub Actions CI/CD behind Nginx SSL termination and Cloudflare, cutting deploys from 15 minutes to 90 seconds at under $10/month.
  • TypeScript
  • Node.js
  • Express
  • FastAPI
  • PostgreSQL
  • pgvector
  • Prisma
  • Docker
  • AWS
  • Groq

EchoInbox

Anonymous messaging platform with AI-assisted replies — structured Groq output, hardened auth, and a cascade-safe Postgres schema.

  • Built a custom NextAuth credentials flow — 6-digit expiring email verification via Resend, bcrypt-hashed passwords, and Zod validation on every input.
  • Designed a cascade-safe Prisma schema with transactional account deletion, relational integrity and indexed retrieval, using UUIDv7 keys to keep index lookups sequential.
  • Integrated Groq Llama 3.3 through the Vercel AI SDK with Zod-enforced structured suggestions, an 8-second timeout guard, and parallel dashboard loads.
  • Next.js
  • TypeScript
  • PostgreSQL
  • Prisma
  • NeonDB
  • NextAuth
  • Vercel AI SDK
  • Groq
  • Resend
  • Zod

Job Application Tracker

Full-stack Kanban platform for job hunting — React Server Components, optimistic drag-and-drop, and O(1) float ordering.

  • Built on Next.js App Router with React Server Components to eliminate client-side loading waterfalls, with end-to-end type safety between Server Actions and the database layer.
  • Implemented a dnd-kit Kanban board with optimistic UI updates and an O(1) float ordering scheme, so reordering a card writes one row instead of renumbering the column.
  • Wired Better Auth database hooks to auto-provision a 5-stage pipeline on registration, and shipped a multi-stage Docker build on Next.js standalone output to AWS EC2 behind Nginx with Certbot SSL renewal.
  • Next.js 16
  • React 19
  • TypeScript
  • PostgreSQL
  • Prisma 7
  • dnd-kit
  • Better Auth
  • Docker
  • AWS
  • Nginx

AppraiseHub

Employee appraisal platform with multi-role RBAC workflows across a layered Spring Boot backend and a Next.js dashboard.

  • Layered Spring Boot service on MySQL with DTO-isolated API contracts and global exception handling.
  • Spring Security 6 + JWT role-based access separating HR, manager and employee actors at the route level.
  • Java
  • Spring Boot
  • Spring Security 6
  • MySQL
  • Next.js
  • React
  • JWT
  • Docker

Trend Engine

Real-time movie discovery app whose trending list is generated from live user search patterns rather than a static feed.

  • Built a trending algorithm that captures and aggregates user search queries in an Appwrite database to rank titles in real time.
  • Engineered debounced search to cut redundant API calls, on a mobile-first responsive UI deployed to Vercel via automated builds.
  • React 18
  • Vite
  • Tailwind CSS v4
  • Appwrite
  • TMDB API

BankEase

C++ banking simulation engine that replaced text-file persistence with binary serialisation for a 300% throughput gain.

  • Rewrote the storage layer from parsed text I/O to raw binary serialisation, achieving 300% faster read/write operations on account transactions.
  • Structured the engine around SOLID OOP boundaries so accounts, transactions and persistence stay independently testable.
  • C++
  • OOP
  • Binary I/O
  • Systems Programming

Modern Web Stack Boilerplate

A 2026 production web-stack guide covering three project shapes with database variants, verified against official docs.

  • Documents App Router with Turbopack defaults and the prisma.config.ts-era Prisma 7 setup, with every version pinned against official documentation.
  • Next.js 16.2
  • Express 5
  • React 19.2
  • Prisma 7
  • TypeScript
  • MongoDB

Terminal Portfolio

This site — a browser CLI over a fully pre-rendered static document, so it reads well to both humans and crawlers.

  • Every command output is pre-rendered to semantic HTML at build time, so the terminal is progressive enhancement rather than the only way in.
  • Astro
  • TypeScript
  • Vanilla JS
  • PWA
  • SEO

Open-source contributions

ed-donner/llm_engineering

7k+ stars · 2 PRs merged · 1,400+ lines

  • #3631 Built an LLM cost meter that patches the OpenAI client in place to track tokens and spend across 8 providers.
  • #3492 Shipped a local RAG course navigator with a Gradio UI — offline sentence-transformers embeddings and OpenRouter Q&A.