Selected Projects
Twenty-four projects spanning production enterprise systems, AI-powered tools and RAG applications, MCP servers, data pipelines, PWAs, and published Chrome extensions. Live links where a project is deployed.
Twenty-four projects spanning production enterprise systems, AI-powered tools and RAG applications, MCP servers, data pipelines, PWAs, and published Chrome extensions. Live links where a project is deployed.
Vite 6 · Three.js · GSAP + Lenis
Vite 6 · Three.js · GSAP + Lenis
Python · Django · PostgreSQL · QODBC
Internal enterprise system — no public link
Ruby on Rails · MySQL · Render
Private system — no public link
FastAPI · Next.js 16 · React 19 · TypeScript
Next.js 16 · TypeScript · Prisma 7 + PostgreSQL · Playwright · Cheerio
Built, pending deployment — v2 architecture (Prisma/PostgreSQL, scheduled sync) rebuilt on this same concept
Next.js 16 · TypeScript · Cheerio · lightweight-charts
Built, scrapped for now — revisit post-September 2026
TypeScript · Node.js · Express · Puppeteer · FFmpeg
Built, pending deployment
Next.js 16 · React 19 · TypeScript · Recharts
FastAPI · yt-dlp · curl-cffi · React 19 + Vite
Built, pending deployment
Python 3 · PySide6 (Qt6) · keyring · pytest
Built — cross-platform release candidate
Chrome Extension · Manifest V3 · declarativeNetRequest
Eleventy (11ty) · Vanilla JS · pdf-lib · fflate
Chrome Extension · Manifest V3 · Playwright
Eleventy (11ty) · GSAP/ScrollTrigger · Three.js
Next.js 16 (App Router) · Supabase (Postgres/Auth/RLS) · Vitest
/explore readable without an account) — authorization enforced entirely through Postgres Row Level Security, never app-layer checks
Python · MCP Python SDK · httpx · Pydantic
Cloudflare Workers · Hono · D1 · Cron Triggers
Qdrant · LangChain · RAGAS · MCP · LangGraph · CrewAI · Gradio
Vite · React 19 · TypeScript · Supabase (Postgres + RLS) · vite-plugin-pwa
Eleventy · GSAP & ScrollTrigger · Web3Forms
React · Vite · Supabase (Postgres + pgvector, Auth, Storage) · Deno Edge Functions · Gemini · Tailwind v4
Next.js 15 (static export) · React 19 · Tailwind v4 · shadcn/ui + Base UI · TypeScript
@theme inline gotcha where a CSS-custom-property override compiles to a dead value, and a Base UI button-versus-anchor semantics warning, mid-review
Laravel 12 · PHP 8.2 · Blade · Tailwind v4 · Alpine.js · MySQL · Pest
.htaccess to defeat a host-injected weak policy, an explicit per-agent AI-crawler allow/deny list, route rate-limiting, an inactive-record 404, noindex on the authenticated shell, and a generated Open Graph image
Laravel 11 · PHP 8.2 · Blade · Tailwind · Alpine.js · Livewire 3 · SQLite · Pest
QuickAdd and BudgetManager accepted a client-supplied category ID validated only with exists:categories,id, no ownership check — a forged ID leaked another user's private category name onto the attacker's dashboard via Dashboard::spendingByCategory(); closed it with policy authorization plus mass-assignment hardening (dropped user_id from $fillable, switched to relationship-based creates)
Laravel 12 · PHP 8.2 · Blade · Tailwind · Alpine.js · Livewire 3 · SQLite · Pest
game:sweep, which runs seeded nights across a level×shrine-level grid and surfaces findings like "no wall" / "pushover" / "spike", and game:progress, a Monte-Carlo progression simulator running N seeded player trajectories under different spend policies to report median/p10/p90 nights-to-bossLivewire::test(...)->set('state.rewards.gold', 999999999)->call('claim'), which actually credited the forged amount; fixed by recomputing rewards inside a DB transaction from server-only session state