A full-stack task management application based on the Franklin Covey methodology with Spring Boot backend and React frontend.
The easiest way to run the application is using Docker Compose:
start.batchmod +x start.sh
./start.shOr manually:
docker-compose up -dThen access:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8080/api/v1
- Swagger UI: http://localhost:8080/api/v1/swagger-ui.html
- Frontend Setup Guide - React application documentation
- Full Stack Setup - Complete setup and deployment guide
- Backend API Documentation - Available when running
- Java 17
- Spring Boot 3.2
- Spring Security with JWT
- Spring Data JPA
- PostgreSQL 15
- WebSocket with STOMP
- Maven
- Docker
- React 18
- Vite
- Tailwind CSS
- React Router
- Axios
- WebSocket (STOMP.js)
- Nginx (production)
- Factory Pattern -
TaskFactoryfor creatingOneTimeTaskandRecurringTaskinstances - Strategy Pattern - Calendar views (
DailyCalendarView,WeeklyCalendarView,MonthlyCalendarView) - Observer Pattern - Notification system (
EmailNotificationObserver,PopupNotificationObserver) - Repository Pattern - Data access layer using Spring Data JPA
src/main/java/com/taskmanager/
βββ config/ # Configuration classes
βββ controller/ # REST API controllers
βββ dto/ # Data Transfer Objects
βββ entity/ # JPA entities
βββ exception/ # Custom exceptions
βββ factory/ # Factory pattern implementation
βββ observer/ # Observer pattern implementation
βββ repository/ # JPA repositories
βββ security/ # JWT security components
βββ service/ # Business logic services
βββ strategy/ # Strategy pattern implementation
POST /api/v1/auth/register- Register new userPOST /api/v1/auth/login- Login and get JWT tokenPOST /api/v1/auth/refresh- Refresh JWT token
GET /api/v1/users/me- Get current user profilePUT /api/v1/users/me- Update profilePUT /api/v1/users/me/password- Change passwordGET/PUT /api/v1/users/me/notifications- Notification preferences
GET /api/v1/projects- List all projectsPOST /api/v1/projects- Create projectGET /api/v1/projects/{id}- Get projectPUT /api/v1/projects/{id}- Update projectDELETE /api/v1/projects/{id}- Delete projectPOST /api/v1/projects/{id}/archive- Archive project
GET /api/v1/tasks- List all tasksPOST /api/v1/tasks/one-time- Create one-time taskPOST /api/v1/tasks/recurring- Create recurring taskGET /api/v1/tasks/{id}- Get taskPUT /api/v1/tasks/{id}- Update taskDELETE /api/v1/tasks/{id}- Delete taskPOST /api/v1/tasks/{id}/complete- Complete taskPUT /api/v1/tasks/{id}/status- Update statusGET /api/v1/tasks/today- Today's tasksGET /api/v1/tasks/overdue- Overdue tasksPOST /api/v1/tasks/filter- Filter tasks
GET /api/v1/calendar/daily?date={date}- Daily viewGET /api/v1/calendar/weekly?date={date}- Weekly viewGET /api/v1/calendar/monthly?date={date}- Monthly view
GET /api/v1/notifications- Get all notificationsGET /api/v1/notifications/unread- Get unread notificationsPOST /api/v1/notifications/{id}/acknowledge- AcknowledgePOST /api/v1/notifications/{id}/snooze- Snooze
GET /api/v1/contexts- Get all contextsPOST /api/v1/contexts- Create custom context
- β Task Management: Create, edit, complete, and delete tasks
- π Recurring Tasks: Daily, weekly, monthly, and yearly patterns
- π Priority System: Franklin Covey A, B, C, D priorities
- π Project Organization: Group tasks into projects
- π Calendar Views: Daily, weekly, and monthly views
- π·οΈ Context Tags: GTD-style @home, @work, @phone, etc.
- π Real-time Notifications: WebSocket-based notifications
- π§ Email Notifications: SMTP support for reminders
- π€ User Management: Profile and preferences
- π JWT Authentication: Secure token-based auth
- π± Responsive Design: Mobile-friendly interface
- Docker & Docker Compose (recommended)
- OR: Java 17+, Maven 3.8+, Node.js 18+, PostgreSQL 15
Windows:
start.batLinux/Mac:
chmod +x start.sh
./start.shOr manually:
# Start all services (backend, frontend, database)
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose downThis will start:
- PostgreSQL on port 5432
- Spring Boot backend on port 8080
- React frontend on port 3000
1. Start PostgreSQL:
docker run -d \
--name taskmanager-db \
-e POSTGRES_DB=taskmanager \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-p 5432:5432 \
postgres:15-alpine2. Run the backend:
mvn spring-boot:run3. Run the frontend:
cd frontend
npm install
npm run devEnvironment variables:
DB_USERNAME- Database username (default: postgres)DB_PASSWORD- Database password (default: postgres)JWT_SECRET- JWT signing keyMAIL_HOST- SMTP host for email notificationsMAIL_USERNAME- SMTP usernameMAIL_PASSWORD- SMTP password
Swagger UI is available at: http://localhost:8080/api/v1/swagger-ui.html
OpenAPI spec at: http://localhost:8080/api/v1/api-docs
Real-time notifications are delivered via WebSocket:
- Endpoint:
/api/v1/ws - User notifications:
/user/{userId}/queue/notifications
# Run tests
mvn test
# Run with coverage
mvn test jacoco:reportTasks are prioritized using the Franklin Covey methodology:
- A - Critical: Must be done today
- B - Important: Should be done soon
- C - Nice to have: Can wait
- D - Delegate or Defer
The system comes with pre-configured context tags:
- @home
- @work
- @phone
- @errands
- @computer
- @waiting
- @anywhere
MIT License - Team Seaways