JWT 認証機能付きの Todo アプリケーションです。ユーザー登録、ログイン、認証が必要なタスク管理機能を提供します。
- ユーザー登録とログイン
- JWT(JSON Web Token)ベースの認証
- 認証が必要なタスク管理(CRUD 操作)
- セキュアなパスワードハッシュ化
- トークンベースのセッション管理
- FastAPI
- SQLAlchemy
- MySQL
- UV
- Docker
- 認証・セキュリティ:
- JWT (JSON Web Token)
- Passlib (bcrypt)
- Python-JOSE
- React
- Axios
- CSS3
- 認証機能:
- Context API for 状態管理
- ローカルストレージでのトークン管理
- 認証ガード
- リポジトリのクローン:
git clone https://github.com/ks415/fastapi-todo-app.git
cd fastapi-todo-app- Docker で環境を起動:
docker-compose up -d- アプリケーションにアクセス:
- フロントエンド: http://localhost:3000
- バックエンド API: http://localhost:8000
- API ドキュメント: http://localhost:8000/docs
- http://localhost:3000 にアクセス
- 「新規登録」をクリック
- ユーザー名、メールアドレス、パスワードを入力
- 「登録」ボタンをクリック
- 登録完了後、ログイン画面に自動で切り替わります
- ユーザー名とパスワードを入力
- 「ログイン」ボタンをクリック
- ログイン後、認証されたユーザーのみがタスクの作成、編集、削除が可能
- ログアウトするまでセッションが維持されます
POST /auth/register- ユーザー登録POST /auth/token- ログイン(JWT トークン取得)GET /auth/me- 現在のユーザー情報取得
GET /tasks- タスク一覧取得POST /tasks- タスク作成PUT /tasks/{id}- タスク更新DELETE /tasks/{id}- タスク削除PUT /tasks/{id}/done- タスク完了マークDELETE /tasks/{id}/done- タスク完了解除
バックエンド:
docker-compose up backendフロントエンド:
docker-compose up frontenddocker-compose run --rm backend uv run pytest- UV のインストール:
pip install uv- 依存関係のインストール:
uv sync- データベースのマイグレーション:
# データベースコンテナを起動
docker-compose up -d db
# マイグレーション実行
uv run python api/migrate_db.py- アプリケーションの実行:
uv run uvicorn api.main:app --reload- テストの実行:
uv run pytest- bcrypt による強力なパスワードハッシュ化
- ソルト付きハッシュで辞書攻撃を防御
- HS256 アルゴリズムによる署名
- 30 分間の有効期限
- 自動トークン検証
- 全てのタスク関連 API で認証が必須
- 無効なトークンの場合は 401 エラーを返却
- CORS 設定によるクロスオリジン制御
本番環境では以下の環境変数を設定してください:
# JWT秘密鍵(本番環境では必ず変更)
SECRET_KEY=your-super-secret-key-here
# データベース設定
DB_URL=mysql+pymysql://user:password@host:port/database
# トークン有効期限(分)
ACCESS_TOKEN_EXPIRE_MINUTES=30- ブラウザのローカルストレージをクリアしてください
- トークンの有効期限が切れている可能性があります
- MySQL コンテナが起動していることを確認してください
- データベースのマイグレーションが実行されていることを確認してください