# nandaleio/c_base architecture

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

## Overview

C_Base is a small C-based PocketBase-style backend with an embedded Vue admin interface. Its main workflow is an HTTP request entering the Mongoose event loop, being dispatched to standard or admin API routes, and returning database-backed results; users can also authenticate and receive JWTs. The UI supports table management, SQL queries, logs, configuration, and admin management. Route/controller wiring and most UI calls are not shown in the sampled source, so those links are limited to documented behavior and explicit entry-point dispatch.

Main entry points: [`src/main.c`](https://github.com/nandaleio/c_base/blob/main/src/main.c) (Server Runtime), [`src/db/db.c`](https://github.com/nandaleio/c_base/blob/main/src/db/db.c) (Database Access), [`src/routes/standard-route.c`](https://github.com/nandaleio/c_base/blob/main/src/routes/standard-route.c) (Standard Routes), [`src/controllers/auth-controller.c`](https://github.com/nandaleio/c_base/blob/main/src/controllers/auth-controller.c) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_server["HTTP Server"]
  node_runtime["Server Runtime<br/>[main.c]"]
  node_mongoose["Mongoose HTTP<br/>[mongoose.c]"]
  node_publicfiles["Public Files<br/>[main.c]"]
end

subgraph group_api["API Domain"]
  node_standardroutes["Standard Routes<br/>[standard-route.c]"]
  node_adminroutes["Admin Routes<br/>[admin-route.c]"]
  node_auth["Authentication<br/>[auth-controller.c]"]
  node_standard["Standard Data API"]
  node_adminops["Admin Operations<br/>[admin-controller.c]"]
  node_jwt["JWT Utilities<br/>[jwt.c]"]
end

subgraph group_data["Persistence"]
  node_db["Database Access<br/>[db.c]"]
  node_sqlite[("SQLite Store<br/>[sqlite3.c]")]
end

subgraph group_adminui["Admin Interface"]
  node_adminapp["Admin UI<br/>[App.vue]"]
  node_loginview["Login View<br/>[LoginView.vue]"]
  node_workspace["Admin Workspace<br/>[TablesView.vue]"]
  node_apiclient["UI API Client<br/>[api-service.ts]"]
end

node_client(("HTTP Client"))
node_admin(("Admin User"))
node_visitor(("Public Visitor"))

node_runtime -->|"listens via"| node_mongoose
node_client -->|"sends HTTP"| node_mongoose
node_mongoose -->|"delivers events"| node_runtime
node_runtime -->|"dispatches admin"| node_adminroutes
node_runtime -->|"dispatches standard"| node_standardroutes
node_adminroutes -->|"handles admin API"| node_adminops
node_standardroutes -->|"handles auth"| node_auth
node_standardroutes -->|"handles data API"| node_standard
node_auth -->|"reads/writes credentials"| node_db
node_auth -->|"signs tokens"| node_jwt
node_standard -->|"queries data"| node_db
node_adminops -->|"queries admin data"| node_db
node_db -->|"uses"| node_sqlite
node_admin -->|"uses"| node_adminapp
node_adminapp -->|"shows"| node_loginview
node_adminapp -->|"shows"| node_workspace
node_loginview -->|"submits requests"| node_apiclient
node_workspace -->|"requests admin data"| node_apiclient
node_apiclient -->|"issues HTTP"| node_client
node_runtime -->|"serves public content"| node_publicfiles
node_visitor -->|"requests content"| node_publicfiles

click node_runtime "https://github.com/nandaleio/c_base/blob/main/src/main.c"
click node_mongoose "https://github.com/nandaleio/c_base/blob/main/src/libs/mongoose.c"
click node_standardroutes "https://github.com/nandaleio/c_base/blob/main/src/routes/standard-route.c"
click node_adminroutes "https://github.com/nandaleio/c_base/blob/main/src/routes/admin-route.c"
click node_auth "https://github.com/nandaleio/c_base/blob/main/src/controllers/auth-controller.c"
click node_standard "https://github.com/nandaleio/c_base/blob/main/src/controllers/standard-controller.c"
click node_adminops "https://github.com/nandaleio/c_base/blob/main/src/controllers/admin-controller.c"
click node_jwt "https://github.com/nandaleio/c_base/blob/main/src/utils/jwt.c"
click node_db "https://github.com/nandaleio/c_base/blob/main/src/db/db.c"
click node_sqlite "https://github.com/nandaleio/c_base/blob/main/src/libs/sqlite3.c"
click node_adminapp "https://github.com/nandaleio/c_base/blob/main/ui/src/App.vue"
click node_loginview "https://github.com/nandaleio/c_base/blob/main/ui/src/views/LoginView.vue"
click node_workspace "https://github.com/nandaleio/c_base/blob/main/ui/src/views/home/TablesView.vue"
click node_apiclient "https://github.com/nandaleio/c_base/blob/main/ui/src/services/api-service.ts"
click node_publicfiles "https://github.com/nandaleio/c_base/blob/main/src/main.c"

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_runtime,node_mongoose,node_publicfiles,node_client,node_admin toneBlue
class node_standardroutes,node_adminroutes,node_auth,node_standard,node_adminops,node_jwt toneAmber
class node_db,node_sqlite toneMint
class node_adminapp,node_loginview,node_workspace,node_apiclient toneRose
class node_visitor toneIndigo
```

## Components

### HTTP Server

- [Server Runtime](https://github.com/nandaleio/c_base/blob/main/src/main.c): `src/main.c`
- [Mongoose HTTP](https://github.com/nandaleio/c_base/blob/main/src/libs/mongoose.c): `src/libs/mongoose.c`
- [Public Files](https://github.com/nandaleio/c_base/blob/main/src/main.c): `src/main.c`

### API Domain

- [Standard Routes](https://github.com/nandaleio/c_base/blob/main/src/routes/standard-route.c): `src/routes/standard-route.c`
- [Admin Routes](https://github.com/nandaleio/c_base/blob/main/src/routes/admin-route.c): `src/routes/admin-route.c`
- [Authentication](https://github.com/nandaleio/c_base/blob/main/src/controllers/auth-controller.c): `src/controllers/auth-controller.c`
- [Standard Data API](https://github.com/nandaleio/c_base/blob/main/src/controllers/standard-controller.c): `src/controllers/standard-controller.c`
- [Admin Operations](https://github.com/nandaleio/c_base/blob/main/src/controllers/admin-controller.c): `src/controllers/admin-controller.c`
- [JWT Utilities](https://github.com/nandaleio/c_base/blob/main/src/utils/jwt.c): `src/utils/jwt.c`

### Persistence

- [Database Access](https://github.com/nandaleio/c_base/blob/main/src/db/db.c): `src/db/db.c`
- [SQLite Store](https://github.com/nandaleio/c_base/blob/main/src/libs/sqlite3.c): `src/libs/sqlite3.c`

### Admin Interface

- [Admin UI](https://github.com/nandaleio/c_base/blob/main/ui/src/App.vue): `ui/src/App.vue`
- [Login View](https://github.com/nandaleio/c_base/blob/main/ui/src/views/LoginView.vue): `ui/src/views/LoginView.vue`
- [Admin Workspace](https://github.com/nandaleio/c_base/blob/main/ui/src/views/home/TablesView.vue): `ui/src/views/home/TablesView.vue`
- [UI API Client](https://github.com/nandaleio/c_base/blob/main/ui/src/services/api-service.ts): `ui/src/services/api-service.ts`

### Other components

- **HTTP Client**
- **Admin User**
- **Public Visitor**

## Connections

- Server Runtime → Mongoose HTTP: listens via
- HTTP Client → Mongoose HTTP: sends HTTP
- Mongoose HTTP → Server Runtime: delivers events
- Server Runtime → Admin Routes: dispatches admin
- Server Runtime → Standard Routes: dispatches standard
- Admin Routes → Admin Operations: handles admin API
- Standard Routes → Authentication: handles auth
- Standard Routes → Standard Data API: handles data API
- Authentication → Database Access: reads/writes credentials
- Authentication → JWT Utilities: signs tokens
- Standard Data API → Database Access: queries data
- Admin Operations → Database Access: queries admin data
- Database Access → SQLite Store: uses
- Admin User → Admin UI: uses
- Admin UI → Login View: shows
- Admin UI → Admin Workspace: shows
- Login View → UI API Client: submits requests
- Admin Workspace → UI API Client: requests admin data
- UI API Client → HTTP Client: issues HTTP
- Server Runtime → Public Files: serves public content
- Public Visitor → Public Files: requests content
