Practice 3D space calculations and algorithms for generating and solving mazes.
&
&
dat.GUI
frontend/: Vite + TypeScript client app, toolbar/popup UI, 3D maze rendering, generation, solving.backend/: Supabase local backend setup, migrations, and backend-facing docs.docs/: onboarding, architecture, and contributor docs.package.jsonat repo root: workspace-style scripts that delegate tofrontend/andbackend/.
npm --prefix frontend install
npm install
npm run devOpen the Vite URL shown in the terminal.
npm run dev does two things:
- starts Supabase locally from
backend/ - starts the frontend dev server from
frontend/
- Node.js 20+
- Docker running locally
- Supabase CLI available on your machine or via local npm package
npm --prefix frontend install
npm install
npm run supabase:init
npm run supabase:start
npm run supabase:resetCreate the frontend environment file:
cp frontend/.env.example frontend/.env
npm run supabase:statusThen copy the local Supabase URL and anon key into frontend/.env.
npm run dev: start Supabase local and the frontend dev servernpm run dev:frontend: start only the frontend dev servernpm run dev:docker: start the frontend dev server through Docker Composenpm run supabase:init: initialize Supabase config inbackend/npm run supabase:start: start the local Supabase stacknpm run supabase:stop: stop the local Supabase stacknpm run supabase:status: print local Supabase connection infonpm run supabase:reset: rebuild the local database from migrations/seednpm run build: type-check and build the frontendnpm run preview: preview the built frontend fromfrontend/distnpm run deploy: publish frontenddistviagh-pagesnpm run lint: run filename and ESLint checksnpm run lint:file-names: run filename convention checksnpm run lint:eslint: run ESLint onlynpm run test: run lint and buildnpm run format: format the frontend project with Prettiernpm run check:multilayer: run the multi-layer solvability check script
MazeEngine targets modern browsers with native PointerEvent support.
- Supported baseline: current stable Chrome, Edge, Firefox, and Safari.
- Mobile baseline: Safari on iOS/iPadOS 13.4+ and Chrome on Android (current stable).
- Legacy browsers without
PointerEventare out of scope. - Toolbar/popup interactions are implemented with pointer events only (no legacy
touchstart+mousedownfallback).
- Contributing Guide
- Architecture Overview
- How to Add a Generator
- Common Maze Rules
- Onboarding Guide
- Backend Overview
- Supabase Backend Setup
- Maze generation algorithms (
frontend/src/generator) - Maze solving algorithms (
frontend/src/solve) - Sidebar popup workflows (
frontend/src/sidebar/popup) - 3D rendering and app orchestration (
frontend/src/app,frontend/src/maze) - Account/auth and maze persistence (
frontend/src/sidebar/popup/account,frontend/src/lib)
