My personal engineering portfolio. A Greek-mythology-themed site showcasing work across AI, systems, web, and mobile. Live at minotaurg.github.io.
Built with AI in the loop, from architecture to copy to the game engine. The site is itself a work sample.
- Escape the Labyrinth, a minigame gating the homepage (details below).
- Projects and case studies, a data-driven grid (
src/data/projects.ts) with individual deep-dive pages. - Writing, an MDX blog (
/writing) with per-article routes, canonical URLs, and typography theming. - Client work carousel, live-site preview banners, and full SEO (Person JSON-LD, OG images, sitemap, robots).
I turn problems into working systems, and I use AI as a core part of how I build, debug, and ship. A selection of what's on the site:
A grounded AI shopping assistant, published as a TypeScript package. It answers shopper questions and recommends real products from the store's catalogue, never hallucinated products, prices, or policies. Multi-provider (OpenAI, Anthropic, Gemini, or Groq, auto-detected from the key with automatic fallback), framework-free, config over code. Running live in a real store.
- SD18 Store (built with AI): a full sports e-commerce platform taken from zero to a working storefront with AI in the loop, Medusa v2 and Next.js, Razorpay and COD payments, Shiprocket fulfillment, deployed on AWS. Live.
- JobAgent: a polyglot agentic system, a Go rules engine paired with a Python AI orchestrator for scoring and matching jobs. Repo.
- Mellow Nova (in progress): a local-first personal finance app with an AI chat over your own financial data, on-device. Repo.
- Recon Dash: an offline motorcycle navigation app projecting turn-by-turn onto a Royal Enfield cluster, Kotlin and C++/NDK. Repo.
- pmtiles-kotlin: a dependency-free pure-Kotlin reader for the PMTiles v3 map format. Repo.
- Medusa plugins (OSS): published payment and fulfillment providers for Indian e-commerce, including a Razorpay provider. Repo.
Full list and case studies at minotaurg.github.io/projects.
The homepage opens with a small game: you're the hero at the centre of the labyrinth and must escape outward through five concentric rings while the Minotaur hunts you.
- Mechanic. Each ring rotates at its own speed and direction (randomized per run) with a shrinking number of gaps toward the outside. Move around the ring and jump outward through a gate when it lines up. The Minotaur pathfinds through the same gaps to chase you.
- Rendering. Pure HTML5 Canvas 2D with a
requestAnimationFrameloop, no game engine. Player (Theseus plus a trailing Ariadne's thread), the Minotaur, glowing serrated gates, and a victory burst are all drawn procedurally. - Tested geometry. The gap math (angle normalization, gap positions, gate hit-testing, minotaur targeting) lives in pure functions in
src/game/labyrinth.tswith a Vitest suite insrc/game/labyrinth.test.ts, so the drawn gate and the collision gate provably agree. - Input. Arrow keys or WASD on desktop; on-screen arrow and escape buttons on touch devices (detected via pointer capability, so tablets get them too).
- Never a wall. A persistent "Skip to the work" button (and a mercy screen after five falls) means anyone can reach the site instantly. The result is remembered for the session so it only gates once.
Next.js 16 (App Router, static export), React 19, TypeScript, Tailwind v4, Framer Motion, MDX, Vitest, Canvas 2D, deployed to GitHub Pages via Actions.
pnpm install
pnpm dev # localhost:3000
pnpm test # Vitest (game geometry)
pnpm build # static export to ./outsrc/
├── app/ App Router pages (home, projects, writing, about, contact)
│ └── writing/ MDX articles
├── components/ Nav, game, cards, carousel, motion helpers
├── data/ projects + articles (single source of truth)
└── game/ labyrinth game logic + tests
Aditya Shubham. minotaurg.github.io · github.com/MinotaurG