# v2tacodin/edge_ai architecture

> Architecture diagram of the GitHub repository v2tacodin/edge_ai, 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/v2tacodin/edge_ai
- Repository: https://github.com/v2tacodin/edge_ai

## Overview

This is a browser-based Edge AI learning hub for embedded and firmware engineering. A learner enters through the app shell, navigates learning and reference areas, practices or simulates concepts, and tracks personal progress. The product also includes interview preparation, a document notebook with local and Gemini-assisted question answering, and supporting reference tools. Source excerpts confirm several navigation and search links; some capabilities are evident from module names and the supplied tree, so uncertain internal wiring is omitted.

Main entry points: [`js/app.js`](https://github.com/v2tacodin/edge_ai/blob/main/js/app.js) (App routing), [`js/search.js`](https://github.com/v2tacodin/edge_ai/blob/main/js/search.js) (Global search), [`index.html`](https://github.com/v2tacodin/edge_ai/blob/main/index.html) (Web app entry), [`js/notebook.js`](https://github.com/v2tacodin/edge_ai/blob/main/js/notebook.js) (AI notebook)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_shell["App shell"]
  node_app["App routing<br/>[app.js]"]
  node_search["Global search<br/>[search.js]"]
  node_auth["Authentication gate<br/>[auth.js]"]
  node_index["Web app entry<br/>[index.html]"]
end

subgraph group_learning["Learning and practice"]
  node_roadmap["Learning roadmap<br/>[roadmap.js]"]
  node_practice["Code practice<br/>[practice.js]"]
  node_quiz["Module quizzes<br/>[module-quiz.js]"]
  node_sim["Hardware simulator<br/>[simulator.js]"]
  node_interview["Interview arena<br/>[interview.js]"]
  node_projects["Projects<br/>[projects.js]"]
end

subgraph group_references["Reference tools"]
  node_bookshelf["Technical bookshelf<br/>[bookshelf.js]"]
  node_cheatsheet["Cheatsheets<br/>[cheatsheet.js]"]
  node_hexmem["Memory visualizer<br/>[hexmem.js]"]
  node_serial["Serial monitor<br/>[serial-monitor.js]"]
end

subgraph group_personal["Personal workspace"]
  node_notebook["AI notebook<br/>[notebook.js]"]
  node_state[("Learning state<br/>[state.js]")]
  node_profile["Profile and analytics<br/>[profile.js]"]
  node_backup["Backup and restore<br/>[backup.js]"]
end

subgraph group_platform["Browser platform"]
  node_audio["Audio engine<br/>[audio.js]"]
  node_browser[("Browser storage")]
  node_serviceworker["Offline caching<br/>[sw.js]"]
end

node_learner(("Learner"))
node_gemini(("Gemini API"))

node_learner -->|"opens"| node_index
node_index -->|"loads"| node_app
node_app -->|"routes to"| node_roadmap
node_app -->|"routes to"| node_practice
node_app -->|"routes to"| node_quiz
node_app -->|"routes to"| node_sim
node_app -->|"renders"| node_interview
node_app -->|"renders"| node_notebook
node_app -->|"opens"| node_search
node_search -->|"indexes"| node_practice
node_search -->|"indexes"| node_interview
node_practice -->|"saves progress"| node_state
node_quiz -->|"stores results"| node_browser
node_state -->|"reads and writes"| node_browser
node_notebook -->|"stores documents"| node_browser
node_notebook -.->|"queries optionally"| node_gemini
node_learner -->|"browses"| node_bookshelf
node_learner -->|"consults"| node_cheatsheet
node_learner -->|"explores"| node_hexmem
node_learner -->|"uses"| node_serial
node_learner -->|"explores"| node_projects
node_learner -->|"reviews progress"| node_profile
node_backup -->|"exports or imports"| node_browser
node_index -->|"loads gate"| node_auth
node_app -->|"registers"| node_serviceworker
node_serviceworker -->|"caches assets"| node_browser
node_audio -->|"plays synthesized audio"| node_learner

click node_app "https://github.com/v2tacodin/edge_ai/blob/main/js/app.js"
click node_search "https://github.com/v2tacodin/edge_ai/blob/main/js/search.js"
click node_roadmap "https://github.com/v2tacodin/edge_ai/blob/main/js/roadmap.js"
click node_practice "https://github.com/v2tacodin/edge_ai/blob/main/js/practice.js"
click node_quiz "https://github.com/v2tacodin/edge_ai/blob/main/js/module-quiz.js"
click node_sim "https://github.com/v2tacodin/edge_ai/blob/main/js/simulator.js"
click node_interview "https://github.com/v2tacodin/edge_ai/blob/main/js/interview.js"
click node_notebook "https://github.com/v2tacodin/edge_ai/blob/main/js/notebook.js"
click node_state "https://github.com/v2tacodin/edge_ai/blob/main/js/state.js"
click node_profile "https://github.com/v2tacodin/edge_ai/blob/main/js/profile.js"
click node_backup "https://github.com/v2tacodin/edge_ai/blob/main/js/backup.js"
click node_bookshelf "https://github.com/v2tacodin/edge_ai/blob/main/js/bookshelf.js"
click node_cheatsheet "https://github.com/v2tacodin/edge_ai/blob/main/js/cheatsheet.js"
click node_hexmem "https://github.com/v2tacodin/edge_ai/blob/main/js/hexmem.js"
click node_serial "https://github.com/v2tacodin/edge_ai/blob/main/js/serial-monitor.js"
click node_projects "https://github.com/v2tacodin/edge_ai/blob/main/js/projects.js"
click node_audio "https://github.com/v2tacodin/edge_ai/blob/main/js/audio.js"
click node_auth "https://github.com/v2tacodin/edge_ai/blob/main/js/auth.js"
click node_serviceworker "https://github.com/v2tacodin/edge_ai/blob/main/sw.js"
click node_index "https://github.com/v2tacodin/edge_ai/blob/main/index.html"

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_search,node_auth,node_index toneBlue
class node_roadmap,node_practice,node_quiz,node_sim,node_interview,node_projects toneAmber
class node_bookshelf,node_cheatsheet,node_hexmem,node_serial,node_gemini toneMint
class node_notebook,node_state,node_profile,node_backup toneRose
class node_audio,node_browser,node_serviceworker,node_learner toneIndigo
```

## Components

### App shell

- [App routing](https://github.com/v2tacodin/edge_ai/blob/main/js/app.js): `js/app.js`
- [Global search](https://github.com/v2tacodin/edge_ai/blob/main/js/search.js): `js/search.js`
- [Authentication gate](https://github.com/v2tacodin/edge_ai/blob/main/js/auth.js): `js/auth.js`
- [Web app entry](https://github.com/v2tacodin/edge_ai/blob/main/index.html): `index.html`

### Learning and practice

- [Learning roadmap](https://github.com/v2tacodin/edge_ai/blob/main/js/roadmap.js): `js/roadmap.js`
- [Code practice](https://github.com/v2tacodin/edge_ai/blob/main/js/practice.js): `js/practice.js`
- [Module quizzes](https://github.com/v2tacodin/edge_ai/blob/main/js/module-quiz.js): `js/module-quiz.js`
- [Hardware simulator](https://github.com/v2tacodin/edge_ai/blob/main/js/simulator.js): `js/simulator.js`
- [Interview arena](https://github.com/v2tacodin/edge_ai/blob/main/js/interview.js): `js/interview.js`
- [Projects](https://github.com/v2tacodin/edge_ai/blob/main/js/projects.js): `js/projects.js`

### Reference tools

- [Technical bookshelf](https://github.com/v2tacodin/edge_ai/blob/main/js/bookshelf.js): `js/bookshelf.js`
- [Cheatsheets](https://github.com/v2tacodin/edge_ai/blob/main/js/cheatsheet.js): `js/cheatsheet.js`
- [Memory visualizer](https://github.com/v2tacodin/edge_ai/blob/main/js/hexmem.js): `js/hexmem.js`
- [Serial monitor](https://github.com/v2tacodin/edge_ai/blob/main/js/serial-monitor.js): `js/serial-monitor.js`

### Personal workspace

- [AI notebook](https://github.com/v2tacodin/edge_ai/blob/main/js/notebook.js): `js/notebook.js`
- [Learning state](https://github.com/v2tacodin/edge_ai/blob/main/js/state.js): `js/state.js`
- [Profile and analytics](https://github.com/v2tacodin/edge_ai/blob/main/js/profile.js): `js/profile.js`
- [Backup and restore](https://github.com/v2tacodin/edge_ai/blob/main/js/backup.js): `js/backup.js`

### Browser platform

- [Audio engine](https://github.com/v2tacodin/edge_ai/blob/main/js/audio.js): `js/audio.js`
- **Browser storage**
- [Offline caching](https://github.com/v2tacodin/edge_ai/blob/main/sw.js): `sw.js`

### Other components

- **Learner**
- **Gemini API**

## Connections

- Learner → Web app entry: opens
- Web app entry → App routing: loads
- App routing → Learning roadmap: routes to
- App routing → Code practice: routes to
- App routing → Module quizzes: routes to
- App routing → Hardware simulator: routes to
- App routing → Interview arena: renders
- App routing → AI notebook: renders
- App routing → Global search: opens
- Global search → Code practice: indexes
- Global search → Interview arena: indexes
- Code practice → Learning state: saves progress
- Module quizzes → Browser storage: stores results
- Learning state → Browser storage: reads and writes
- AI notebook → Browser storage: stores documents
- AI notebook → Gemini API: queries optionally
- Learner → Technical bookshelf: browses
- Learner → Cheatsheets: consults
- Learner → Memory visualizer: explores
- Learner → Serial monitor: uses
- Learner → Projects: explores
- Learner → Profile and analytics: reviews progress
- Backup and restore → Browser storage: exports or imports
- Web app entry → Authentication gate: loads gate
- App routing → Offline caching: registers
- Offline caching → Browser storage: caches assets
- Audio engine → Learner: plays synthesized audio
