# sapanadashoni15/codevault architecture

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

- Interactive diagram: https://gitdiagram.com/sapanadashoni15/codevault
- Repository: https://github.com/sapanadashoni15/codevault

## Overview

1. **Overall shape**
   - The repo is split into a **React frontend** (`frontend-main`) and a **Node/Express backend** (`backend-main`).
   - The product is a **GitHub-like platform** with two major concerns: standard repository/user/issue management and a **custom version-control system implemented in the backend**.

2. **Frontend boundary**
   - The frontend is a single-page app built with **React** (`src/main.jsx`, `App.jsx`, `Routes.jsx`).
   - It handles **authentication UI** (`Login`, `Signup`), a **dashboard**, and user/repository pages such as **profile**, **repository details**, **create repository**, and a **heat map** component.
   - `authContext.jsx` and `themeContext.jsx` indicate app-wide state is centralized for auth/session and UI theme.

3. **Frontend-to-backend data flow**
   - The UI is organized around route-driven screens and likely calls backend APIs for:
     - sign up / login,
     - repository creation and metadata,
     - repository detail pages,
     - issue tracking,
     - and custom repo operations like commit/push/pull/revert.
   - `Navbar`, dashboard, and user pages suggest the frontend is the presentation layer only; the backend owns the domain logic.

4. **Backend application layer**
   - The backend is organized in a classic **Express controller/router** structure.
   - Route files under `routes/` split the API by domain:
     - `user.router.js`
     - `repo.router.js`
     - `issue.router.js`
     - `main.router.js`
   - Controllers in `controllers/` implement the actual request handling for each subsystem.

5. **Domain subsystems in the backend**
   - **User subsystem**: `userController.js` and `userModel.js` handle account/auth-related behavior.
   - **Repository subsystem**: `repoController.js` and `repoModel.js` manage repository records and metadata.
   - **Issue subsystem**: `issueController.js` and `issueModel.js` manage issue objects linked to repos/users.
   - These are the primary business entities visible in the code layout.

6. **Custom version-control subsystem**
   - The files `add.js`, `commit.js`, `init.js`, `push.js`, `pull.js`, `revert.js`, and `update.js` show a separate backend subsystem for **Git-like repository state management**.
   - This is not just CRUD around repositories; it appears to implement a **custom VCS workflow**: initialize a repo state, stage files, create commits, synchronize changes, and revert to previous snapshots.
   - This subsystem is likely the architectural centerpiece beyond the social/repo UI.

7. **Working tree / snapshot storage**
   - The `.codeVault/` directory inside `backend-main` contains:
     - `staging/` for staged working-state files,
     - `commits/` with commit IDs and per-commit snapshots,
     - a `.codeVault/config.json` for repository-specific state.
   - This strongly suggests the backend maintains its own internal source-control metadata separate from the normal application database.
   - The sample files (`home.js`, `recipe.js`) indicate the VCS layer stores file-level snapshots.

8. **Persistence boundary**
   - The presence of `models/` implies a database-backed domain layer, most likely using a MongoDB-style model abstraction.
   - The custom VCS data in `.codeVault/` is file-system based, so the architecture mixes:
     - **database persistence** for users/repos/issues,
     - and **filesystem persistence** for versioned file content and commit history.
   - That split is important for any architecture diagram.

9. **Infrastructure/configuration**
   - `config/aws-config.js` suggests some AWS-backed integration, likely for storage or deployment-related concerns.
   - `backend-main/package.json` and the Express-style file structure indicate the backend is a Node runtime service.
   - No dedicated queue, worker, or microservice structure is visible; this looks like a **modular monolith**.

10. **Repository lifecycle flow**
   - Typical flow is likely:
     1. user authenticates in the frontend,
     2. creates or opens a repository,
     3. backend loads repo metadata from the database,
     4. version-control actions operate on `.codeVault` working/commit state,
     5. repo and issue updates are persisted through the API layer.
   - In other words, repo state management is split between **API-managed metadata** and **filesystem-managed content history**.

11. **Entry points**
   - Backend bootstrapping is centered in `backend-main/index.js`.
   - Frontend bootstrapping is centered in `frontend-main/src/main.jsx`.
   - These are the two top-level runtime entry points for the system.

12. **What to show in an architecture diagram**
   - Draw two top-level boxes: **React client** and **Node/Express backend**.
   - Inside the backend, separate:
     - **API routing/controllers/models** for users/repos/issues,
     - **custom VCS engine** for init/add/commit/push/pull/revert/update,
     - **filesystem `.codeVault` state** for staging and commits,
     - and **database persistence** for application entities.
   - Show AWS as an external integration from the backend only if you want to represent infrastructure dependencies.

Main entry points: [`backend-main/controllers/commit.js`](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/commit.js) (VCS engine), [`frontend-main/src/Routes.jsx`](https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/Routes.jsx) (Routes), [`backend-main/routes/main.router.js`](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/routes/main.router.js) (Main routes), [`frontend-main/src/App.jsx`](https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/App.jsx) (App shell)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["React frontend"]
  node_fe_entry(("App entry<br/>React bootstrap<br/>[main.jsx]"))
  node_fe_app["App shell<br/>React shell<br/>[App.jsx]"]
  node_fe_routes["Routes<br/>React routing<br/>[Routes.jsx]"]
  node_fe_authctx["Auth state<br/>React context<br/>[authContext.jsx]"]
  node_fe_themectx["Theme state<br/>React context<br/>[themeContext.jsx]"]
  node_fe_nav["Navbar<br/>UI nav<br/>[Navbar.jsx]"]
  node_fe_auth["Auth screens<br/>Login/signup<br/>[Login.jsx]"]
  node_fe_dash["Dashboard<br/>Main view<br/>[Dashboard.jsx]"]
  node_fe_user["User pages<br/>Profile/repos<br/>[Profile.jsx]"]
end

subgraph group_backend["Node backend"]
  node_be_entry(("Server entry<br/>Express bootstrap<br/>[index.js]"))
  node_be_mainroutes["Main routes<br/>Express router<br/>[main.router.js]"]
  node_be_userroutes["User API<br/>Route module<br/>[user.router.js]"]
  node_be_reporoutes["Repo API<br/>Route module<br/>[repo.router.js]"]
  node_be_issueroutes["Issue API<br/>Route module<br/>[issue.router.js]"]
  node_be_userctl["User ctl<br/>Controller<br/>[userController.js]"]
  node_be_repoclt["Repo ctl<br/>Controller<br/>[repoController.js]"]
  node_be_issuectl["Issue ctl<br/>Controller<br/>[issueController.js]"]
  node_be_usermodel[("User model<br/>Data model<br/>[userModel.js]")]
  node_be_repomodel[("Repo model<br/>Data model<br/>[repoModel.js]")]
  node_be_issuemodel[("Issue model<br/>Data model<br/>[issueModel.js]")]
  node_be_vcs{{"VCS engine<br/>Git-like ops<br/>[commit.js]"}}
  node_be_init["Init<br/>VCS command<br/>[init.js]"]
  node_be_add["Add<br/>VCS command<br/>[add.js]"]
  node_be_commit["Commit<br/>VCS command<br/>[commit.js]"]
  node_be_push["Push<br/>VCS command<br/>[push.js]"]
  node_be_pull["Pull<br/>VCS command<br/>[pull.js]"]
  node_be_revert["Revert<br/>VCS command<br/>[revert.js]"]
  node_be_update["Update<br/>VCS command<br/>[update.js]"]
  node_be_aws["AWS config<br/>Integration<br/>[aws-config.js]"]
end

subgraph group_storage["Repo state"]
  node_fs_staging["Staging<br/>Filesystem state<br/>[staging]"]
  node_fs_commits[("Commits<br/>Filesystem state<br/>[commits]")]
  node_fs_config["Vault config<br/>Filesystem config<br/>[config.json]"]
end

node_fe_entry --> node_fe_app
node_fe_app --> node_fe_routes
node_fe_app --> node_fe_authctx
node_fe_app --> node_fe_themectx
node_fe_routes --> node_fe_nav
node_fe_routes --> node_fe_auth
node_fe_routes --> node_fe_dash
node_fe_routes --> node_fe_user
node_fe_auth --> node_be_userroutes
node_fe_user --> node_be_reporoutes
node_fe_user --> node_be_issueroutes
node_fe_dash --> node_be_mainroutes
node_be_entry --> node_be_mainroutes
node_be_mainroutes --> node_be_userroutes
node_be_mainroutes --> node_be_reporoutes
node_be_mainroutes --> node_be_issueroutes
node_be_userroutes --> node_be_userctl
node_be_reporoutes --> node_be_repoclt
node_be_issueroutes --> node_be_issuectl
node_be_userctl --> node_be_usermodel
node_be_repoclt --> node_be_repomodel
node_be_issuectl --> node_be_issuemodel
node_be_repoclt --> node_be_vcs
node_be_vcs --> node_be_init
node_be_vcs --> node_be_add
node_be_vcs --> node_be_commit
node_be_vcs --> node_be_push
node_be_vcs --> node_be_pull
node_be_vcs --> node_be_revert
node_be_vcs --> node_be_update
node_be_init --> node_fs_config
node_be_add --> node_fs_staging
node_be_commit --> node_fs_commits
node_be_revert --> node_fs_commits
node_be_pull --> node_fs_commits
node_be_update --> node_fs_staging
node_be_entry --> node_be_aws

click node_fe_entry "https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/main.jsx"
click node_fe_app "https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/App.jsx"
click node_fe_routes "https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/Routes.jsx"
click node_fe_authctx "https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/authContext.jsx"
click node_fe_themectx "https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/themeContext.jsx"
click node_fe_nav "https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/components/Navbar.jsx"
click node_fe_auth "https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/components/auth/Login.jsx"
click node_fe_dash "https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/components/dashboard/Dashboard.jsx"
click node_fe_user "https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/components/user/Profile.jsx"
click node_be_entry "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/index.js"
click node_be_mainroutes "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/routes/main.router.js"
click node_be_userroutes "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/routes/user.router.js"
click node_be_reporoutes "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/routes/repo.router.js"
click node_be_issueroutes "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/routes/issue.router.js"
click node_be_userctl "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/userController.js"
click node_be_repoclt "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/repoController.js"
click node_be_issuectl "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/issueController.js"
click node_be_usermodel "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/models/userModel.js"
click node_be_repomodel "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/models/repoModel.js"
click node_be_issuemodel "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/models/issueModel.js"
click node_be_vcs "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/commit.js"
click node_be_init "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/init.js"
click node_be_add "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/add.js"
click node_be_commit "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/commit.js"
click node_be_push "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/push.js"
click node_be_pull "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/pull.js"
click node_be_revert "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/revert.js"
click node_be_update "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/update.js"
click node_be_aws "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/config/aws-config.js"
click node_fs_staging "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/.codeVault/staging"
click node_fs_commits "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/.codeVault/commits"
click node_fs_config "https://github.com/sapanadashoni15/codevault/blob/main/backend-main/.codeVault/config.json"

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_fe_entry,node_fe_app,node_fe_routes,node_fe_authctx,node_fe_themectx,node_fe_nav,node_fe_auth,node_fe_dash,node_fe_user toneBlue
class node_be_entry,node_be_mainroutes,node_be_userroutes,node_be_reporoutes,node_be_issueroutes,node_be_userctl,node_be_repoclt,node_be_issuectl,node_be_usermodel,node_be_repomodel,node_be_issuemodel,node_be_vcs,node_be_init,node_be_add,node_be_commit,node_be_push,node_be_pull,node_be_revert,node_be_update,node_be_aws toneAmber
class node_fs_staging,node_fs_commits,node_fs_config toneMint
```

## Components

### React frontend

Single-page client with route-driven screens and shared app state.

- [App entry](https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/main.jsx): React bootstrap · Frontend application startup. · `frontend-main/src/main.jsx`
- [App shell](https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/App.jsx): React shell · Top-level app composition and providers. · `frontend-main/src/App.jsx`
- [Routes](https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/Routes.jsx): React routing · Route table for the client screens. · `frontend-main/src/Routes.jsx`
- [Auth state](https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/authContext.jsx): React context · Shared authentication/session state. · `frontend-main/src/authContext.jsx`
- [Theme state](https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/themeContext.jsx): React context · Shared UI theme state. · `frontend-main/src/themeContext.jsx`
- [Navbar](https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/components/Navbar.jsx): UI nav · Primary navigation for the client. · `frontend-main/src/components/Navbar.jsx`
- [Auth screens](https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/components/auth/Login.jsx): Login/signup · Sign-in and account creation views. · `frontend-main/src/components/auth/Login.jsx`
- [Dashboard](https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/components/dashboard/Dashboard.jsx): Main view · Landing dashboard for authenticated users. · `frontend-main/src/components/dashboard/Dashboard.jsx`
- [User pages](https://github.com/sapanadashoni15/codevault/blob/main/frontend-main/src/components/user/Profile.jsx): Profile/repos · Profile, repository details, creation, and heat map views. · `frontend-main/src/components/user/Profile.jsx`

### Node backend

Express API plus custom repository/version-control logic.

- [Server entry](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/index.js): Express bootstrap · Backend application startup. · `backend-main/index.js`
- [Main routes](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/routes/main.router.js): Express router · Top-level API router composition. · `backend-main/routes/main.router.js`
- [User API](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/routes/user.router.js): Route module · User authentication and account routes. · `backend-main/routes/user.router.js`
- [Repo API](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/routes/repo.router.js): Route module · Repository CRUD and metadata routes. · `backend-main/routes/repo.router.js`
- [Issue API](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/routes/issue.router.js): Route module · Issue tracking routes. · `backend-main/routes/issue.router.js`
- [User ctl](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/userController.js): Controller · User request handling and auth flow. · `backend-main/controllers/userController.js`
- [Repo ctl](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/repoController.js): Controller · Repository request handling and metadata logic. · `backend-main/controllers/repoController.js`
- [Issue ctl](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/issueController.js): Controller · Issue request handling. · `backend-main/controllers/issueController.js`
- [User model](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/models/userModel.js): Data model · User persistence abstraction. · `backend-main/models/userModel.js`
- [Repo model](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/models/repoModel.js): Data model · Repository persistence abstraction. · `backend-main/models/repoModel.js`
- [Issue model](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/models/issueModel.js): Data model · Issue persistence abstraction. · `backend-main/models/issueModel.js`
- [VCS engine](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/commit.js): Git-like ops · Custom repository state management commands. · `backend-main/controllers/commit.js`
- [Init](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/init.js): VCS command · Initializes repository state. · `backend-main/controllers/init.js`
- [Add](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/add.js): VCS command · Stages content for commit. · `backend-main/controllers/add.js`
- [Commit](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/commit.js): VCS command · Creates commit snapshots. · `backend-main/controllers/commit.js`
- [Push](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/push.js): VCS command · Synchronizes repository state outward. · `backend-main/controllers/push.js`
- [Pull](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/pull.js): VCS command · Fetches repository state inward. · `backend-main/controllers/pull.js`
- [Revert](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/controllers/revert.js): VCS command · Restores a prior snapshot. · `backend-main/controllers/revert.js`
- [Update](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/update.js): VCS command · Applies working-tree updates. · `backend-main/update.js`
- [AWS config](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/config/aws-config.js): Integration · Backend cloud integration settings. · `backend-main/config/aws-config.js`

### Repo state

Filesystem-backed commit and staging data used by the VCS layer.

- [Staging](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/.codeVault/staging): Filesystem state · Staged working-tree files. · `backend-main/.codeVault/staging`
- [Commits](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/.codeVault/commits): Filesystem state · Committed snapshots and metadata. · `backend-main/.codeVault/commits`
- [Vault config](https://github.com/sapanadashoni15/codevault/blob/main/backend-main/.codeVault/config.json): Filesystem config · Per-repository VCS configuration. · `backend-main/.codeVault/config.json`

## Connections

- App entry → App shell: Bootstraps the app shell.
- App shell → Routes: Provides routing for screens.
- App shell → Auth state: Supplies authentication state.
- App shell → Theme state: Supplies theme state.
- Routes → Navbar: Mounts persistent navigation.
- Routes → Auth screens: Routes to login and signup.
- Routes → Dashboard: Routes to the dashboard.
- Routes → User pages: Routes to profile and repository views.
- Auth screens → User API: Authenticates through backend APIs.
- User pages → Repo API: Loads and updates repository data.
- User pages → Issue API: Reads and manages issues.
- Dashboard → Main routes: Fetches dashboard data through API composition.
- Server entry → Main routes: Mounts the API router stack.
- Main routes → User API: Delegates user endpoints.
- Main routes → Repo API: Delegates repository endpoints.
- Main routes → Issue API: Delegates issue endpoints.
- User API → User ctl: Routes request handling to controller logic.
- Repo API → Repo ctl: Routes request handling to controller logic.
- Issue API → Issue ctl: Routes request handling to controller logic.
- User ctl → User model: Persists and reads user records.
- Repo ctl → Repo model: Persists and reads repository records.
- Issue ctl → Issue model: Persists and reads issue records.
- Repo ctl → VCS engine: Invokes repository state operations.
- VCS engine → Init: Initializes repository state.
- VCS engine → Add: Stages files.
- VCS engine → Commit: Creates snapshots.
- VCS engine → Push: Pushes repository changes.
- VCS engine → Pull: Pulls repository changes.
- VCS engine → Revert: Reverts to earlier commits.
- VCS engine → Update: Updates working state.
- Init → Vault config: Writes repository configuration.
- Add → Staging: Writes staged file content.
- Commit → Commits: Stores commit snapshots.
- Revert → Commits: Reads commit history for rollback.
- Pull → Commits: Reads remote-synced snapshot state.
- Update → Staging: Updates working-tree state.
- Server entry → AWS config: Loads backend integration settings.
