A full-stack task management application built with Next.js and Spring Boot.
- User authentication (signup, login)
- Create, read, update, and delete tasks
- Assign categories to tasks
- Set priority levels (High, Medium, Low)
- Mark tasks as completed or pending
- Filter tasks by category or completion status
- Search tasks by title
- Dashboard with task statistics
- Due date reminders and notifications
- Next.js with TypeScript
- Material UI for component design
- React Hooks for state management
- Axios for API communication
- Spring Boot 3.4.3
- Spring Security with JWT authentication
- Spring Data JPA
- MySQL database
- Java 17
- Node.js (v14 or later)
- Java 17
- MySQL
- Git
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install -
Create a
.env.localfile with the following content:NEXT_PUBLIC_API_URL=http://localhost:8080 -
Start the development server:
npm run dev -
The frontend will be available at
http://localhost:3000
-
Navigate to the backend directory:
cd backend -
Create a MySQL database named
taskmanager -
Update
application.propertieswith your database credentials:spring.datasource.url=jdbc:mysql://localhost:3306/taskmanager spring.datasource.username=your_username spring.datasource.password=your_password -
Build the application:
./mvnw clean package -
Run the application:
java -jar target/taskmanager-0.0.1-SNAPSHOT.jar -
The backend API will be available at
http://localhost:8080
- Create a Vercel account at vercel.com
- Install Vercel CLI:
npm install -g vercel - Navigate to the frontend directory and run:
vercel - Follow the prompts to deploy your application
- Set the environment variable
NEXT_PUBLIC_API_URLto your deployed backend URL
- Create a Render account at render.com
- Create a new Web Service
- Connect your GitHub repository
- Set the build command:
cd backend && ./mvnw clean package - Set the start command:
cd backend && java -jar target/taskmanager-0.0.1-SNAPSHOT.jar - Add environment variables for database connection
- Create a PlanetScale account at planetscale.com
- Create a new database
- Get connection details and update your backend configuration
POST /api/auth/register- Register a new userPOST /api/auth/login- Login and get JWT token
GET /api/tasks- Get all tasks for the authenticated userGET /api/tasks/{id}- Get a specific taskPOST /api/tasks- Create a new taskPUT /api/tasks/{id}- Update a taskDELETE /api/tasks/{id}- Delete a taskGET /api/tasks/category/{category}- Get tasks by categoryGET /api/tasks/status/{status}- Get tasks by status
-
JWT Authentication Implementation
- Challenge: Implementing secure JWT authentication
- Solution: Used Spring Security with JWT libraries for token generation and validation
-
Responsive Design
- Challenge: Making the application work well on both mobile and desktop
- Solution: Used Material UI's responsive grid system and media queries
-
Task Notifications
- Challenge: Implementing due date reminders
- Solution: Created a notification system that checks for due tasks on dashboard load
- Task sharing with other users
- Email notifications for upcoming tasks
- Dark mode support
- Task analytics and reporting
- Subtasks and task dependencies
