# shreyarajaram/chompcourse architecture

> Architecture diagram of the GitHub repository shreyarajaram/chompcourse, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/shreyarajaram/chompcourse
- Repository: https://github.com/shreyarajaram/chompcourse

## Overview

ChompCourse is a mobile course-planning app: users sign in, choose a major, mark completed courses, provide graduation and term preferences, and request a proposed schedule for results. The client’s major-selection screen calls a generation endpoint, while schedule generation is delegated to AIwrapper.js. Backend implementation details and the results-screen behavior were not sampled, so those components are shown only where the tree and sampled client code support them.

Main entry points: [`App.js`](https://github.com/shreyarajaram/chompcourse/blob/main/App.js) (App navigation), [`cover/screens/MajorSelectionScreen.js`](https://github.com/shreyarajaram/chompcourse/blob/main/cover/screens/MajorSelectionScreen.js) (Major selection), [`login-signup/LoginScreen.js`](https://github.com/shreyarajaram/chompcourse/blob/main/login-signup/LoginScreen.js) (Login), [`login-signup/SignupScreen.js`](https://github.com/shreyarajaram/chompcourse/blob/main/login-signup/SignupScreen.js) (Sign up)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Mobile app"]
  node_app["App navigation<br/>[App.js]"]
  node_cover["Welcome screen<br/>[CoverScreen.js]"]
end

subgraph group_identity["Account access"]
  node_login["Login<br/>[LoginScreen.js]"]
  node_signup["Sign up<br/>[SignupScreen.js]"]
  node_auth_helpers["Auth helpers<br/>[auth.js]"]
  node_firebase_config["Firebase setup<br/>[firebase.js]"]
end

subgraph group_planning["Course planning"]
  node_major["Major selection"]
  node_course_select["Course selection<br/>[courseSelection.js]"]
  node_course_data["Course catalog"]
  node_summary["Schedule preferences"]
  node_ai_wrapper["Schedule request<br/>[AIwrapper.js]"]
  node_results["Schedule results<br/>[ResultsScreen.js]"]
end

subgraph group_services["External services"]
  node_firebase_auth{{"Firebase Auth"}}
  node_recommendation_api{{"Recommendation endpoint"}}
  node_schedule_service{{"Schedule generation service"}}
end

node_student(("Student"))

node_student -->|"opens"| node_app
node_app -->|"starts at"| node_cover
node_app -->|"routes to"| node_login
node_app -->|"routes to"| node_signup
node_app -->|"routes to"| node_major
node_app -->|"routes to"| node_course_select
node_app -->|"routes to"| node_summary
node_app -->|"routes to"| node_results
node_cover -->|"opens"| node_login
node_cover -->|"opens"| node_signup
node_login -->|"signs in"| node_auth_helpers
node_signup -->|"creates account"| node_auth_helpers
node_auth_helpers -->|"uses auth"| node_firebase_config
node_firebase_config -->|"initializes"| node_firebase_auth
node_auth_helpers -->|"authenticates"| node_firebase_auth
node_login -->|"continues to"| node_major
node_signup -->|"continues to"| node_major
node_major -->|"posts major"| node_recommendation_api
node_major -->|"passes response"| node_course_select
node_course_select -->|"reads catalog"| node_course_data
node_course_select -->|"passes selections"| node_summary
node_summary -->|"requests schedule"| node_ai_wrapper
node_ai_wrapper -.->|"generates schedule"| node_schedule_service
node_summary -->|"passes schedule"| node_results

click node_app "https://github.com/shreyarajaram/chompcourse/blob/main/App.js"
click node_cover "https://github.com/shreyarajaram/chompcourse/blob/main/cover/CoverScreen.js"
click node_login "https://github.com/shreyarajaram/chompcourse/blob/main/login-signup/LoginScreen.js"
click node_signup "https://github.com/shreyarajaram/chompcourse/blob/main/login-signup/SignupScreen.js"
click node_auth_helpers "https://github.com/shreyarajaram/chompcourse/blob/main/firebase/auth.js"
click node_firebase_config "https://github.com/shreyarajaram/chompcourse/blob/main/firebase/firebase.js"
click node_major "https://github.com/shreyarajaram/chompcourse/blob/main/cover/screens/MajorSelectionScreen.js"
click node_course_select "https://github.com/shreyarajaram/chompcourse/blob/main/cover/screens/courseSelection.js"
click node_course_data "https://github.com/shreyarajaram/chompcourse/blob/main/assets/courses_by_semester.json"
click node_summary "https://github.com/shreyarajaram/chompcourse/blob/main/cover/screens/ScheduleSummaryScreen.js"
click node_ai_wrapper "https://github.com/shreyarajaram/chompcourse/blob/main/AIwrapper.js"
click node_results "https://github.com/shreyarajaram/chompcourse/blob/main/cover/screens/ResultsScreen.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_cover toneBlue
class node_login,node_signup,node_auth_helpers,node_firebase_config toneAmber
class node_major,node_course_select,node_course_data,node_summary,node_ai_wrapper,node_results toneMint
class node_firebase_auth,node_recommendation_api,node_schedule_service toneRose
class node_student toneIndigo
```

## Components

### Mobile app

- [App navigation](https://github.com/shreyarajaram/chompcourse/blob/main/App.js): `App.js`
- [Welcome screen](https://github.com/shreyarajaram/chompcourse/blob/main/cover/CoverScreen.js): `cover/CoverScreen.js`

### Account access

- [Login](https://github.com/shreyarajaram/chompcourse/blob/main/login-signup/LoginScreen.js): `login-signup/LoginScreen.js`
- [Sign up](https://github.com/shreyarajaram/chompcourse/blob/main/login-signup/SignupScreen.js): `login-signup/SignupScreen.js`
- [Auth helpers](https://github.com/shreyarajaram/chompcourse/blob/main/firebase/auth.js): `firebase/auth.js`
- [Firebase setup](https://github.com/shreyarajaram/chompcourse/blob/main/firebase/firebase.js): `firebase/firebase.js`

### Course planning

- [Major selection](https://github.com/shreyarajaram/chompcourse/blob/main/cover/screens/MajorSelectionScreen.js): `cover/screens/MajorSelectionScreen.js`
- [Course selection](https://github.com/shreyarajaram/chompcourse/blob/main/cover/screens/courseSelection.js): `cover/screens/courseSelection.js`
- [Course catalog](https://github.com/shreyarajaram/chompcourse/blob/main/assets/courses_by_semester.json): `assets/courses_by_semester.json`
- [Schedule preferences](https://github.com/shreyarajaram/chompcourse/blob/main/cover/screens/ScheduleSummaryScreen.js): `cover/screens/ScheduleSummaryScreen.js`
- [Schedule request](https://github.com/shreyarajaram/chompcourse/blob/main/AIwrapper.js): `AIwrapper.js`
- [Schedule results](https://github.com/shreyarajaram/chompcourse/blob/main/cover/screens/ResultsScreen.js): `cover/screens/ResultsScreen.js`

### External services

- **Firebase Auth**
- **Recommendation endpoint**
- **Schedule generation service**

### Other components

- **Student**

## Connections

- Student → App navigation: opens
- App navigation → Welcome screen: starts at
- App navigation → Login: routes to
- App navigation → Sign up: routes to
- App navigation → Major selection: routes to
- App navigation → Course selection: routes to
- App navigation → Schedule preferences: routes to
- App navigation → Schedule results: routes to
- Welcome screen → Login: opens
- Welcome screen → Sign up: opens
- Login → Auth helpers: signs in
- Sign up → Auth helpers: creates account
- Auth helpers → Firebase setup: uses auth
- Firebase setup → Firebase Auth: initializes
- Auth helpers → Firebase Auth: authenticates
- Login → Major selection: continues to
- Sign up → Major selection: continues to
- Major selection → Recommendation endpoint: posts major
- Major selection → Course selection: passes response
- Course selection → Course catalog: reads catalog
- Course selection → Schedule preferences: passes selections
- Schedule preferences → Schedule request: requests schedule
- Schedule request → Schedule generation service: generates schedule
- Schedule preferences → Schedule results: passes schedule
