Direction under consideration: take the template's Python/FastAPI backend as the base; rebuild the frontend our way (reuse only its layout/structure). Verified by running it locally on 2026-06-03 (:10002 / :10008, full stack, login → dashboard). blockdata = our target · Template = what it ships · Direction = what the build does.

Stack, side by side

LayerblockdataTemplateDirection
Frontend frameworkReact 19 + Vite SPANext.js 15 (App Router/RSC/SSR)Ours — drop Next SSR/RSC
UI primitivesTailwind v4 · Zustand · TanStack Query+ Radix UISame — keep ours
IconsTabler (1 standard)lucide-reactOurs — swap to Tabler
Routing / i18nOur SPA routing · English-firstnext-intl, locale routesOurs
AuthBetter Auth or Python JWTFastAPI JWT + OAuthOpen — leaning Python if base
Backend frameworkFastAPIFastAPIAdopt — same
ORMSQLAlchemySQLAlchemyAdopt — same
Migrations / DDLAlembic (authority)Alembic (18 migrations)Adopt — baseline TBD
AdminSQLAdminSQLAdminAdopt — same
Configpydantic-settingspydantic-settings + .envAdopt — SOPS, not .env
Toolchain / lintuv + Ruffuv + RuffAdopt — same
DatabaseNeon PostgresPostgres (Docker)Adopt → Neon
API → FE seamOpenAPI → typed TSFastAPI OpenAPIAdopt — same
Vector / RAGWantedMilvus (+Qdrant/Chroma/pgvector)Adopt — wanted
Background jobsWantedCelery + RedisAdopt — wanted
Object storageCloudflare R2MinIO / S3Swap → R2
Host / topologyFly.ioDocker Compose / K8sFly — compose = dev only
SecretsSOPS.envSOPS — replace .env
BillingLaterStripePlanned
ObservabilityTBDLogfire / Sentry / PrometheusAdopt — ratify
GovernanceContracts + ADRnoneAmend first

Tags: Adopt take theirs · Same ours already matches · Ours use our choice · Swap infra change · Open / Planned / Amend = decide / later / governance gate.

Bottom line

  • Backend → adopt as base; it's already our stack (FastAPI · SQLAlchemy · Alembic · SQLAdmin · OpenAPI · uv · Ruff · pydantic-settings).
  • Frontend → rebuild ours (Vite · our designs · Tabler); reuse only their layout/structure.
  • Auth → the one open fork — and the governance gate: backend-base + auth land as an ADR-0001 amendment first.

On this page