- .envファイルの作成
JWT_SECRET_KEY="任意の文字列"
EMAIL_VERIFICATION_SECRET_KEY="任意の文字列"
ANDROID_CLIENT_ID="GCPで取得したアンドロイドクライアントID" # 開発環境ではウェブ用のCLIENT_IDを使用
ADMIN_KEY=""
ADMIN_CLIENT_ID=""
ADMIN_CLIENT_SECRET=""
python -c 'import secrets; print(secrets.token_hex(32))'
- google apiのcredentials.jsonをルートに保存
- ecoduleのgoogle cloud platformでダウンロード
# google apiのtoken.jsonをsrc配下に保存
# ローカルで実行
Ecodule-Backend\src> python -m pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
Ecodule-Backend\src> python -m core.email_verification
# 全体統計集計の実行(予定)
# サーバーのcron設定例 (毎日深夜3時に実行)
0 3 * * * /usr/bin/python /path/to/your_project/scripts/calculate_overall_stats.py
docker-compose up -d --build
docker-compose exec app pip install -r ../requirements-dev.txt
docker-compose exec app pytest
docker-compose exec app alembic revision --autogenerate -m "マイグレーションの名前付け"
docker-compose exec app alembic upgrade head # 実行
your-project-name/
├── app/ # 👈 メインのソースコードを格納するディレクトリ
│ ├── __init__.py
│ ├── api/ # 👈 APIエンドポイント(ルーター)を定義
│ │ ├── __init__.py
│ │ ├── deps.py # 共通の依存性注入(例: ユーザー認証)
│ │ └── routers/
│ │ ├── __init__.py
│ │ ├── users.py # ユーザー関連API (/users, /auth/token)
│ │ └── app_data.py # アプリデータ関連API (/data)
│ │
│ ├── core/ # 👈 プロジェクトのコア設定
│ │ ├── __init__.py
│ │ └── config.py # 環境変数、秘密鍵などの設定管理
│ │
│ ├── crud/ # 👈 DB操作(CRUD)のロジック
│ │ ├── __init__.py
│ │ ├── base.py # 基本的なCRUD操作の基底クラス
│ │ └── crud_user.py # usersテーブルに対する操作
│ │
│ ├── db/ # 👈 データベース接続関連
│ │ ├── __init__.py
│ │ └── session.py # DBセッションの生成・管理
│ │
│ ├── models/ # 👈 SQLAlchemyのデータベースモデル
│ │ ├── __init__.py
│ │ └── user.py # usersテーブルのモデル定義
│ │
│ ├── schemas/ # 👈 Pydanticのデータ検証スキーマ
│ │ ├── __init__.py
│ │ └── user.py # APIで受け渡しするデータの型定義
│ │
│ ├── services/ # 👈 軽い演算などのビジネスロジック
│ │ ├── __init__.py
│ │ └── statistics.py # 統計計算などのサービス
│ │
│ ├── tasks/ # 👈 Celeryの非同期タスク
│ │ ├── __init__.py
│ │ └── process_data.py # 時間のかかるデータ処理タスク
│ │
│ ├── main.py # 👈 FastAPIアプリケーションのエントリーポイント
│ └── worker.py # 👈 Celeryワーカーのエントリーポイント
│
├── tests/ # 👈 自動テストコード
│
├── .env # 環境変数を記述(.gitignoreに必ず追加)
├── .gitignore # Gitの追跡から除外するファイルを設定
├── Dockerfile # アプリケーションのコンテナイメージを定義
├── docker-compose.yml # Dockerコンテナ群(アプリ、DB、Redis)を起動
├── pyproject.toml # [推奨] 依存パッケージ管理 (or requirements.txt)
└── README.md # プロジェクトの説明書
- モジュールをインポートする際のパスはsrc以下から記述してください
- 例:
from db.session
,from models.user
<!DOCTYPE html>
<html>
<head>
<title>Google Sign-In Test</title>
<script src="https://accounts.google.com/gsi/client" async defer></script>
</head>
<body>
<h1>Google IDトークン取得テスト</h1>
<p>ログイン後、ブラウザの開発者コンソールにIDトークンが出力されます。</p>
<div id="g_id_onload"
data-client_id="YOUR_WEB_CLIENT_ID.apps.googleusercontent.com"
data-callback="handleCredentialResponse">
</div>
<div class="g_id_signin" data-type="standard"></div>
<script>
function handleCredentialResponse(response) {
console.log("Encoded JWT ID token: " + response.credential);
}
</script>
</body>
</html>