Skip to content

Latest commit

 

History

History
78 lines (66 loc) · 2.85 KB

File metadata and controls

78 lines (66 loc) · 2.85 KB

Task Management System

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.

Features

  • 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

Tech Stack

  • Java 17 + Spring Boot 3.4.1
  • Oracle Database (JDBC, raw DAO layer — no ORM)
  • Vanilla JS + HTML/CSS (static frontend)
  • Maven

Project Structure

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

API Endpoints (/api)

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

Setup

Prerequisites: Java 17, Maven, Oracle Database

  1. Clone the repo
  2. 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
  3. Run:
    ./mvnw spring-boot:run
  4. Open http://localhost:8080 in your browser