Solution StrategyΒΆ
Guiding principles:
- Favor cryptographic integrity and verifiability for all user generated content.
- Decouple client UX from chain latency using off-chain signed documents and server side validation.
- Derive client keys deterministically from user seed material with a Catalyst specific path.
- Use on-chain registrations only for roles and voting power to minimize on-chain dependencies.
Key decisions:
- Backend in Rust with
poemandpoem_openapito provide typed APIs and OpenAPI artifacts. - PostgreSQL as the event system of record with versioned documents and templates.
- Scylla, a Cassandra compatible database, for scalable chain indexing and caches used by RBAC and stake queries.
- COSE over CBOR as the signed document container with Ed25519 signatures.
- UUIDv7 for sortable, globally unique document and version IDs.
- Flutter for cross-platform clients with Drift for local persistence and offline resilience.
- WASM based Rust libraries for compression and key derivation to keep a single implementation.
Quality goal alignment:
- Usability via fast local reads, progressive loading, and simple flows for new users.
- Security via explicit signing, deterministic key management, and server side checks.
- Reliability via idempotent PUT semantics, content addressed references, and metrics.
- Scalability via stateless APIs, pagination, and dedicated index storage.