# manteshb2006/cipher-your-cybersecurity-journey architecture

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

- Interactive diagram: https://gitdiagram.com/manteshb2006/cipher-your-cybersecurity-journey
- Repository: https://github.com/manteshb2006/cipher-your-cybersecurity-journey

## Overview

Cipher is a local-first cybersecurity learning app: learners follow a phased roadmap and monthly topic/lab work, track projects and optional credentials, and review progress, notes, and career goals. The frontend’s progress provider calculates learning metrics and delegates persistence to local storage and optional revision-based account sync. The README documents search, bookmarks, portfolio, and other capabilities beyond the sampled page implementations; those appear as product areas, with wiring shown only where supported. Backend details are based on the partial server excerpt and README API description.

Main entry points: [`frontend/src/hooks/useProgress.tsx`](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/hooks/useProgress.tsx) (Progress provider), [`frontend/app/month/[id].tsx`](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/month/%5Bid%5D.tsx) (Month detail), [`frontend/src/hooks/useProgressStorage.ts`](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/hooks/useProgressStorage.ts) (Progress persistence), [`frontend/app/phase/[id].tsx`](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/phase/%5Bid%5D.tsx) (Phase detail)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_learning["Learning roadmap"]
  node_overview["Overview<br/>[index.tsx]"]
  node_roadmap["Roadmap<br/>[roadmap.tsx]"]
  node_phase["Phase detail<br/>[&#91;id&#93;.tsx]"]
  node_month["Month detail<br/>[&#91;id&#93;.tsx]"]
  node_topic["Topic detail<br/>[&#91;id&#93;.tsx]"]
  node_search["Global search<br/>[search.tsx]"]
  node_content["Learning content<br/>[roadmap.ts]"]
  node_search_index["Search index<br/>[search.ts]"]
end

subgraph group_practice["Practice and growth"]
  node_labs["Practical labs<br/>[labs.tsx]"]
  node_projects["Project trackers<br/>[projects.tsx]"]
  node_project_detail["Project detail<br/>[&#91;id&#93;.tsx]"]
  node_certifications["Certifications<br/>[certifications.tsx]"]
  node_notes["Field notes<br/>[notes.tsx]"]
  node_career["Career and portfolio<br/>[career.tsx]"]
  node_project_data["Project content<br/>[projects.ts]"]
end

subgraph group_frontend["App and progress"]
  node_progress["Progress provider<br/>[useProgress.tsx]"]
  node_progress_storage["Progress persistence"]
  node_device_storage["Device storage<br/>[index.ts]"]
end

subgraph group_sync["Account sync"]
  node_auth["Authentication<br/>[useAuth.tsx]"]
  node_api["API client<br/>[api.ts]"]
  node_backend["Sync API<br/>[server.py]"]
  node_mongo[("MongoDB")]
  node_provider["Managed sign-in"]
end

node_learner(("Learner"))

node_learner -->|"opens app"| node_overview
node_overview -->|"continues roadmap"| node_phase
node_roadmap -->|"opens phase"| node_phase
node_phase -->|"opens month"| node_month
node_month -->|"opens topic"| node_topic
node_month -->|"tracks lab work"| node_labs
node_projects -->|"opens project"| node_project_detail
node_learner -->|"prepares"| node_certifications
node_learner -->|"records notes"| node_notes
node_learner -->|"plans career"| node_career
node_learner -->|"searches content"| node_search
node_search -->|"filters results"| node_search_index
node_content -->|"indexes content"| node_search_index
node_project_data -->|"indexes projects"| node_search_index
node_overview -->|"reads metrics"| node_progress
node_phase -->|"updates checks"| node_progress
node_month -->|"updates checks"| node_progress
node_topic -->|"updates notes"| node_progress
node_labs -->|"updates checks"| node_progress
node_project_detail -->|"updates status"| node_progress
node_certifications -->|"updates records"| node_progress
node_notes -->|"updates notes"| node_progress
node_career -->|"updates profile"| node_progress
node_progress -->|"persists changes"| node_progress_storage
node_progress_storage -->|"reads and writes"| node_device_storage
node_progress_storage -->|"gets session"| node_auth
node_auth -->|"exchanges session"| node_api
node_auth -.->|"starts sign-in"| node_provider
node_progress_storage -->|"syncs progress"| node_api
node_api -->|"sends requests"| node_backend
node_backend -->|"reads and writes"| node_mongo

click node_overview "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/(tabs)/index.tsx"
click node_roadmap "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/(tabs)/roadmap.tsx"
click node_phase "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/phase/%5Bid%5D.tsx"
click node_month "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/month/%5Bid%5D.tsx"
click node_topic "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/topic/%5Bid%5D.tsx"
click node_labs "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/labs.tsx"
click node_projects "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/(tabs)/projects.tsx"
click node_project_detail "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/project/%5Bid%5D.tsx"
click node_certifications "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/certifications.tsx"
click node_notes "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/notes.tsx"
click node_career "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/career.tsx"
click node_search "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/search.tsx"
click node_content "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/data/roadmap.ts"
click node_project_data "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/data/projects.ts"
click node_search_index "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/data/search.ts"
click node_progress "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/hooks/useProgress.tsx"
click node_progress_storage "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/hooks/useProgressStorage.ts"
click node_device_storage "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/utils/storage/index.ts"
click node_auth "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/hooks/useAuth.tsx"
click node_api "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/lib/api.ts"
click node_backend "https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/backend/server.py"

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_overview,node_roadmap,node_phase,node_month,node_topic,node_search,node_content,node_search_index toneBlue
class node_labs,node_projects,node_project_detail,node_certifications,node_notes,node_career,node_project_data toneAmber
class node_progress,node_progress_storage,node_device_storage toneMint
class node_auth,node_api,node_backend,node_mongo,node_provider toneRose
class node_learner toneIndigo
```

## Components

### Learning roadmap

- [Overview](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/(tabs)/index.tsx): `frontend/app/(tabs)/index.tsx`
- [Roadmap](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/(tabs)/roadmap.tsx): `frontend/app/(tabs)/roadmap.tsx`
- [Phase detail](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/phase/%5Bid%5D.tsx): `frontend/app/phase/[id].tsx`
- [Month detail](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/month/%5Bid%5D.tsx): `frontend/app/month/[id].tsx`
- [Topic detail](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/topic/%5Bid%5D.tsx): `frontend/app/topic/[id].tsx`
- [Global search](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/search.tsx): `frontend/app/search.tsx`
- [Learning content](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/data/roadmap.ts): `frontend/src/data/roadmap.ts`
- [Search index](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/data/search.ts): `frontend/src/data/search.ts`

### Practice and growth

- [Practical labs](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/labs.tsx): `frontend/app/labs.tsx`
- [Project trackers](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/(tabs)/projects.tsx): `frontend/app/(tabs)/projects.tsx`
- [Project detail](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/project/%5Bid%5D.tsx): `frontend/app/project/[id].tsx`
- [Certifications](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/certifications.tsx): `frontend/app/certifications.tsx`
- [Field notes](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/notes.tsx): `frontend/app/notes.tsx`
- [Career and portfolio](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/app/career.tsx): `frontend/app/career.tsx`
- [Project content](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/data/projects.ts): `frontend/src/data/projects.ts`

### App and progress

- [Progress provider](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/hooks/useProgress.tsx): `frontend/src/hooks/useProgress.tsx`
- [Progress persistence](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/hooks/useProgressStorage.ts): `frontend/src/hooks/useProgressStorage.ts`
- [Device storage](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/utils/storage/index.ts): `frontend/src/utils/storage/index.ts`

### Account sync

- [Authentication](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/hooks/useAuth.tsx): `frontend/src/hooks/useAuth.tsx`
- [API client](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/frontend/src/lib/api.ts): `frontend/src/lib/api.ts`
- [Sync API](https://github.com/manteshb2006/cipher-your-cybersecurity-journey/blob/main/backend/server.py): `backend/server.py`
- **MongoDB**
- **Managed sign-in**

### Other components

- **Learner**

## Connections

- Learner → Overview: opens app
- Overview → Phase detail: continues roadmap
- Roadmap → Phase detail: opens phase
- Phase detail → Month detail: opens month
- Month detail → Topic detail: opens topic
- Month detail → Practical labs: tracks lab work
- Project trackers → Project detail: opens project
- Learner → Certifications: prepares
- Learner → Field notes: records notes
- Learner → Career and portfolio: plans career
- Learner → Global search: searches content
- Global search → Search index: filters results
- Learning content → Search index: indexes content
- Project content → Search index: indexes projects
- Overview → Progress provider: reads metrics
- Phase detail → Progress provider: updates checks
- Month detail → Progress provider: updates checks
- Topic detail → Progress provider: updates notes
- Practical labs → Progress provider: updates checks
- Project detail → Progress provider: updates status
- Certifications → Progress provider: updates records
- Field notes → Progress provider: updates notes
- Career and portfolio → Progress provider: updates profile
- Progress provider → Progress persistence: persists changes
- Progress persistence → Device storage: reads and writes
- Progress persistence → Authentication: gets session
- Authentication → API client: exchanges session
- Authentication → Managed sign-in: starts sign-in
- Progress persistence → API client: syncs progress
- API client → Sync API: sends requests
- Sync API → MongoDB: reads and writes
