An introductory Spring Boot project built to learn RESTful API development and CRUD operations with a relational database. It models a company hierarchy — Boss → Manager → Employee — where bosses create tasks and assign them down the chain.
- Role-based signup: Boss (creates a company), Manager / Employee (join via company code)
- Session-based login/logout
- Task creation, assignment, and deletion
- View tasks by role (boss, manager, employee)
- Manual user creation by a boss
- Java 17 + Spring Boot 3.4.1
- Oracle Database (JDBC, raw DAO layer — no ORM)
- Vanilla JS + HTML/CSS (static frontend)
- Maven
src/main/
├── java/com/example/TaskManagementSystem/
│ ├── Controllers/UserController.java # All REST endpoints
│ ├── Dao/ # Raw JDBC data access
│ │ ├── UserDao.java
│ │ ├── TaskDao.java
│ │ └── CompanyDao.java
│ ├── Models/ # User, Task, Company, Role, forms
│ ├── DTOs/UserDTO.java
│ └── DBConnection.java
└── resources/
├── application.properties
└── static/ # Frontend pages (HTML/CSS/JS)
├── index.html
├── login.html
├── signup.html
├── select_role.html
└── dashboard.html
| Method | Path | Description |
|---|---|---|
| POST | /signup |
Register a new user (boss creates company, others join via code) |
| POST | /login |
Login, stores user in session |
| POST | /logout |
Invalidate session |
| GET | /loggedInUser |
Get current session user |
| GET | /currentUser?email= |
Get user details + company info |
| GET | /managers?email= |
Get all managers under a boss |
| GET | /employees?email= |
Get all employees under a boss |
| POST | /manual/create/user |
Boss creates a user manually |
| POST | /add/tasks |
Create and assign a task |
| GET | /tasks?managerId= |
Get tasks by manager |
| GET | /boss/tasks?email= |
Get tasks created by a boss |
| GET | /managers/tasks?managerId= |
Get tasks assigned to a manager |
| GET | /employees/tasks?employeeId= |
Get tasks assigned to an employee |
| GET | /employeeTasks?email= |
Get tasks for employee by email |
| DELETE | /tasks/{taskId} |
Remove a task |
Prerequisites: Java 17, Maven, Oracle Database
- Clone the repo
- Create an Oracle DB instance and update
application.properties:spring.datasource.url=jdbc:oracle:thin:@localhost:1521:TaskManagement spring.datasource.username=YOUR_USER spring.datasource.password=YOUR_PASSWORD
- Run:
./mvnw spring-boot:run
- Open
http://localhost:8080in your browser