Dart-first generic temporal datastore core
- Dart 99%
- Shell 0.8%
- Dockerfile 0.2%
| .codegraph | ||
| .forgejo/workflows | ||
| backend | ||
| database | ||
| docs | ||
| scripts | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| README.md | ||
steward-registry
steward-registry is a fresh Dart-first foundation for a generic temporal datastore.
The goal is to store data as context-agnostic facts first, and let downstream applications turn that data into information through context-specific read models and frontends.
Principles
- temporal by default
- append-only event logging
- JSONB payloads with explicit type definitions
- context-agnostic core storage
- separate backend and database runtime concerns
- local persistent data outside containers
Design notes
- Core model overview:
docs/architecture.md - Temporal lineage + validity ADR:
docs/adr-temporal-lineage-and-validity.md - Broader implementation roadmap:
docs/implementation-plan.md
Repository layout
.
├── backend/ # Dart backend/core service
├── database/ # PostgreSQL schema, migrations, seeds, local data
├── docs/ # Architecture and migration notes
├── scripts/ # Local development and validation scripts
└── .forgejo/ # CI configuration
Quick start
- Copy the environment file:
cp .env.example .env
- Start PostgreSQL:
./scripts/dev-up.sh db
- Run migrations:
./scripts/apply-migrations.sh
Inspect applied migrations:
./scripts/migration-status.sh
- Start the backend:
./scripts/dev-up.sh backend
- Check health:
curl http://localhost:8080/health
Scope of this initial setup
This repository intentionally starts with:
- a clean temporal datastore skeleton
- a separate PostgreSQL runtime
- a separate Dart backend runtime
- baseline migration validation
- tracked, idempotent migration application
It intentionally does not carry over the old domain model from huig_flow_state as runtime truth. That project is treated as a reference source only.