Decision: Data storage — embedded database choice #5

Closed
opened 2026-08-20 13:59:14 +02:00 by gaetan · 1 comment
Owner

Part of #1

Question

Which embedded database should store user progress and content?

Options:

  • SQLite (via mattn/go-sqlite3 or modernc.org/sqlite): Most feature-rich, SQL, mature
  • BadgerDB: Key-value, Go-native, good for simple patterns
  • BoltDB / bbolt: Key-value, simple, embedded
  • PostgreSQL/MySQL (self-hosted): If we want to support multi-user later

Considerations:

  • Single-user app — embedded is sufficient
  • Need relational queries? (user progress per card, categories, review history)
  • Migration needs? (content updates, schema changes)
  • Backup/restore simplicity
  • Connection pooling (SQLite handles this well)

This decision shapes the data layer architecture and deployment model.

Part of #1 ## Question Which embedded database should store user progress and content? Options: - **SQLite** (via mattn/go-sqlite3 or modernc.org/sqlite): Most feature-rich, SQL, mature - **BadgerDB**: Key-value, Go-native, good for simple patterns - **BoltDB / bbolt**: Key-value, simple, embedded - **PostgreSQL/MySQL** (self-hosted): If we want to support multi-user later Considerations: - Single-user app — embedded is sufficient - Need relational queries? (user progress per card, categories, review history) - Migration needs? (content updates, schema changes) - Backup/restore simplicity - Connection pooling (SQLite handles this well) This decision shapes the data layer architecture and deployment model.
Author
Owner

This is a duplicate of #10 (Data storage), which is already closed with the resolution: modernc.org/sqlite with hash-based sync, KNOWLEDGIFY_DB env var. Closing as duplicate.

This is a duplicate of #10 (Data storage), which is already closed with the resolution: modernc.org/sqlite with hash-based sync, KNOWLEDGIFY_DB env var. Closing as duplicate.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
gaetan/knowledgify#5
No description provided.