Spring Boot (backend) + Next.js (frontend) で構成された EC サイトのサンプルプロジェクトです。
backend/— Spring Boot API(詳細README)frontend/— Next.js フロントエンド(詳細README)infrastructure/— Terraform (AWS: VPC / ECR / RDS / ALB / ECS / CodePipeline)
| ツール | バージョン目安 |
|---|---|
| Docker / docker-compose | 最新 |
| Java | 25 |
| Node.js | 20 以上 |
| npm | Node.js に同梱のもの |
git clone <このリポジトリのURL>
cd ec-apicd backend
# DB(PostgreSQL) と Redis を起動
docker-compose up -dsrc/main/resources/application.yml の DB ユーザー名・パスワードを環境に合わせて確認・変更してください。
./gradlew bootRun- 起動時にテーブルが自動作成され、サンプル商品5件が投入されます。
- Swagger UI: http://localhost:8080/swagger-ui/index.html
- 動作確認用のログイン:
admin@example.com/password
別ターミナルで:
cd frontend
npm install
# 環境変数ファイルを作成(デフォルトのままで backend: http://localhost:8080 を参照)
cp .env.local.example .env.local
npm run devhttp://localhost:3000 をブラウザで開きます。
frontend 側の型定義(src/lib/api/schema.d.ts)を再生成します(backend 起動中に実行)。
cd frontend
npm run generate:api-types| 症状 | 原因・対処 |
|---|---|
docker-compose up でポート競合エラー |
5432(PostgreSQL)/6379(Redis)がローカルで既に使われていないか確認 |
| frontend から API が呼べない | .env.local の NEXT_PUBLIC_API_BASE_URL が backend の起動先(既定 http://localhost:8080)と一致しているか確認 |
| API のレスポンス型がずれる/コンパイルエラー | backend の API を変更した後に npm run generate:api-types を実行し忘れていないか確認 |
| ログインできない | サンプルデータ投入直後は admin@example.com / password(管理者)を使用。DB を作り直した場合は再投入されているか確認 |
| 商品更新(PUT)が失敗する | 楽観ロック用の version をリクエストボディに含める必要あり(詳細は backend/README.md 参照) |
- GitHub Actions(
.github/workflows/ci.yml): push 時に Spotless チェック・テストを実行 - CodePipeline: GitHub → CodeBuild(Docker build → ECR push)→ ECS Run Task(Flyway でマイグレーション)→ ECS Fargate デプロイ
インフラの構築手順(Terraform)は infrastructure/terraform 配下、および backend/README.md の「terraform実行手順」を参照してください。
- API エンドポイント一覧・curl での動作確認例 → backend/README.md
- 画面構成・ディレクトリ構成・API 通信の仕組み → frontend/README.md