mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-04 14:22:09 +03:00
T-30 — ADRs:
- 6 ADRs: SQLite, Fallback Strategy, OAuth, JS+JSDoc, Single-Tenant, Translator Registry
T-33 — JSDoc Coverage:
- Full JSDoc on all new modules (100% exported functions documented)
T-35 — Accessibility:
- a11yAudit.js: lightweight WCAG AA checker (aria-label, dialog role, alt text, labels)
T-38 — Password Reset CLI:
- bin/reset-password.mjs: interactive CLI tool for admin password reset
T-39 — Playwright Specs:
- tests/e2e/responsiveSpecs.mjs: viewports (375/768/1280), 4 pages, test matrix
T-42 — Eval Framework:
- evalRunner.js: 4 strategies (exact, contains, regex, custom) + golden set (10 cases)
T-43 — Compliance:
- audit_log table, noLog opt-out per API key, LOG_RETENTION_DAYS cleanup
TASKS.md: 46/46 Concluído ✅
Tests: 144/144 pass (119 existing + 25 new)
45 lines
1.3 KiB
Markdown
45 lines
1.3 KiB
Markdown
# ADR-001: SQLite as Primary Data Store
|
|
|
|
**Date:** 2025-10-15
|
|
**Status:** Accepted
|
|
**Deciders:** @diegosouzapw
|
|
|
|
## Context
|
|
|
|
OmniRoute needs to persist usage data, call logs, API keys, and configuration. Options considered:
|
|
|
|
- PostgreSQL/MySQL — full RDBMS
|
|
- SQLite — embedded, zero-config
|
|
- JSON files (LowDB) — simple but fragile
|
|
- Redis — in-memory, ephemeral
|
|
|
|
The project targets self-hosted, single-tenant deployments where operational simplicity is paramount.
|
|
|
|
## Decision
|
|
|
|
Use **SQLite** via `better-sqlite3` as the primary data store.
|
|
|
|
- All usage tracking, call logs, API keys, and settings stored in a single `.db` file
|
|
- Synchronous reads (no async overhead for simple queries)
|
|
- WAL mode for concurrent read/write performance
|
|
- Automatic migration from legacy JSON format (`usageDb.json`) on first boot
|
|
|
|
## Consequences
|
|
|
|
### Positive
|
|
|
|
- Zero infrastructure — no database server needed
|
|
- Single-file backup (`cp data/omniroute.db backup/`)
|
|
- Fast queries for dashboard stats (< 5ms typical)
|
|
- Easy migration path from JSON format
|
|
|
|
### Negative
|
|
|
|
- Single-writer limitation (acceptable for single-tenant)
|
|
- No built-in replication
|
|
- Would need migration to PostgreSQL for multi-tenant cloud deployment
|
|
|
|
### Neutral
|
|
|
|
- File-based storage works well in Docker volumes
|