Storage & Portability
Wakeplane v0.2.0-beta.1 is SQLite-first.
Why SQLite First
Section titled “Why SQLite First”- Zero infrastructure dependency
- Simple deployment
- Single-writer model
- Embedded migrations
Current Constraints
Section titled “Current Constraints”- One writer
- File-based database
- No distributed or multi-writer deployment
- Single-connection model
Configuration
Section titled “Configuration”WAKEPLANE_DB_PATH=./wakeplane.dbWhat Is Stored
Section titled “What Is Stored”- Schedules
- Runs
- Leases
- Dead letters
- Receipts
All timestamps are stored as UTC RFC3339 strings. IDs are application-generated ULIDs stored as text.
What Is Already Portable
Section titled “What Is Already Portable”Everything above internal/store is already portable. The planner, dispatcher, API, CLI, and domain logic do not depend on SQLite internals.
What Must Change Before Postgres
Section titled “What Must Change Before Postgres”| Change | Effort |
|---|---|
| Driver and connection config | Small |
| Remove SQLite PRAGMAs | Trivial |
Timestamp columns -> TIMESTAMPTZ | Medium |
Boolean columns -> BOOLEAN | Small |
JSON columns -> JSONB | Small |
INSERT OR REPLACE -> ON CONFLICT DO UPDATE | Small |
julianday() replacement | Small |
| Error detection updates | Small |
The scope is intentionally contained to the store package and migrations.