Skip to content

zaccode69/ca-transfer-pro

Repository files navigation

CA Transfer Pro

A Next.js 14 (App Router) + TypeScript + Tailwind app that helps California Community College students plan transfers to UC and CSU campuses — modeled after Plan My Transfer / ASSIST.org.

Quick start

npm install
npm run dev
# open http://localhost:3000

What's implemented (MVP)

  • Data layer (lib/data/*.json) — institutions (10 CCC + 9 UC + 10 CSU sample), 200 seeded courses, 76 majors with articulations. Drop-in replaceable with full ASSIST data following the same schema (types/index.ts).
  • State — Zustand store (store/usePlan.ts) persists activeColleges, completed, targetMajors to localStorage.
  • Logic engine (lib/logic.ts)
    • evaluateMajor() → completion %, missing requirements with CCC course suggestions.
    • computeEligibility() → UC/CSU transferable units, separate UC/CSU GPAs, UC 7-course pattern progress, IGETC + CSU GE Breadth area flags.
    • overlapAcrossMajors() → highlights shared courses across selected target majors (efficiency algorithm).
  • UI (app/page.tsx)
    • Sidebar: multi-college academic history, search-to-add course autocomplete, eligibility card with progress bars, major picker (filterable).
    • Main: ranked University Cards (% complete, expandable completed/missing reqs with suggested CCC course), side-by-side comparison grid, overlap panel.
    • Tailwind dashboard styling, mobile-first responsive grid.
  • API routes (app/api/*) — JSON endpoints ready to swap for a real DB / ASSIST proxy.

Database / production schema (PostgreSQL)

institutions(id PK, name, system ENUM('CCC','UC','CSU'), abbreviation)
courses(id PK, college_id FK, department, number, title, units,
        transferable_uc BOOL, transferable_csu BOOL, igetc_areas TEXT[], csu_ge_areas TEXT[])
majors(id PK, university_id FK, name)
requirements(id PK, major_id FK, label, units)
articulations(id PK, requirement_id FK, course_id FK)  -- "satisfied by"
ge_patterns(id PK, kind ENUM('IGETC','CSU_GE','CAL_GETC'), area, rule_json)
users(id PK, email, ...)
user_plans(user_id FK, college_ids[], target_major_ids[], completed JSONB)

The TypeScript types in types/index.ts map 1:1 to these tables.

Suggested next steps to scale to full ASSIST coverage

  1. Ingest — scrape/sync ASSIST agreements per (CCC, university, major) tuple into articulations. The seed loader at the bottom of this README shows the shape.
  2. Auth — add Clerk or Supabase Auth; persist user_plans server-side.
  3. Cal-GETC — implement new unified pattern in lib/logic.ts (replace IGETC + CSU GE Breadth where applicable for Fall 2025+).
  4. TAG / TAP — flag UC Transfer Admission Guarantee programs per major.

File tour

  • app/page.tsx — dashboard layout
  • components/CourseSearch.tsx — multi-college course autocomplete
  • components/UniversityCard.tsx — % complete + missing-requirement suggestions
  • components/OverlapPanel.tsx — efficiency algorithm output
  • components/EligibilityCard.tsx — units, GPAs, 7-course pattern
  • lib/logic.ts — pure functions, unit-testable
  • store/usePlan.ts — Zustand + persist

About

CCC -> UC/CSU transfer planner (Next.js + TS + Tailwind)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors