sethucms
The project

What to build

Components

ComponentPurposeMVP
packages/coreCanonical content model, query AST, capability flags, errorsYes
protocol/Language-neutral adapter contract (adapter.proto + OpenAPI)Yes
packages/adapter-sdkBase adapter, registry, conformance test kitYes
packages/adapters/*One adapter per database6 adapters
packages/vaultEnvelope encryption, KMS, key rotation, cloud-identity tokensYes
packages/authOIDC, RBAC/ABAC, field and row rulesYes
packages/auditAppend-only audit writer with redactionYes
packages/network-guardSSRF blocklist, TLS rules, egress and tunnelsYes
apps/apiGateway: REST, GraphQL, OpenAPIYes
apps/workerIsolated adapter runners, introspection jobs, realtimeYes
apps/adminEditor/admin UIYes
db/control-planeMigrations for tenants, connections, metadata, permissions, auditYes
sdk-tsHand-tuned TypeScript clientYes
sdks/dart, sdks/pythonGenerated from OpenAPI plus a small hand-written layerYes
infra/Docker, Terraform, KubernetesYes
tests/Conformance, security, end-to-endYes

Adapter families

FamilyAdaptersNotes
SQLpostgres, mysql, mssqlpostgres covers Supabase, Neon, RDS, Aurora, Cloud SQL, AlloyDB, Azure PostgreSQL
Documentmongodb, firestore, cosmosdbmongodb also covers Atlas, DocumentDB (feature gaps), Cosmos Mongo API
Key-valuedynamodb, rediskey conditions only; scans are explicit and costly
Realtimefirebase-rtdbpath-based
Analytics (read-only default)bigquery, redshiftlater
Other cloudspanner, athena, opensearchlater, on demand

Per-adapter files

Every adapter folder has the same layout so a new database is a copy-and-fill job:

package.json  tsconfig.json  README.md
src/index.ts  adapter.ts  config.schema.ts  connection.ts  auth.ts
src/introspect.ts  capabilities.ts  query-compiler.ts  type-map.ts
src/operations.ts  pagination.ts  realtime.ts  errors.ts
tests/conformance.test.ts  compiler.test.ts  introspect.test.ts  security.test.ts

Dependency rules (enforce in CI)

  • core imports nothing internal.
  • adapters/* depend only on core and adapter-sdk.
  • admin talks only to api or sdk-ts, never to a database.
  • Only api and worker may import vault.

Definition of done for an adapter

  1. Passes the shared conformance suite.
  2. Passes the security suite (injection, identifier allowlist).
  3. Declares accurate capability flags.
  4. Documents supported services, auth modes and limits in its README.