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
| Layer | blockdata | Template | Direction |
|---|---|---|---|
| Frontend framework | React 19 + Vite SPA | Next.js 15 (App Router/RSC/SSR) | Ours — drop Next SSR/RSC |
| UI primitives | Tailwind v4 · Zustand · TanStack Query | + Radix UI | Same — keep ours |
| Icons | Tabler (1 standard) | lucide-react | Ours — swap to Tabler |
| Routing / i18n | Our SPA routing · English-first | next-intl, locale routes | Ours |
| Auth | Better Auth or Python JWT | FastAPI JWT + OAuth | Open — leaning Python if base |
| Backend framework | FastAPI | FastAPI | Adopt — same |
| ORM | SQLAlchemy | SQLAlchemy | Adopt — same |
| Migrations / DDL | Alembic (authority) | Alembic (18 migrations) | Adopt — baseline TBD |
| Admin | SQLAdmin | SQLAdmin | Adopt — same |
| Config | pydantic-settings | pydantic-settings + .env | Adopt — SOPS, not .env |
| Toolchain / lint | uv + Ruff | uv + Ruff | Adopt — same |
| Database | Neon Postgres | Postgres (Docker) | Adopt → Neon |
| API → FE seam | OpenAPI → typed TS | FastAPI OpenAPI | Adopt — same |
| Vector / RAG | Wanted | Milvus (+Qdrant/Chroma/pgvector) | Adopt — wanted |
| Background jobs | Wanted | Celery + Redis | Adopt — wanted |
| Object storage | Cloudflare R2 | MinIO / S3 | Swap → R2 |
| Host / topology | Fly.io | Docker Compose / K8s | Fly — compose = dev only |
| Secrets | SOPS | .env | SOPS — replace .env |
| Billing | Later | Stripe | Planned |
| Observability | TBD | Logfire / Sentry / Prometheus | Adopt — ratify |
| Governance | Contracts + ADR | none | Amend 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.
Workbench File Inventory
Per-file analysis of the 81-file blockdata/workbench import closure — the standardization substrate before porting.
Implementation Log
Per-slice build journal — one page per implementation step, documenting what was built, dependencies, data, API, contracts, stack decisions, and verification.