Skip to content

ProMan is a project management application. It allows users to manage their projects, sprints and tasks.Tasks can be scheduled and prioritized according to the level of difficulty or time.

License

Notifications You must be signed in to change notification settings

EddyEduard/ProMan-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProMan

ProMan is a project management application. It allows users to manage their projects, sprints and tasks.Tasks can be scheduled and prioritized according to the level of difficulty or time. All the roots from the REST API are described below.

Technologies

Below is a list of all the technologies used to develop the app. They are structured by categories.

Frontend

Backend

  • Java
  • Spring

Database

  • MySQL

REST API routes

Below is a list of all REST API routes.

Auth
  1. Register for company

Method: POST

/api/auth/register

{
	"username": "Your username...",
	"password: "Your password...",
	"roles: ["ADMIN", "DIRECTOR", "MANAGER"],
	"company": {
		"name": "Compnay name...",
        "email": "Company e-mail...",
        "phone": "Company phone",
        "industry": "Company industry...",
        "country": "Company country...",
        "city": "Company city...",
        "address": "Company address..."
	}
}
  1. Register for user

Method: PATCH
Authorization role: ADMIN

/api/auth/register

{
    "username": "Your uesrname...",
    "email": "Your e-mail...",
    "password": "Your password...",
    "phone": "Your phone...",
    "roles": ["SPECIALIST", "ACCOUNTANT"]
}
  1. Authentication

Method: POST

/api/auth/login

{
    "email": "Your e-mail...",
    "password": "Your password..."
}
  1. Profile company

Method: GET
Authorization role: ADMIN

/api/auth/company_profile

  1. Profile user

Method: GET
Authorization role: ADMIN

/api/auth/account_profile

  1. Edit profile company

Method: PUT
Authorization role: ADMIN

/api/auth/company_profile

{
    "name": "Compnay name...",
    "email": "Company e-mail...",
    "phone": "Company phone",
    "industry": "Company industry...",
    "country": "Company country...",
    "city": "Company city...",
    "address": "Company address..."
}
  1. Edit profile user

Method: PUT
Authorization role: ADMIN

/api/auth/account_profile

{
    "username": "Your uesrname...",
    "email": "Your e-mail...",
    "password": "Your password...",
    "phone": "Your phone...",
    "roles": ["SPECIALIST", "ACCOUNTANT"]
}
  1. Remove account

Method: DELETE
Authorization role: ADMIN

/api/auth/accounts

Project
  1. Get projects

Method: GET

/api/project/get

  1. Get project

Method: GET

/api/project/get/{id}

  1. Create project

Method: POST
Authorization role: ADMIN, DIRECTOR, MANAGER

/api/project/create

{
    "name": "Project name...",
    "description": "Project description..."
}
  1. Update project

Method: PUT
Authorization role: ADMIN, DIRECTOR, MANAGER

/api/project/update/{id}

{
    "name": "Project name...",
    "description": "Project description..."
}
  1. Delete project

Method: DELETE
Authorization role: ADMIN, DIRECTOR, MANAGER

/api/project/delete/{id}

Sprint
  1. Get sprints

Method: GET

/api/sprint/get

  1. Get sprint

Method: GET

/api/sprint/get/{id}

  1. Create sprint

Method: POST
Authorization role: ADMIN, DIRECTOR, MANAGER

/api/sprint/create

{
	"projectId": 0
    "name": "Sprint name...",
    "description": "Sprint description...",
	"priority": "LOW | MIDDLE | HIGH"
}
  1. Update sprint

Method: PUT
Authorization role: ADMIN, DIRECTOR, MANAGER

/api/sprint/update/{id}

{
	"projectId": 0
    "name": "Sprint name...",
    "description": "Sprint description...",
	"priority": "LOW | MIDDLE | HIGH"
}
  1. Delete sprint

Method: DELETE
Authorization role: ADMIN, DIRECTOR, MANAGER

/api/sprint/delete/{id}

Task
  1. Get tasks

Method: GET

/api/task/get

  1. Get task

Method: GET

/api/task/get/{id}

  1. Create task

Method: POST
Authorization role: ADMIN, DIRECTOR, MANAGER

/api/task/create

{
	"projectId": 0,
	"sprintId": 0,
    "name": "Task name...",
    "description": "Task description...",
	"priority": "LOW | MIDDLE | HIGH",
	"status: "CREATED | OPENED | CLOSED"
}
  1. Update task

Method: PUT
Authorization role: ADMIN, DIRECTOR, MANAGER, SPECIALIST

/api/task/update/{id}

{
	"projectId": 0,
	"sprintId": 0,
    "name": "Task name...",
    "description": "Task description...",
	"priority": "LOW | MIDDLE | HIGH",
	"status: "CREATED | OPENED | CLOSED"
}
  1. Delete task

Method: DELETE
Authorization role: ADMIN, DIRECTOR, MANAGER

/api/task/delete/{id}

System Diagram

Entity Relationship Diagram

erDiagram
    COMPANY {
        long id PK
        srring name
        string email
        string(10) phone
        string industry
	string country
	string city
	string address
    }
    ACCOUNT {
        long id PK
        long company_id FK
        string username
        string email
        string(10) phone
        string(6) password
    }
    ACCOUNT_ROLE {
        long id PK
        long account_id FK
	long role_id FK
    }
    ROLE {
        long id PK
        string name
	string description
    }
    PROJECT {
        long id PK
        long company_id FK
        string name
	string description
	date created_date
	date updated_date
    }
    SPRINT {
        long id PK
        long company_id FK
        long project_id FK
        string name
	string description
	enum priority
	date created_date
	date updated_date
    }
    TASK {
        long id PK
        long company_id FK
        long project_id FK
        long sprint_id FK
        string name
	string description
	enum priority
	enum status
	date created_date
	date updated_date
    }

    COMPANY ||--o{ ACCOUNT : "has accounts"
    ACCOUNT ||--|{ ACCOUNT_ROLE : "has roles"
    ACCOUNT_ROLE }|--|| ROLE : "has accounts"
    COMPANY ||--o{ PROJECT : "has projects"
    COMPANY ||--o{ SPRINT : "has sprints"
    COMPANY ||--o{ TASK : "has tasks"
    PROJECT ||--o{ SPRINT : "has sprints"
    PROJECT ||--o{ TASK : "has tasks"
    SPRINT ||--o{ TASK : "has tasks"
Loading

Use case diagrams

flowchart LR
    admin((ADMIN))
    director((DIRECTOR))
    manager((MANAGER))
    specialist((SPECIALIST))

    caseOne([User login])
    caseTwo([User registration])
    caseThree([Managing company and user accounts])
    caseFour([Managing projects])
    caseFive([Managing sprints])
    caseSix([Managing tasks])
    caseSeven([Update task])

    admin --> caseOne
    admin --> caseTwo
    admin --> caseThree
    admin --> caseFour
    admin --> caseFive
    admin --> caseSix

    director --> caseOne
    director --> caseFour
    director --> caseFive
    director --> caseSix

    manager --> caseOne
    manager --> caseFour
    manager --> caseFive
    manager --> caseSix

    specialist --> caseOne
    specialist --> caseSeven

    style admin fill:#ff0000,color:white
    style director fill:#3498db,color:white
    style manager fill:#f39c12,color:white 
    style specialist fill:#1abc9c,color:white
Loading

License

Distributed under the MIT License. See MIT for more information.

Contact

Eduard-Nicolae - eduard_nicolae@yahoo.com
Project link - https://github.com/EddyEduard/ProMan-API

About

ProMan is a project management application. It allows users to manage their projects, sprints and tasks.Tasks can be scheduled and prioritized according to the level of difficulty or time.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages