Skip to content

Latest commit

 

History

History
78 lines (59 loc) · 3.41 KB

File metadata and controls

78 lines (59 loc) · 3.41 KB

Technical stack

Canonical overview of languages, libraries, and tooling used in this repository. Exact versions are whatever your package-lock.json resolved; the tables below match direct dependencies declared in workspace package.json files (major tools called out explicitly).

Language and runtime

Item Notes
Node.js >= 20 (engines in root package.json)
JavaScript ES modules ("type": "module" in packages); no in-repo TypeScript compiler
JSDoc Shared field vocabulary and types in @http-logs/contracts and across packages
JSON Process config, dashboard query contracts; JSON Schema under packages/contracts/schemas/
YAML Traffic family registry source (packages/categorization); consumed at build/check time

Monorepo and quality

Item Role
npm Package manager; workspaces (apps/*, packages/*)
ESLint 9 Flat config (eslint.config.js): eslint-plugin-import boundary zones
node --test Root test runner (npm test)
Ajv JSON Schema validation (root dev + categorization + cli; config and rule documents)
yaml (package) Parse registry YAML in scripts/build-traffic-registry.mjs (codegen / --check)

Data layer

Item Role
SQLite Single-file analytics database
better-sqlite3 Native Node binding; synchronous API for process, dashboard API (read-only), migrations
SQL Canonical schema packages/analytics-store/migrations/schema.sql

CLIs and HTTP API

Item Role
commander CLI parsing: apps/cli (process), apps/dashboard-api
Node http Dashboard API server (no Express/Fastify); GET + OPTIONS JSON handlers
LOGWICK_ANALYTICS_DB (optional) Operator env: default path to analytics .db for dashboard-api when --db is omitted
Node fs / readline JSONL ingestion in process

Classification pipeline

Item Role
Generated registry traffic-family-registry.yamlpackages/categorization/src/generated/traffic-registry.runtime.mjs via root script
Ajv Validates compiled UA / registry payloads where used

Dashboard UI (apps/dashboard-ui)

Item Role
Static HTML/CSS/JS No build step; files served by dashboard-api (serve-ui.js)
ECharts (CDN) Timeseries, category donut, Sankey flow charts
Native <input type="date"> UTC date range controls (js/date-range.js)

Workspace packages (summary)

Package Key tech
@http-logs/contracts JSDoc, JSON Schema files, small pure JS helpers; no npm runtime deps
@http-logs/categorization Ajv
@http-logs/analytics-store better-sqlite3
@http-logs/cli commander, Ajv; wires categorization + store
@http-logs/dashboard-api commander, better-sqlite3
apps/dashboard-ui Static assets (not a workspace npm package)

External data formats (operator side)

Format Use
JSONL One JSON object per line — primary ingest into process

Related