# rmanales10/ready_to_jump architecture

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

- Interactive diagram: https://gitdiagram.com/rmanales10/ready_to_jump
- Repository: https://github.com/rmanales10/ready_to_jump

## Overview

Ready To Jump Admin is a web console for administering users, course/interview prompts, and mobile-app bug reports. Admins authenticate before reaching protected pages, then review users, edit course content and interviewer personas, or update and delete bug reports; status changes can create user notifications. Sampled code supports the authentication, data-access, and upload connections shown here. The home/login page and some page implementations were not sampled, so their internal wiring is not inferred.

Main entry points: [`src/middleware.ts`](https://github.com/rmanales10/ready_to_jump/blob/main/src/middleware.ts) (Route Guard), [`src/lib/firebase.ts`](https://github.com/rmanales10/ready_to_jump/blob/main/src/lib/firebase.ts) (Firebase Client), [`src/app/api/auth/login/route.ts`](https://github.com/rmanales10/ready_to_jump/blob/main/src/app/api/auth/login/route.ts) (Login API), [`src/app/bug-reports/page.tsx`](https://github.com/rmanales10/ready_to_jump/blob/main/src/app/bug-reports/page.tsx) (Bug Reports)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access Control"]
  node_login_page["Login Page<br/>[page.tsx]"]
  node_middleware["Route Guard<br/>[middleware.ts]"]
  node_login_api["Login API<br/>[route.ts]"]
  node_session_api["Session API<br/>[route.ts]"]
  node_logout_api["Logout API<br/>[route.ts]"]
  node_auth_lib["Auth Services<br/>[auth.ts]"]
end

subgraph group_admin["Admin Workspaces"]
  node_dashboard["User Dashboard<br/>[page.tsx]"]
  node_bug_reports["Bug Reports<br/>[page.tsx]"]
end

subgraph group_content["Course Content"]
  node_courses["Course Manager<br/>[page.tsx]"]
  node_upload_api["Avatar Upload<br/>[route.ts]"]
end

subgraph group_platform["Data And Media"]
  node_firebase_client["Firebase Client<br/>[firebase.ts]"]
  node_firestore[("Firestore")]
  node_blob_store[("Vercel Blob")]
end

node_admin_actor(("Admin"))

node_admin_actor -->|"opens"| node_login_page
node_admin_actor -->|"submits credentials"| node_login_api
node_login_api -->|"verifies account"| node_auth_lib
node_auth_lib -->|"ensures admin"| node_firestore
node_login_api -->|"queries admin"| node_firebase_client
node_firebase_client -->|"reads and updates"| node_firestore
node_login_api -->|"sets session cookie"| node_admin_actor
node_admin_actor -->|"requests admin route"| node_middleware
node_middleware -->|"authorizes route"| node_dashboard
node_middleware -->|"authorizes route"| node_bug_reports
node_middleware -->|"authorizes route"| node_courses
node_middleware -->|"redirects unauthenticated"| node_login_page
node_admin_actor -->|"checks session"| node_session_api
node_session_api -->|"verifies token"| node_auth_lib
node_admin_actor -->|"ends session"| node_logout_api
node_admin_actor -->|"reviews users"| node_dashboard
node_dashboard -->|"loads users"| node_firebase_client
node_admin_actor -->|"manages reports"| node_bug_reports
node_bug_reports -->|"reads and updates reports"| node_firebase_client
node_bug_reports -->|"creates notifications"| node_firestore
node_admin_actor -->|"edits courses"| node_courses
node_courses -->|"loads and saves courses"| node_firebase_client
node_admin_actor -->|"uploads avatar"| node_upload_api
node_upload_api -->|"stores image"| node_blob_store

click node_login_page "https://github.com/rmanales10/ready_to_jump/blob/main/src/app/page.tsx"
click node_middleware "https://github.com/rmanales10/ready_to_jump/blob/main/src/middleware.ts"
click node_login_api "https://github.com/rmanales10/ready_to_jump/blob/main/src/app/api/auth/login/route.ts"
click node_session_api "https://github.com/rmanales10/ready_to_jump/blob/main/src/app/api/auth/me/route.ts"
click node_logout_api "https://github.com/rmanales10/ready_to_jump/blob/main/src/app/api/auth/logout/route.ts"
click node_auth_lib "https://github.com/rmanales10/ready_to_jump/blob/main/src/lib/auth.ts"
click node_dashboard "https://github.com/rmanales10/ready_to_jump/blob/main/src/app/dashboard/page.tsx"
click node_bug_reports "https://github.com/rmanales10/ready_to_jump/blob/main/src/app/bug-reports/page.tsx"
click node_courses "https://github.com/rmanales10/ready_to_jump/blob/main/src/app/courses/page.tsx"
click node_upload_api "https://github.com/rmanales10/ready_to_jump/blob/main/src/app/api/upload/route.ts"
click node_firebase_client "https://github.com/rmanales10/ready_to_jump/blob/main/src/lib/firebase.ts"

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_login_page,node_middleware,node_login_api,node_session_api,node_logout_api,node_auth_lib toneBlue
class node_dashboard,node_bug_reports toneAmber
class node_courses,node_upload_api toneMint
class node_firebase_client,node_firestore,node_blob_store toneRose
class node_admin_actor toneIndigo
```

## Components

### Access Control

- [Login Page](https://github.com/rmanales10/ready_to_jump/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [Route Guard](https://github.com/rmanales10/ready_to_jump/blob/main/src/middleware.ts): `src/middleware.ts`
- [Login API](https://github.com/rmanales10/ready_to_jump/blob/main/src/app/api/auth/login/route.ts): `src/app/api/auth/login/route.ts`
- [Session API](https://github.com/rmanales10/ready_to_jump/blob/main/src/app/api/auth/me/route.ts): `src/app/api/auth/me/route.ts`
- [Logout API](https://github.com/rmanales10/ready_to_jump/blob/main/src/app/api/auth/logout/route.ts): `src/app/api/auth/logout/route.ts`
- [Auth Services](https://github.com/rmanales10/ready_to_jump/blob/main/src/lib/auth.ts): `src/lib/auth.ts`

### Admin Workspaces

- [User Dashboard](https://github.com/rmanales10/ready_to_jump/blob/main/src/app/dashboard/page.tsx): `src/app/dashboard/page.tsx`
- [Bug Reports](https://github.com/rmanales10/ready_to_jump/blob/main/src/app/bug-reports/page.tsx): `src/app/bug-reports/page.tsx`

### Course Content

- [Course Manager](https://github.com/rmanales10/ready_to_jump/blob/main/src/app/courses/page.tsx): `src/app/courses/page.tsx`
- [Avatar Upload](https://github.com/rmanales10/ready_to_jump/blob/main/src/app/api/upload/route.ts): `src/app/api/upload/route.ts`

### Data And Media

- [Firebase Client](https://github.com/rmanales10/ready_to_jump/blob/main/src/lib/firebase.ts): `src/lib/firebase.ts`
- **Firestore**
- **Vercel Blob**

### Other components

- **Admin**

## Connections

- Admin → Login Page: opens
- Admin → Login API: submits credentials
- Login API → Auth Services: verifies account
- Auth Services → Firestore: ensures admin
- Login API → Firebase Client: queries admin
- Firebase Client → Firestore: reads and updates
- Login API → Admin: sets session cookie
- Admin → Route Guard: requests admin route
- Route Guard → User Dashboard: authorizes route
- Route Guard → Bug Reports: authorizes route
- Route Guard → Course Manager: authorizes route
- Route Guard → Login Page: redirects unauthenticated
- Admin → Session API: checks session
- Session API → Auth Services: verifies token
- Admin → Logout API: ends session
- Admin → User Dashboard: reviews users
- User Dashboard → Firebase Client: loads users
- Admin → Bug Reports: manages reports
- Bug Reports → Firebase Client: reads and updates reports
- Bug Reports → Firestore: creates notifications
- Admin → Course Manager: edits courses
- Course Manager → Firebase Client: loads and saves courses
- Admin → Avatar Upload: uploads avatar
- Avatar Upload → Vercel Blob: stores image
