Development
Local commands, workspace conventions, and verification notes.
Development
Run commands from the repo root unless noted.
Install
bun installCommon Commands
bun run web:dev
bun run web:build
bun run web:typecheckbun run docs:dev
bun run docs:build
bun run docs:typecheckbun run shared:typecheck
bun run typecheckWorkspace Layout
apps/
web/ A-Grade Services website, Next.js App Router, Tailwind v4
docs/ Fumadocs documentation app
packages/
shared/ Framework-neutral shared TypeScriptKeep app-specific dependencies in the app that imports them:
bun add --cwd apps/web package-name
bun add --cwd apps/docs package-name
bun add --cwd packages/shared package-nameKeep shared types and framework-neutral helpers in packages/shared.
Local Browser Notes
apps/web runs Next dev on port 3000 with -H 0.0.0.0. The docs app runs on port 3001. For browser testing, prefer:
http://localhost:3000When headless Chrome was pointed at 127.0.0.1, Next dev logged a blocked cross-origin dev resource for /_next/webpack-hmr. Hydrated interaction checks should use localhost unless allowedDevOrigins is intentionally configured.
Documentation Assets
UI review screenshots live in:
apps/docs/public/ui-review/Reference them from MDX as:
Before Editing UI
Check these files first:
apps/web/app/page.tsxfor homepage section order and sticky hero mechanics.apps/web/components/layout/NavBar.tsxfor fixed nav and overlay menu.apps/web/components/layout/MiddleNav.tsxfor scroll-linked nav collapse.apps/web/components/home/ProjectsShowcase.tsxfor the homepage projects filmstrip.apps/web/components/layout/Footer.tsxfor the full-height footer.
Preserve the current bold, minimal, cinematic direction unless the design task explicitly changes it.
Launch Readiness Checklist
- Mobile nav does not overflow.
- Overlay menu works with keyboard and touch.
- Contact form submits to a real destination.
- Form controls have labels, names, validation, and states.
- Placeholder metrics, phone numbers, team entries, and social links are replaced or removed.
- Secondary page imagery is curated and relevant.
bun run typecheckpasses.bun run web:buildandbun run docs:buildpass.