FastAPIとReact、PostgreSQLを組み合わせたフルスタックWebアプリのテンプレートです。JWT認証・ユーザー管理・アイテムCRUD・メール送信・Docker Compose構成・CIまで一式が最初から揃っています。READMEの「Use this template」ボタンから複製し、そのまま新規サービスの土台として使う設計です。
バックエンドはFastAPI+SQLModelでAPIとORMを実装し、Alembicでマイグレーションを管理します。backend/Dockerfileはマルチステージビルドで、まずbunでフロントエンドをビルドし、backend/app/frontendに静的ファイルとしてコピーします。backend/app/main.pyのapp.frontendによって、FastAPI自身が同一ドメインでUIとAPIの両方を配信する構成です。フロントエンドはfrontend/src/client配下の自動生成クライアントを使い、TanStack Query経由でAPIを呼び出します。docker-composeでPostgreSQL・Traefik・Mailpitなどのローカルサービスをまとめて起動し、GitHub Actionsのtest-backend・test-docker-compose・playwrightがCIで検証します。
- STEP 01
GitHubの「Use this template」で複製し、.envのSECRET_KEYやPOSTGRES_PASSWORDなど、シークレット値を書き換えます。
- STEP 02
docker compose upを実行すると、Traefikがリバースプロキシとして立ち上がり、PostgreSQL・backend・frontend・Mailpitのコンテナが順に起動します。
- STEP 03
ブラウザでhttp://localhostを開くとReact製のログイン画面が表示され、http://localhost/docsではSwagger UIの対話的APIドキュメントが見られます。
- STEP 04
backend/scripts/test.shを実行すると、pytestによるAPIルート・CRUD・認証周りのテストが走り、coverageレポートが出力されます。
- STEP 05
frontendでbun run generate-clientを実行すると、バックエンドのOpenAPIスキーマからTypeScriptクライアント一式が再生成されます。
- STEP 06
パスワードリセットを試すと、実メール送信の代わりにMailpit画面上に届いたメールが表示され、React Emailテンプレートの見た目を確認できます。
docker composeひとつで、ログイン画面・管理者用ユーザー管理画面・アイテムCRUD画面・ダークモード・Swagger UIまで揃った動作するアプリが手に入ります。バックエンドはAlembicでマイグレーション済みのPostgreSQLとpytestテスト一式を、フロントエンドは自動生成APIクライアントとPlaywright E2Eテストを同梱しています。
backend/DockerfileとpyproJect.tomlはいずれもPython 3.14以上を前提としており、比較的新しいランタイムが必要です。
フロントエンドのビルドにはbunが必須で、bun.lockに依存しているためnpmやyarnだけでの再現は想定されていません。
本番運用にはdeployment.mdやdeployment-docker-compose.mdに書かれた追加設定、TraefikのHTTPS用ドメイン設定などが別途必要です。
.envには開発用のダミーシークレットが含まれているため、実運用前に必ず値を差し替える必要があります。
FastAPIとReactの構成で新規サービスを素早く立ち上げたい開発者、特にJWT認証・管理画面・メール送信まで最初から欲しいチームに向いています。Dockerfile・pyproject.toml・READMEの記述内容は一貫しており、CIワークフローもtest-backend・test-docker-compose・playwrightなど実行内容が明記されているため、実際に動かさなくても構成の妥当性は判断できます。ただしPython 3.14やbunなど前提ツールの新しさは、着手前に確認しておく価値があります。