# saran-3012/logbase architecture

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

- Interactive diagram: https://gitdiagram.com/saran-3012/logbase
- Repository: https://github.com/saran-3012/logbase

## Overview

Logbase is a self-hosted log ingestion and monitoring server. Users register and authenticate through the web UI, configure collectors, send batches over HTTP or UDP, and explore stored logs in the dashboard. The main stages are collector configuration and authentication, payload parsing and persistence, then search and monitoring; OAuth token issuance and automatic retention are additional product capabilities. Query construction, SQL compilation, and the libSQL adapter form the internal database layer. Some feature links rely on README documentation because their route or UI implementation was not excerpted.

Main entry points: [`src/server.js`](https://github.com/saran-3012/logbase/blob/master/src/server.js) (HTTP server), [`src/db/database.js`](https://github.com/saran-3012/logbase/blob/master/src/db/database.js) (Database service), [`src/ingest/listenerManager.js`](https://github.com/saran-3012/logbase/blob/master/src/ingest/listenerManager.js) (UDP listeners), [`src/routes/collectors.js`](https://github.com/saran-3012/logbase/blob/master/src/routes/collectors.js) (Collector management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and Access"]
  node_auth_routes["Account routes<br/>[auth.js]"]
  node_session_auth["Session auth<br/>[sessionAuth.js]"]
  node_oauth["OAuth tokens<br/>[oauth.js]"]
end

subgraph group_ingest["Collectors and Ingestion"]
  node_server["HTTP server<br/>[server.js]"]
  node_collectors["Collector management<br/>[collectors.js]"]
  node_registry["Collector registry<br/>[registry.js]"]
  node_collector_auth["Collector auth<br/>[collectorAuth.js]"]
  node_logs_route["HTTP log intake<br/>[logs.js]"]
  node_formats["Batch parsing<br/>[formats.js]"]
  node_udp_listeners["UDP listeners<br/>[listenerManager.js]"]
  node_udp_transport["UDP transport<br/>[udp.js]"]
  node_pipeline["Event pipeline<br/>[pipeline.js]"]
end

subgraph group_monitoring["Log Monitoring"]
  node_dashboard["Web dashboard<br/>[dashboard.js]"]
  node_logs_ui["Logs explorer<br/>[logs.js]"]
  node_retention["Log retention<br/>[server.js]"]
end

subgraph group_storage["Persistence Layer"]
  node_database["Database service<br/>[database.js]"]
  node_query["Query builders"]
  node_compiler["SQL compiler<br/>[base.js]"]
  node_adapter["libSQL adapter<br/>[libsql.js]"]
  node_log_store[("Log database<br/>[tables.json]")]
end

node_user(("User"))
node_log_sender(("Log sender"))
node_udp_sender(("UDP sender"))
node_browser(("Web browser"))

node_user -->|"uses"| node_browser
node_browser -->|"sends requests"| node_server
node_server -->|"routes"| node_auth_routes
node_server -->|"routes"| node_oauth
node_server -->|"routes"| node_logs_route
node_server -->|"routes"| node_collectors
node_server -->|"starts"| node_udp_listeners
node_auth_routes -->|"queries users"| node_database
node_session_auth -->|"checks users"| node_database
node_oauth -->|"stores tokens"| node_database
node_collectors -->|"guards routes"| node_session_auth
node_collectors -->|"uses"| node_registry
node_collectors -->|"manages listeners"| node_udp_listeners
node_log_sender -->|"sends batches"| node_server
node_logs_route -->|"authenticates intake"| node_collector_auth
node_logs_route -->|"parses payload"| node_formats
node_logs_route -->|"stores events"| node_pipeline
node_udp_sender -->|"sends datagrams"| node_udp_transport
node_udp_listeners -->|"creates listeners"| node_udp_transport
node_udp_listeners -->|"parses datagrams"| node_formats
node_udp_listeners -->|"stores events"| node_pipeline
node_pipeline -->|"writes events"| node_database
node_browser -->|"loads"| node_dashboard
node_dashboard -->|"queries and exports"| node_logs_ui
node_logs_ui -->|"searches logs"| node_database
node_server -->|"schedules purge"| node_retention
node_retention -->|"deletes old logs"| node_database
node_database -->|"creates adapter"| node_adapter
node_database -->|"uses builders"| node_query
node_adapter -->|"uses compiler"| node_compiler
node_adapter -.->|"persists records"| node_log_store

click node_server "https://github.com/saran-3012/logbase/blob/master/src/server.js"
click node_auth_routes "https://github.com/saran-3012/logbase/blob/master/src/routes/auth.js"
click node_session_auth "https://github.com/saran-3012/logbase/blob/master/src/middleware/sessionAuth.js"
click node_oauth "https://github.com/saran-3012/logbase/blob/master/src/routes/oauth.js"
click node_collectors "https://github.com/saran-3012/logbase/blob/master/src/routes/collectors.js"
click node_registry "https://github.com/saran-3012/logbase/blob/master/src/ingest/registry.js"
click node_collector_auth "https://github.com/saran-3012/logbase/blob/master/src/middleware/collectorAuth.js"
click node_logs_route "https://github.com/saran-3012/logbase/blob/master/src/routes/logs.js"
click node_formats "https://github.com/saran-3012/logbase/blob/master/src/ingest/formats.js"
click node_udp_listeners "https://github.com/saran-3012/logbase/blob/master/src/ingest/listenerManager.js"
click node_udp_transport "https://github.com/saran-3012/logbase/blob/master/src/ingest/transports/udp.js"
click node_pipeline "https://github.com/saran-3012/logbase/blob/master/src/ingest/pipeline.js"
click node_dashboard "https://github.com/saran-3012/logbase/blob/master/public/js/dashboard.js"
click node_logs_ui "https://github.com/saran-3012/logbase/blob/master/src/routes/logs.js"
click node_retention "https://github.com/saran-3012/logbase/blob/master/src/server.js"
click node_database "https://github.com/saran-3012/logbase/blob/master/src/db/database.js"
click node_query "https://github.com/saran-3012/logbase/tree/master/src/db/query"
click node_compiler "https://github.com/saran-3012/logbase/blob/master/src/db/compilers/base.js"
click node_adapter "https://github.com/saran-3012/logbase/blob/master/src/db/adapters/libsql.js"
click node_log_store "https://github.com/saran-3012/logbase/blob/master/src/db/schema/tables.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_auth_routes,node_session_auth,node_oauth,node_user,node_browser toneBlue
class node_server,node_collectors,node_registry,node_collector_auth,node_logs_route,node_formats,node_udp_listeners,node_udp_transport,node_pipeline toneAmber
class node_dashboard,node_logs_ui,node_retention toneMint
class node_database,node_query,node_compiler,node_adapter,node_log_store toneRose
class node_log_sender,node_udp_sender toneIndigo
```

## Components

### Identity and Access

- [Account routes](https://github.com/saran-3012/logbase/blob/master/src/routes/auth.js): `src/routes/auth.js`
- [Session auth](https://github.com/saran-3012/logbase/blob/master/src/middleware/sessionAuth.js): `src/middleware/sessionAuth.js`
- [OAuth tokens](https://github.com/saran-3012/logbase/blob/master/src/routes/oauth.js): `src/routes/oauth.js`

### Collectors and Ingestion

- [HTTP server](https://github.com/saran-3012/logbase/blob/master/src/server.js): `src/server.js`
- [Collector management](https://github.com/saran-3012/logbase/blob/master/src/routes/collectors.js): `src/routes/collectors.js`
- [Collector registry](https://github.com/saran-3012/logbase/blob/master/src/ingest/registry.js): `src/ingest/registry.js`
- [Collector auth](https://github.com/saran-3012/logbase/blob/master/src/middleware/collectorAuth.js): `src/middleware/collectorAuth.js`
- [HTTP log intake](https://github.com/saran-3012/logbase/blob/master/src/routes/logs.js): `src/routes/logs.js`
- [Batch parsing](https://github.com/saran-3012/logbase/blob/master/src/ingest/formats.js): `src/ingest/formats.js`
- [UDP listeners](https://github.com/saran-3012/logbase/blob/master/src/ingest/listenerManager.js): `src/ingest/listenerManager.js`
- [UDP transport](https://github.com/saran-3012/logbase/blob/master/src/ingest/transports/udp.js): `src/ingest/transports/udp.js`
- [Event pipeline](https://github.com/saran-3012/logbase/blob/master/src/ingest/pipeline.js): `src/ingest/pipeline.js`

### Log Monitoring

- [Web dashboard](https://github.com/saran-3012/logbase/blob/master/public/js/dashboard.js): `public/js/dashboard.js`
- [Logs explorer](https://github.com/saran-3012/logbase/blob/master/src/routes/logs.js): `src/routes/logs.js`
- [Log retention](https://github.com/saran-3012/logbase/blob/master/src/server.js): `src/server.js`

### Persistence Layer

- [Database service](https://github.com/saran-3012/logbase/blob/master/src/db/database.js): `src/db/database.js`
- [Query builders](https://github.com/saran-3012/logbase/tree/master/src/db/query): `src/db/query`
- [SQL compiler](https://github.com/saran-3012/logbase/blob/master/src/db/compilers/base.js): `src/db/compilers/base.js`
- [libSQL adapter](https://github.com/saran-3012/logbase/blob/master/src/db/adapters/libsql.js): `src/db/adapters/libsql.js`
- [Log database](https://github.com/saran-3012/logbase/blob/master/src/db/schema/tables.json): `src/db/schema/tables.json`

### Other components

- **User**
- **Log sender**
- **UDP sender**
- **Web browser**

## Connections

- User → Web browser: uses (evidence: `README.md`)
- Web browser → HTTP server: sends requests (evidence: `README.md`)
- HTTP server → Account routes: routes (evidence: `src/server.js`)
- HTTP server → OAuth tokens: routes (evidence: `src/server.js`)
- HTTP server → HTTP log intake: routes (evidence: `src/server.js`)
- HTTP server → Collector management: routes (evidence: `src/server.js`)
- HTTP server → UDP listeners: starts (evidence: `src/server.js`)
- Account routes → Database service: queries users (evidence: `src/routes/auth.js`)
- Session auth → Database service: checks users (evidence: `src/middleware/sessionAuth.js`)
- OAuth tokens → Database service: stores tokens (evidence: `src/routes/oauth.js`)
- Collector management → Session auth: guards routes (evidence: `src/routes/collectors.js`)
- Collector management → Collector registry: uses (evidence: `src/routes/collectors.js`)
- Collector management → UDP listeners: manages listeners (evidence: `src/routes/collectors.js`)
- Log sender → HTTP server: sends batches (evidence: `README.md`)
- HTTP log intake → Collector auth: authenticates intake (evidence: `src/routes/logs.js`)
- HTTP log intake → Batch parsing: parses payload (evidence: `src/routes/logs.js`)
- HTTP log intake → Event pipeline: stores events (evidence: `src/routes/logs.js`)
- UDP sender → UDP transport: sends datagrams (evidence: `README.md`)
- UDP listeners → UDP transport: creates listeners (evidence: `src/ingest/listenerManager.js`)
- UDP listeners → Batch parsing: parses datagrams (evidence: `src/ingest/listenerManager.js`)
- UDP listeners → Event pipeline: stores events (evidence: `src/ingest/listenerManager.js`)
- Event pipeline → Database service: writes events (evidence: `src/ingest/pipeline.js`)
- Web browser → Web dashboard: loads (evidence: `README.md`)
- Web dashboard → Logs explorer: queries and exports (evidence: `README.md`)
- Logs explorer → Database service: searches logs (evidence: `src/routes/logs.js`)
- HTTP server → Log retention: schedules purge (evidence: `src/server.js`)
- Log retention → Database service: deletes old logs (evidence: `src/server.js`)
- Database service → libSQL adapter: creates adapter (evidence: `src/db/database.js`)
- Database service → Query builders: uses builders (evidence: `src/db/database.js`)
- libSQL adapter → SQL compiler: uses compiler (evidence: `src/db/adapters/libsql.js`)
- libSQL adapter → Log database: persists records
