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.
Below is a list of all the technologies used to develop the app. They are structured by categories.
Frontend
Backend
- Java
- Spring
Database
- MySQL
Below is a list of all REST API routes.
- 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..."
}
}
- 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"]
}
- Authentication
Method: POST
/api/auth/login
{
"email": "Your e-mail...",
"password": "Your password..."
}
- Profile company
Method: GET
Authorization role: ADMIN
/api/auth/company_profile
- Profile user
Method: GET
Authorization role: ADMIN
/api/auth/account_profile
- 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..."
}
- 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"]
}
- Remove account
Method: DELETE
Authorization role: ADMIN
/api/auth/accounts
- Get projects
Method: GET
/api/project/get
- Get project
Method: GET
/api/project/get/{id}
- Create project
Method: POST
Authorization role: ADMIN, DIRECTOR, MANAGER
/api/project/create
{
"name": "Project name...",
"description": "Project description..."
}
- Update project
Method: PUT
Authorization role: ADMIN, DIRECTOR, MANAGER
/api/project/update/{id}
{
"name": "Project name...",
"description": "Project description..."
}
- Delete project
Method: DELETE
Authorization role: ADMIN, DIRECTOR, MANAGER
/api/project/delete/{id}
- Get sprints
Method: GET
/api/sprint/get
- Get sprint
Method: GET
/api/sprint/get/{id}
- Create sprint
Method: POST
Authorization role: ADMIN, DIRECTOR, MANAGER
/api/sprint/create
{
"projectId": 0
"name": "Sprint name...",
"description": "Sprint description...",
"priority": "LOW | MIDDLE | HIGH"
}
- 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"
}
- Delete sprint
Method: DELETE
Authorization role: ADMIN, DIRECTOR, MANAGER
/api/sprint/delete/{id}
- Get tasks
Method: GET
/api/task/get
- Get task
Method: GET
/api/task/get/{id}
- 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"
}
- 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"
}
- Delete task
Method: DELETE
Authorization role: ADMIN, DIRECTOR, MANAGER
/api/task/delete/{id}
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"
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
Distributed under the MIT License. See MIT for more information.
Eduard-Nicolae - eduard_nicolae@yahoo.com
Project link - https://github.com/EddyEduard/ProMan-API