Task Manager is a full-stack web application designed to help users efficiently create, manage, and track tasks with a clean and intuitive interface. Built with Angular for the frontend and Spring Boot for the backend, it features secure user authentication, task filtering, and input validation, all containerized with Docker for easy deployment. The app uses MongoDB for fast, scalable data storage.
-
Task Management:
- Create, edit, view, and delete tasks
- Tasks include title (max 25 characters), description (max 500 characters), status, and creation timestamp
-
Status Filtering:
- Filter tasks by status: To Do, In Progress, Done, or view all tasks
-
Secure Authentication:
- JWT-based authentication for user login and access control
-
Input Validation:
- Enforced limits: 25 characters for titles, 500 for descriptions
- Client-side and server-side validation for data integrity
-
Responsive UI:
- Material Design components for a modern, user-friendly experience
- Status formatting for readable display (e.g., "To Do" instead of "TO_DO")
-
Cross-Origin Support:
- Configured CORS for seamless frontend-backend communication
-
Containerized Deployment:
- Dockerized frontend, backend, and MongoDB for consistent environments
- Angular 17
- Angular Material
- TypeScript
- RxJS
- Spring Boot 3
- Spring Security (JWT)
- Spring Data MongoDB
- Java 17
- MongoDB (configurable)
- Docker & Docker Compose
- Maven (backend build)
- npm (frontend build)
- Git (version control)
- cURL (API testing)
- Docker & Docker Compose: For containerized deployment
- Node.js & npm: For frontend development (optional, if not using Docker)
- Java 17 & Maven: For backend development (optional, if not using Docker)
- Git: For cloning the repository
- MongoDB: If running without Docker (default port 27017)
git clone https://github.com/LoneWolf728/task-manager.git
cd task-managerdocker-compose up --build- Frontend: http://localhost:4200
- Backend API: http://localhost:8080
- MongoDB: localhost:27017 (inside Docker network)
cd backend
mvn clean install
mvn spring-boot:runEnsure MongoDB is running locally (mongod).
cd frontend
npm install
ng serveRegister via http://localhost:4200/register or use secure credentials.
API: POST http://localhost:8080/api/auth/login
- Create a task at http://localhost:4200/tasks/new
- Filter tasks by status
- Edit/delete tasks
curl -H "Authorization: Bearer <your-jwt-token>" http://localhost:8080/api/taskstask-manager/
├── backend/
│ ├── src/main/java/com/example/taskmanager/
│ │ ├── config/ # Security configuration
│ │ ├── controller/ # REST API endpoints
│ │ ├── dto/ # Data transfer objects
│ │ ├── exception/ # Custom exception handlers
│ │ ├── model/ # Domain entities
│ │ ├── repository/ # Data access layer
│ │ ├── security/ # JWT authentication
│ │ ├── service/ # Business logic
│ │ └── util/ # Helper utilities
│ ├── src/main/resources/
│ │ └── application.properties # Application configuration
│ └── pom.xml # Maven dependencies
├── frontend/
│ ├── src/app/
│ │ ├── core/
│ │ │ ├── auth/ # Authentication services & guards
│ │ │ ├── http/ # HTTP interceptors
│ │ │ └── models/ # Data models
│ │ ├── features/
│ │ │ ├── auth/ # Login & registration
│ │ │ └── tasks/ # Task management components
│ │ └── shared/
│ │ ├── components/ # Reusable UI components
│ │ └── pipes/ # Custom pipes
│ ├── src/environments/ # Environment configuration
│ ├── angular.json # Angular configuration
│ └── package.json # npm dependencies
├── docker-compose.yml # Container orchestration
└── README.md # Project documentation
POST /api/auth/register- Register a new userPOST /api/auth/login- Get JWT token
GET /api/tasks- List all tasksGET /api/tasks/{id}- Get task by IDPOST /api/tasks- Create taskPUT /api/tasks/{id}- Update taskDELETE /api/tasks/{id}- Delete taskGET /api/tasks/status/{status}- Filter tasks by status
- Tokens issued on login, stored in localStorage
- Required for all
/api/tasksendpoints
- Configured for http://localhost:4200
- Supports credentials for secure API calls
- Title: Max 25 characters, required
- Description: Max 500 characters
- Verify http://localhost:4200 in
CorsConfig.java - Check backend logs:
docker-compose logs backend
- Ensure MongoDB is running (
mongodor Docker)
- Check backend logs for authentication issues
- Run
npm installin frontend directory - Clear browser cache
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit changes:
git commit -m "Add your feature" - Push to branch:
git push origin feature/your-feature - Open a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ using Angular, Spring Boot, MongoDB, and Docker. Thanks to the open-source community for tools and libraries.