Spring Boot、Thymeleaf、PostgreSQLを使用したTODO管理アプリケーションです。
- ✅ ユーザー認証(ログイン・サインアップ)
- ✅ TODOのCRUD操作(作成・読み取り・更新・削除)
- ✅ 一画面でのTODO管理
- ✅ 完了/未完了の切り替え
- ✅ 統計情報の表示
- ✅ レスポンシブデザイン
- フレームワーク: Spring Boot 3.5.0
- テンプレートエンジン: Thymeleaf
- データベース: PostgreSQL
- ORM: Spring Data JPA
- セキュリティ: Spring Security
- ビルドツール: Maven
- フロントエンド: Bootstrap 5, Font Awesome
- Java 17以上
- PostgreSQL 12以上
- Maven 3.6以上
# PostgreSQLに接続
psql -U postgres
# データベースを作成
CREATE DATABASE todoapp;
# 接続を終了
\qまたは、提供されている database-setup.sql を実行:
docker compose up -dpsql -U postgres -f database-setup.sqlsrc/main/resources/application.properties でデータベース接続情報を確認・変更してください:
spring.datasource.url=jdbc:postgresql://localhost:5432/todoapp
spring.datasource.username=postgres
spring.datasource.password=password# 依存関係のインストールとアプリケーションの起動
./mvnw spring-boot:run
# または
mvn spring-boot:runブラウザで以下のURLにアクセスしてください:
http://localhost:8080
- ブラウザで
http://localhost:8080にアクセス - 「新規登録」ボタンをクリック
- ユーザー名とパスワードを入力してアカウントを作成
- 作成したアカウントでログイン
- TODOリスト画面が表示されます
- 作成: 上部のフォームでタイトルと説明を入力して「追加」ボタンをクリック
- 完了/未完了の切り替え: 各TODOの「完了」または「未完了」ボタンをクリック
- 編集: 「編集」ボタンをクリックしてモーダルで編集
- 削除: 「削除」ボタンをクリック(確認ダイアログが表示されます)
src/
├── main/
│ ├── java/com/example/todo/
│ │ ├── TodoApplication.java # メインクラス
│ │ ├── config/
│ │ │ └── SecurityConfig.java # Spring Security設定
│ │ ├── controller/
│ │ │ ├── AuthController.java # 認証コントローラー
│ │ │ └── TodoController.java # TODOコントローラー
│ │ ├── entity/
│ │ │ ├── Todo.java # TODOエンティティ
│ │ │ └── User.java # ユーザーエンティティ
│ │ ├── repository/
│ │ │ ├── TodoRepository.java # TODOリポジトリ
│ │ │ └── UserRepository.java # ユーザーリポジトリ
│ │ └── service/
│ │ ├── CustomUserDetailsService.java # ユーザー詳細サービス
│ │ ├── TodoService.java # TODOサービス
│ │ └── UserService.java # ユーザーサービス
│ └── resources/
│ ├── application.properties # アプリケーション設定
│ └── templates/
│ ├── index.html # メイン画面
│ ├── login.html # ログイン画面
│ └── signup.html # サインアップ画面
└── test/
└── java/com/example/todo/
└── TodoApplicationTests.java # テストクラス
GET /login- ログイン画面POST /login- ログイン処理GET /signup- サインアップ画面POST /signup- サインアップ処理POST /logout- ログアウト処理
GET /- TODOリスト表示POST /todos- TODO作成POST /todos/{id}/update- TODO更新POST /todos/{id}/toggle- 完了状態切り替えPOST /todos/{id}/delete- TODO削除
- パスワードのハッシュ化(BCrypt)
- CSRF保護(開発用に無効化、本番では有効にすること)
- セッション管理
- ユーザー認証・認可
- データベース接続: PostgreSQLサーバーが起動していることを確認
- ポート: デフォルトでポート8080を使用
- ログ:
application.propertiesでspring.jpa.show-sql=trueによりSQL文が出力されます
- PostgreSQLサーバーが起動しているか確認
- データベース名、ユーザー名、パスワードが正しいか確認
application.propertiesの設定を確認
- 他のアプリケーションがポート8080を使用していないか確認
application.propertiesにserver.port=8081を追加してポートを変更
このプロジェクトはMITライセンスの下で公開されています。