FastAPIを使った認証付きタスク管理APIです。 JWT認証、CRUD、例外処理、pytestによるテスト、Dockerによる環境構築を備えています。
- FastAPI
- Python
- SQLAlchemy
- JWT (python-jose)
- Poetry(依存管理)
- Docker/ Docker Compose
- PostgreSQL(本番環境)
- pytest
- coverage
- SQLite(テスト環境)
※ テストでは高速化のため SQLite(:memory:)を使用しています。
※ 本番環境では PostgreSQL を使用しています。
- ユーザ登録(signup)
- ログイン(JWT発行)
- タスクのCRUD
- 自分のタスクのみ操作可能
- 認証エラー(Invalid token / Expired token / User not found)
app/
├── main.py # FastAPI アプリケーションのエントリポイント
├── routers/ # 認証・タスクのルーター
├── models/ # SQLAlchemy モデル
├── schemas/ # Pydantic スキーマ
├── core/ # 設定・セキュリティ(JWTなど)
├── db/ # DB セッション・初期化
tests/
├── test_auth.py
├── test_task.py
├── test_security.py
Dockerfile
docker-compose.yml
pyproject.toml
README.md
POST /auth/signup
POST /auth/login
GET /tasks/
POST /tasks/
PUT /tasks/{task_id}
DELETE /tasks/{task_id}
ルートディレクトリに .env ファイルを作成し、以下の環境変数を設定します。
DATABASE_URL=postgresql://<USER>:<PASSWORD>@<HOST>:5432/<DB_NAME>
JWT_SECRET=<任意の安全な文字列>
JWT_ALGORITHM=HS256
DATABASE_URLは PostgreSQL の接続情報です
(docker-compose の設定に合わせて<USER>,<PASSWORD>,<HOST>,<DB_NAME>を変更してください)JWT_SECRETは JWT の署名に使用する秘密鍵です
(十分に長いランダムな文字列を設定してください)JWT_ALGORITHMは署名アルゴリズムです
pytestによるテストを実装しています。
- 認証の正常系、異常系
- タスクCRUDの正常系、異常系
- 404(存在しないタスク)
- 403(他人のタスク)
- 例外処理を全て網羅
- coverageによるカバレッジ計測
CoverageのHTMLレポートは以下から生成できます。
poetry run coverage html
生成された 'htmlcov/index.html' をブラウザで開くと、各ファイルのカバレッジを視覚的に確認できます。
※coverageは100% ではありませんが、テスト価値の低い箇所は意図的に除外しています。必要なロジックは十分にカバーされています。
docker compose up --build
- Alembic によるマイグレーション
- Refresh Token の導入
- Nginx + Gunicorn による本番構成
This project is licensed under the MIT License.



