Introduction & Features
Relevant source files
The following files were used as context for generating this wiki page:
- README.md
- src/main/resources/static/js/api.js
- src/main/java/com/example/demo/services/TaskService.java
- src/main/java/com/example/demo/services/AttachmentService.java
- src/main/java/com/example/demo/config/SecurityConfig.java
- src/main/java/com/example/demo/controllers/AdminController.java
- src/main/resources/templates/kanban.html
The Dashboard Task Management (DTM) system is a corporate application designed for team task management, featuring a Spring Boot backend and a frontend built with Vue.js and Thymeleaf. It provides a comprehensive suite of tools for tracking project progress through Kanban boards, managing subtasks, handling file attachments, and facilitating team communication via comments and mentions.
The system is built on a robust security architecture using JWT for stateless REST API authentication and standard form login for web views. It implements a strict role-based access control (RBAC) model to ensure data isolation between different departments and user roles, such as Admin, Manager, PM, and Team members.
Sources: README.md:1-15, src/main/java/com/example/demo/config/SecurityConfig.java:37-67
Core Project Features
The application is structured around several functional blocks that facilitate the lifecycle of a task from creation to completion.
Task Management (Kanban)
The central feature is the Kanban board, which visualizes tasks in four distinct columns: NEW, IN_PROGRESS, ON_REVIEW, and DONE. Tasks include metadata such as priority (LOW, MEDIUM, HIGH), due dates, assignees, and tags. The board supports drag-and-drop functionality for status updates and real-time filtering by priority or title.
Sources: README.md:52-78, src/main/resources/templates/kanban.html:56-170, src/main/resources/static/js/kanban.js:6-30
Role-Based Access Control (RBAC)
Access to data is strictly partitioned by roles. Admins have global access, while Managers are restricted to their departments, and PMs/Team members are restricted to their assigned projects or tasks.
| Feature | ADMIN | MANAGER | PM | TEAM |
|---|---|---|---|---|
| Create Projects | ✅ | ✅ | ❌ | ❌ |
| Create Tasks | ✅ | ✅ | ❌ | ❌ |
| Edit Tasks | ✅ | Dept Only | ✅ | ❌ |
| Change Status | ✅ | ❌ | ✅ | ❌ |
| Delete Tasks | ✅ | ✅ | ❌ | ❌ |
| Comments | ✅ | ✅ | ✅ | ✅ |
Sources: README.md:20-40, src/main/java/com/example/demo/services/TaskService.java:60-80
System Architecture & Data Flow
The application follows a standard N-tier architecture with a clear separation between the REST API (used for dynamic updates) and Thymeleaf templates (used for initial page rendering).
Authentication Flow
The system uses a dual-chain security configuration. Web requests for templates are handled via session-based form login, while API requests require a JWT Bearer token.
Task Lifecycle and History
Every significant change to a task—including status changes, title updates, or assignee modifications—is captured in a history log. The TaskService handles the logic for recording these transitions.
Technical Components
File Management System
The AttachmentService manages files with a two-step process: initial upload to a temporary directory followed by binding to a specific entity (Task or Comment). It enforces a 10MB limit and restricts file types to common images, documents, and archives.
File Constraints:
- Max Size: 10 MB
- Allowed Formats: jpg, png, gif, pdf, docx, xlsx, txt, zip, rar.
- Storage Logic: Files move from
/tempto/{entityType}/{entityId}/upon binding.
Sources: src/main/java/com/example/demo/services/AttachmentService.java:49-115, README.md:110-117
API Structure
The frontend interacts with the backend through a centralized API module in JavaScript.
| Category | Endpoints | Description |
|---|---|---|
| Projects | GET /api/projects, POST /api/projects | Project lifecycle management |
| Tasks | PATCH /api/tasks/{id}/status, PUT /api/tasks/{id} | Board updates and task editing |
| Files | POST /api/attachments/upload | Multipart file uploading |
| Notifications | PATCH /api/notifications/read-all | Managing user alerts |
Sources: src/main/resources/static/js/api.js:33-85, src/main/java/com/example/demo/controllers/AdminController.java:48-112
Summary
Introduction & Features covers the high-level capabilities of the DTM dashboard, emphasizing its secure, role-oriented design. By combining a real-time Kanban interface with deep tracking features like task history and automated notifications, the system provides a structured environment for corporate project management.
Sources: README.md:175-185, src/main/java/com/example/demo/services/TaskService.java:318-335