A task management app that not only helps users organize tasks but provides weekly AI-powered insights to improve productivity patterns.
- Professionals managing work/personal tasks
- Students tracking assignments
- Anyone wanting to improve productivity
- As a user, I want to create an account so my tasks are private
- As a user, I want to create, edit, and delete tasks
- As a user, I want to mark tasks as complete
- As a user, I want to set due dates and priorities
- As a user, I want to organize tasks with tags/categories
- As a user, I want weekly reports showing my productivity patterns
- As a user, I want AI suggestions on how to improve task completion
- As a user, I want to know which tasks I typically procrastinate on
- Framework: React with Vite
- UI Library: Tailwind CSS
- Framework: Spring Boot 3.x
- Java Version: 21 LTS
- Build Tool: Maven
- Security: Spring Security + JWT
- Database: PostgreSQL
- API: RESTful
- AI Integration: Spring AI (
spring-ai-starter-model-openai) with OpenRouter (OpenAI-compatible API)
- Container: Docker
- Orchestration: Docker Compose (dev)
Base path:
/api
POST /auth/register
POST /auth/login
POST /auth/refresh-token
GET /tasks/me
GET /tasks/me/{id}
POST /tasks
PUT /tasks/me/{id}
PATCH /tasks/me/{id}
DELETE /tasks/me/{id}
GET /tags/me
POST /tags
DELETE /tags/me/{id}
GET /reports/me
GET /reports/me/latest
All endpoints (except /auth/**) require a valid JWT:
Authorization: Bearer <token>
-
Clone this repository.
-
Install Docker
-
Create a
.envfile in the project root with your AI provider API key:
OPENROUTER_API_KEY=your_key_hereThe app uses
spring-ai-starter-model-openaiwhich works with any OpenAI-compatible API. By default it's configured to use OpenRouter (free models available), but you can switch to the OpenAI API directly by updatingapplication.yaml:spring: ai: openai: api-key: ${OPENAI_API_KEY} # remove base-url — Spring AI defaults to https://api.openai.com chat: options: model: gpt-4o-mini # change to desired OpenAI model
- Create the RSA private and public keys
openssl genrsa > src/main/resources/app.key
cd src/main/resources
openssl rsa -in app.key -pubout -out app.pub- Run the containers with Docker Compose:
docker compose up- Import the API collection and environment into Postman to test the endpoints:

