The template commits to 1 full product stack
Full Stack FastAPI Template answers the questions left after choosing FastAPI. SQLModel connects the API to PostgreSQL, Pydantic handles validation and settings, and migrations track schema changes. The browser application uses React, TypeScript, Vite, Tailwind CSS, and shadcn/ui. Authentication, password recovery, an admin screen, sample item management, generated API calls, local mail capture, backend tests, Playwright tests, and CI are already connected. That can remove weeks of setup when these are the same choices your team would make.
The repository is source code, not an updatable dependency. Once copied and customized, every authentication route, migration, workflow, and container definition belongs to the adopter. Upstream improvements will not arrive automatically. The sample Items model and screens demonstrate the intended pattern, but they should be removed early if the product does not need them. Waiting until real migrations and client calls depend on the sample makes cleanup harder.
A 1,118 MB install reflects the frontend toolchain
Our Bun installation put 723 packages on disk and used 1,118 MB. That is a large dependency footprint for a 1.8 MB checkout, although it includes the frontend build and browser-testing ecosystem rather than the Python backend environment. Teams should plan dependency caching in CI and keep lockfiles under review. The repository has 252 files, about 14,489 lines of source, 15 CI workflow files, Compose configuration, and monorepo workspaces.
Local work uses several tools. The development guide runs PostgreSQL and Mailpit through Docker Compose, the backend through uv, and Vite through Bun. Swagger UI, the frontend, and captured mail each use separate local ports. Compose can run the assembled application, but contributors still need to understand which process owns the database, migrations, API, asset server, and email preview. The setup is well documented; it is not a one-command minimal project.
What happened when we ran it
Our sandbox cloned commit 68adb40 into an unprivileged container with 3 CPUs and 8 GB of RAM. The Bun install succeeded in 49 seconds, adding 723 packages and taking 1,118 MB on disk. The root monorepo had no build script or target, so our harness skipped build rather than recording a pass. That matters because installation alone does not prove either application compiles.
The test command stopped after 11 seconds with exit 1. Playwright reported 1 failed setup test at tests/auth.setup.ts:6:1, named authenticate, and 61 tests did not run. The log references test-results/auth.setup.ts-authenticate-setup-retry2/error-context.md, but its supplied tail does not contain the underlying error. We can say the suite could not establish its authenticated state in our sandbox; we cannot say whether configuration, startup, credentials, or code caused it.
Generated clients keep 2 codebases in sync
The strongest architectural choice is the generated TypeScript client. Backend schemas and routes can feed frontend request types, reducing hand-copied payload definitions. TanStack Query manages server data and TanStack Router handles frontend routes. On the Python side, SQLModel keeps Pydantic-style models close to SQLAlchemy behavior, with Alembic migrations included. This arrangement gives a small team clear places for models, routes, CRUD code, components, queries, and tests.
It does not make the API and UI one codebase. A schema change can still require a migration, regenerated client, frontend adjustment, and updated end-to-end test. The root package offered no single build target in our run, so teams should define an explicit verification command for their fork. A template is safer when CI proves backend formatting and tests, frontend compilation, client generation, and Playwright behavior together.
Authentication is a starting point, not an account platform
The included application has secure password hashing, JWT authentication, email password recovery, and a first superuser. Those basics are useful and testable. Product requirements such as multi-factor authentication, social identity, organizations, billing roles, session revocation, and detailed authorization remain adopter work. Current pull requests discuss password recovery behavior and database-session cleanup, which are exactly the kinds of edges an inherited account system needs reviewed.
Our Playwright run failed at the authentication setup before 61 tests executed. That makes the auth path the first thing to validate after generating a project. Use real development secrets, run database preparation, confirm mail settings or local fallbacks, and exercise login in the same Compose topology CI will use. Do not build product features on top of the sample account flow until that baseline passes consistently.
Deployment offers 2 opinionated routes
FastAPI Cloud is the hosted route described by the project. The self-hosted route uses Docker Compose and Traefik, with DNS, HTTPS, environment variables, a persistent PostgreSQL database, and deployment automation left to the operator. Either route still needs backups, secret rotation, monitoring, mail delivery, migration safety, and rollback. A Compose file is a useful production starting point, but it is not an operations team.
Release 0.12.0 shipped on 2026-08-12, and the repository was pushed on 2026-08-25. GitHub listed only 8 open issues and PRs, with recent proposals focused on Docker dependency drift and local test behavior. The project is current and unusually well documented. Adopt it when nearly every stack decision is already settled. If PostgreSQL, React, Bun, or the deployment shape is still disputed, a smaller FastAPI skeleton leaves fewer assumptions to unwind.

