web-app/contains the Next.js 16 frontend. Route groups inweb-app/app/are split by feature:(profile),(chat),(housing), and(match). Keep feature-local UI in_components/, server actions in_actions.ts, shared hooks inhooks/, shared state incontexts/, and reusable utilities inlib/.web-app/components/ui/holds shared Shadcn UI primitives. Static assets live inweb-app/public/, and mock data lives inweb-app/mock/.scraper/contains the housing ingestion pipeline:osu-web-scraper.py,upload-to-supabase.py,supabase_setup.sql, andaddresses.txt.
cd web-app && pnpm installinstalls frontend dependencies. Preferpnpmbecausepnpm-lock.yamlis committed.cd web-app && pnpm devstarts the local app athttp://localhost:3000.cd web-app && pnpm lintruns ESLint with Next.js core-web-vitals and TypeScript rules.cd web-app && pnpm buildchecks the production build before opening a PR.cd scraper && python -m venv .venv && source .venv/bin/activate && pip install -r requirements.txtsets up the scraper environment.cd scraper && python osu-web-scraper.pycollects listing data;python upload-to-supabase.pyuploads it.
- Follow
web-app/PROJECT_CONVENTIONS.md: use kebab-case filenames, function declarations for React components, and named exports except for Next.jspage.tsxandlayout.tsx. - Prefer server components unless interactivity is required. Keep auth-related server logic in
@/lib/auth. - Use Shadcn components from
web-app/components/ui/before introducing custom controls. Match the formatting of the surrounding file and runpnpm lintbefore pushing.
- No Jest, Vitest, or Pytest suite is configured yet. Treat
pnpm lintandpnpm buildas the minimum validation steps, then manually smoke-test the affected routes or scraper flow. - If you add automated tests, colocate frontend tests as
*.test.ts(x)near the feature or add a dedicatedtests/directory for Python utilities.
- Recent commits use short sentence-case summaries such as
Updated profile pageandFixed home page view issue. Keep commit subjects concise, action-oriented, and feature-specific. - PRs should include a brief summary, linked issue or task, screenshots for UI changes, and notes for any Supabase, env, or scraper-output changes.
- Review
CODEOWNERSbefore requesting review; ownership is already mapped by feature directory.
- Do not commit
.env*, scraper CSV/JSON outputs, or.next/artifacts. Keep Supabase credentials local inweb-app/.env.local.