This is a UI-only prototype. Copy it and hook your own data/API to build the real app.
| Route | Component | Purpose |
|---|---|---|
/ |
Onboarding |
Step 1: pick colleges. Step 2: GPA, test score, round, etc. Submit → goes to /dashboard. |
/dashboard |
Dashboard |
Per-school view: chance %, pillars, academic/personal/hooks charts, sensitivity, “Add data” demo. |
File: components/onboarding.tsx
Spot: handleSubmit (around “See My Chances” button).
Right now it only does router.push("/dashboard").
Hook: Call your API with the form state (colleges, GPA, testScore, applicationRound, etc.), then redirect to /dashboard or your results URL. Form state lives in the same component (colleges, gpa, testScore, appRound, etc.).
File: lib/dashboard-mock-data.ts
Export: COLLEGE_DATA (array of CollegeData).
The dashboard reads this array.
Hook: Replace with your API:
- Fetch “my colleges + chance data” (e.g. per selected school).
- Map your API response to the
CollegeDatashape (see types in that file). - Either:
- Swap the import in
components/dashboard.tsxfrom@/lib/dashboard-mock-datato a new module that fetches and returnsCollegeData[], or - Use React Query / SWR / context in the dashboard and pass the same shape.
- Swap the import in
Types: All dashboard data types live in lib/dashboard-mock-data.ts: CollegeData, InputLevel, Classification, Confidence, PillarScore, FactorScore, SensitivityFactor. Use them for your API types.
The “Add details” button is a UI demo: it toggles fullData so locked sections (personal/hooks charts, sensitivity) appear.
Hook: Drive that from real state (e.g. “user has completed activities”) instead of a local boolean.
pnpm install
pnpm devOpen http://localhost:3000. Use onboarding → “See My Chances” → dashboard.
Direct link to dashboard: http://localhost:3000/dashboard.
- Next.js (App Router), React, TypeScript
- Tailwind + shadcn/ui (
components/ui/) - Charts: Bklit UI (area, bar, radar) in
components/charts/ - No backend; no auth; no persistence.