フル機能のTODOアプリケーション。TypeScript、React、Express、PostgreSQL、Prismaで構築されています。
- ✅ TODO の作成、編集、削除
- ✅ 完了状態の切り替え
- ✅ 優先度設定(高・中・低)
- ✅ 期限設定と期限切れ表示
- ✅ タグ/カテゴリ管理
- ✅ フィルタリング(完了状態、優先度、タグ)
- ✅ ソート機能(作成日時、期限、優先度、タイトル)
- ✅ レスポンシブデザイン(Tailwind CSS)
- Node.js 20+
- Express - RESTful API
- TypeScript - 型安全性
- Prisma - ORM
- PostgreSQL - データベース
- Zod - バリデーション
- React 18 - UI フレームワーク
- TypeScript - 型安全性
- Vite - ビルドツール
- Tailwind CSS - スタイリング
- React Context - 状態管理
- Node.js 20以上
- PostgreSQL 15以上(またはDocker)
- npm
-
依存関係のインストール
npm install
-
環境変数の設定
cp .env.example .env
.envファイルを編集してデータベース接続情報を設定:DATABASE_URL="postgresql://postgres:password@localhost:5432/todo_app" PORT=3000 NODE_ENV=development VITE_API_URL=http://localhost:3000
-
PostgreSQLの起動
Docker使用の場合:
docker run -d \ --name todo-postgres \ -e POSTGRES_PASSWORD=password \ -e POSTGRES_DB=todo_app \ -p 5432:5432 \ postgres:15-alpine
ローカルPostgreSQL使用の場合:
sudo service postgresql start createdb todo_app
-
データベースマイグレーション
npx prisma migrate dev --name init
-
シードデータの投入(オプション)
npm run db:seed
フロントエンドとバックエンドを同時に起動:
npm run dev個別に起動する場合:
# バックエンドのみ
npm run dev:server
# フロントエンドのみ
npm run dev:clientアプリケーションは以下のURLでアクセス可能:
- フロントエンド: http://localhost:5173
- バックエンドAPI: http://localhost:3000/api
Prisma Studioでデータベースを視覚的に管理:
npm run prisma:studio新しいマイグレーションを作成:
npx prisma migrate dev --name <migration-name>npm run buildビルド成果物:
dist/server/- サーバーコードdist/client/- クライアントコード
NODE_ENV=production npm startGET /api/todos- TODO一覧取得- クエリパラメータ:
completed,priority,tagIds
- クエリパラメータ:
POST /api/todos- TODO作成GET /api/todos/:id- TODO詳細取得PUT /api/todos/:id- TODO更新DELETE /api/todos/:id- TODO削除PATCH /api/todos/:id/toggle- 完了状態切り替え
GET /api/tags- タグ一覧取得POST /api/tags- タグ作成DELETE /api/tags/:id- タグ削除
todo/
├── src/
│ ├── server/ # バックエンド
│ │ ├── controllers/ # コントローラー
│ │ ├── routes/ # ルート定義
│ │ ├── middleware/ # ミドルウェア
│ │ └── db/ # データベース設定
│ ├── client/ # フロントエンド
│ │ ├── components/ # Reactコンポーネント
│ │ ├── context/ # React Context
│ │ ├── hooks/ # カスタムフック
│ │ ├── pages/ # ページコンポーネント
│ │ └── api/ # APIクライアント
│ └── shared/ # 共有コード
│ ├── types/ # 型定義
│ └── validation/ # バリデーションスキーマ
├── prisma/
│ ├── schema.prisma # データベーススキーマ
│ └── seed.ts # シードデータ
└── dist/ # ビルド成果物
このプロジェクトはNode.js 18以上が必要です。nvmを使用してバージョンを切り替え:
nvm install 20
nvm use 20PostgreSQLが起動していることを確認:
# Docker
docker ps | grep todo-postgres
# ローカル
sudo service postgresql statusポート3000または5173が既に使用されている場合、.envファイルでポート番号を変更してください。
MIT