FastAPIを使用したWebアプリケーション開発用テンプレート。
- 🚀 高速開発: 構造化されたテンプレート、ホットリロード、包括的なツール群
- 🏗️ モジュラーアーキテクチャ: クリーンなAPI設計とバージョン管理
- 🗄️ データベース統合: SQLAlchemy、PostgreSQL、Redis対応、マイグレーション管理
- 🐳 Docker対応: Docker Composeによる完全なコンテナ化
- 🔒 セキュリティ重視: BanditとSemgrepによる組み込みセキュリティスキャン
- 📊 監視機能: Sentry統合、New Relic APM、構造化ログ
- 🧪 コード品質: Ruffによる自動リント、フォーマット、型チェック
- このテンプレートを使用して新しいリポジトリを作成
- リポジトリをクローン:
git clone https://github.com/yourusername/your-api-name.git cd your-api-name
# プロジェクト名を設定
make project:init NAME="あなたのプロジェクト名"
# 環境ファイルをセットアップ
make env
# 依存関係をインストール
make dev:setupローカル開発(推奨 - ホットリロード付き):
# データベースサービスを起動
make local:up
# アプリケーションをuvでネイティブ実行
make local:serve
# または: uv run fastapi dev app/main.py --host 0.0.0.0 --port 8000Docker使用:
# データベース付きで起動
make up INCLUDE_DB=trueAPIサーバーが起動しました! 🎉
- API文書: http://localhost:8000/docs
- 管理画面: http://localhost:8001 (Adminer - データベース管理)
- 開発ガイド - API構築、データベース操作、Docker開発の完全ガイド
- デプロイメントガイド - Local/Dev/Prod環境へのデプロイ方法
- シークレット管理ガイド - SOPS + ageによる安全なシークレット管理
- クイックリファレンス - 開発に必要なコマンド一覧
app/
├── main.py # FastAPIエントリーポイント
├── api/ # APIエンドポイント(バージョン管理)
├── core/config.py # 設定管理
├── db/ # データベース層(モデル、スキーマ、CRUD)
├── static/ # 静的ファイル(CSS、JS、画像など)
├── templates/ # Jinja2テンプレート(HTMLファイル)
└── utils/ # ユーティリティ関数とヘルパー
主要機能:
- 構造化されたテンプレート: モデル、スキーマ、CRUD、ルーターの明確な分離
- データベース層: モデル、スキーマ、CRUD操作のクリーンな分離
- 設定システム: Pydanticバリデーション付き環境ベース設定
- エラーハンドリング: 包括的なエラートラッキングとユーザーフレンドリーな応答
- FastAPI - モダンで高速なPython Webフレームワーク
- SQLAlchemy - マイグレーション対応データベースORM
- Pydantic - データバリデーションと設定管理
- uv - Pythonパッケージ管理
- Ruff - 超高速リントとフォーマット
# 開発セットアップ
make dev:setup # 全依存関係をインストール
make env # テンプレートから.envファイルを作成
# コード品質
make format # Ruffでコードをフォーマット
make lint # コード品質をチェック
make type-check # mypy型チェック
make security:scan # セキュリティ分析を実行
make test # テストを実行
make test:cov # カバレッジ付きテスト
# ローカル開発(uv native + Docker DB)
make local:up # データベースサービス起動
make local:serve # アプリケーション起動(ホットリロード)
make local:down # サービス停止
# Docker操作(レガシー)
make up INCLUDE_DB=true # データベース付きで起動
make down # 全コンテナを停止
make logs # コンテナログを表示
# デプロイ(新規)
make dev:deploy # Dev環境デプロイ(Watchtower自動更新)
make prod:deploy # 本番環境デプロイ(確認付き)
make watchtower:setup # Watchtowerセットアップ(サーバーごとに1回)
# シークレット管理(SOPS + age)
make secrets:encrypt:dev # Dev環境変数を暗号化
make secrets:encrypt:prod # Prod環境変数を暗号化
make secrets:edit:dev # Dev環境変数を編集(自動再暗号化)
make secrets:edit:prod # Prod環境変数を編集(自動再暗号化)
# データベース
make db:migrate # データベースマイグレーションを適用
make db:revision:create NAME="説明" # 新しいマイグレーションを作成
make db:current # 現在のリビジョンを表示
make db:history # マイグレーション履歴を表示- APIエンドポイントを作成:
app/db/models/にモデルを作成app/db/schemas/にスキーマを作成app/db/crud/にCRUD操作を作成app/api/v1/にルーターを作成
- ルーターを登録:
app/api/v1/__init__.pyにルーターを追加 - マイグレーション:
make db:revision:create NAME="add_model" - テスト: 開発中は
make reloadでホットリロード
各側面の詳細なチュートリアルは開発ガイドを参照してください。
- リポジトリをフォーク
- 機能ブランチを作成
- 変更を加える
- テストとリントを実行:
make lint && make security:scan - プルリクエストを送信
このテンプレートはオープンソースで、MITライセンスの下で利用可能です。