React + Go + MongoDBで構築されたシンプルなTODOリストアプリケーションです。
- React 18.2
- Axios(HTTP通信)
- CSS3(カスタムスタイリング)
- Go 1.21
- Gorilla Mux(ルーティング)
- MongoDB Driver
- MongoDB
- Docker
- Docker Compose
- ✅ TODOの追加
- ✅ TODOの編集
- ✅ TODOの削除
- ✅ TODOの完了/未完了切り替え
- ✅ 統計情報の表示(全体、完了、未完了の件数)
todolist/
├── docker-compose.yml          # Docker Compose設定
├── backend/                    # Goバックエンド
│   ├── Dockerfile
│   ├── go.mod
│   ├── main.go                # メインAPIサーバー
│   └── models/
│       └── todo.go            # TODOデータモデル
├── frontend/                   # Reactフロントエンド
│   ├── Dockerfile
│   ├── package.json
│   ├── public/
│   │   └── index.html
│   └── src/
│       ├── App.js             # メインアプリケーション
│       ├── App.css
│       ├── index.js
│       ├── index.css
│       └── components/
│           ├── TodoList.js    # TODOリストコンポーネント
│           └── TodoList.css
└── README.md
- Docker
- Docker Compose
- リポジトリのクローン(または移動)
cd /Users/kimdonghyun/Desktop/workspace/todolist- Docker Composeでアプリケーション全体を起動
docker-compose up --build- ブラウザでアクセス
- フロントエンド: http://localhost:3000
- バックエンドAPI: http://localhost:8080
- MongoDB: localhost:27017
docker-compose downデータベースのボリュームも削除する場合:
docker-compose down -vすべてのTODOを取得
レスポンス例:
[
  {
    "id": "507f1f77bcf86cd799439011",
    "title": "買い物に行く",
    "completed": false,
    "createdAt": "2024-01-01T00:00:00Z",
    "updatedAt": "2024-01-01T00:00:00Z"
  }
]新しいTODOを作成
リクエストボディ:
{
  "title": "新しいTODO"
}TODOを更新
リクエストボディ:
{
  "title": "更新されたTODO",
  "completed": true
}TODOを削除
cd backend
go mod download
go run main.go環境変数 MONGO_URI でMongoDB接続文字列を設定できます。
cd frontend
npm install
npm start環境変数 REACT_APP_API_URL でバックエンドURLを設定できます。
docker-compose.ymlのポート番号を変更してください:
- フロントエンド: 3000 → 任意のポート
- バックエンド: 8080 → 任意のポート
- MongoDB: 27017 → 任意のポート
- Dockerが起動しているか確認
- ログを確認: docker-compose logs
- コンテナを再構築: docker-compose up --build --force-recreate
MIT