Thanks to visit codestin.com
Credit goes to github.com

Skip to content

checkmyprojects/recruitment-process-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


This is our app to manage internal recruitment processes for NTT DATA Spain and Affiliates.

Here you can add, edit or delete candidates, interviewers, interviews, processes and view statistics on the selection processes.

🔗 Links to project:

➡️ FrontEnd:

https://github.com/checkmyprojects/recruitment-process-frontend

⬅️ Backend:

https://github.com/checkmyprojects/recruitment-process-backend

🔧 How It's Made:

👾 Tech Stack

javaJava spring Spring Boot javaSpring Security

mysql JWT mysql MySQL javax.mailjavax.mail mockitomockito junit5junit5

  • With Springboot to power our fullstack application, we made a responsive website to manage selection processes.
  • javax.mail facilitates sending and receiving e-mail from java code through SMTP, POP3 and IMAP protocols.
  • Local secondary index (LSI) allows us to perform a query on a single Hash-Key using several different attributes to "filter" or restrict the query.

Our goal is to facilitate the hiring process of the HR department, bringing together all the roles in a single app.


🏁 Team

Hi there!

We are a group of enthusiastic coders excited about web developers. In our latest project we have created a web application for the HR department.

Scrum Master/developer
Product Owner/developer
Developers

API Documentation

Base Path: /api

Return a list of users with roles

GET: /admin/users

[

      {
        "id": 13,
        "candidate": {
          "id": 1,
          "name": "Francisco",
          "surname": "Domínguez",
          "email": "[email protected]",
          "skills": "Angular, Typescript, Java",
          "studies": "F.P.",
          "location": "Sevilla",
          "experience": 1,
          "hired": false,
          "state": null,
          "phone": null,
          "notes": null
        },
        "selection": {
          "id": 5,
          "created_by": {
            "id": 1,
            "name": "usuario",
            "username": "user",
            "email": "[email protected]",
            "roles": [
              {
                "id": 4,
                "name": "ROLE_PEOPLE"
              },
              {
                "id": 6,
                "name": "ROLE_INTERVIEWER"
              }
            ],
            "active": true
          },
          "start_date": "2022-09-12",
          "end_date": null,
          "name": "Java Spring Boot",
          "description": "Senior Java Team manager",
          "requirements": "Java, Spring Boot",
          "location": "Sevilla",
          "sector": "Health",
          "status": "Active",
          "priority": "High",
          "project_id": 123123123,
          "remote": false
        },
        "status": null,
        "feedback": "",
        "interview_date": "2022-08-22 / 09:11:33",
        "creation_date": "2022-08-14 / 20:52:50"
      },
      {
        "id": 39,
        "candidate": {
          "id": 49,
          "name": "Arvie",
          "surname": "Hiley",
          "email": "[email protected]",
          "skills": "Namfix",
          "studies": "Administrative Officer",
          "location": "Yangjiafang",
          "experience": 3,
          "hired": true,
          "state": "",
          "phone": null,
          "notes": null
        },
        "selection": {
          "id": 5,
          "created_by": 1,
          "start_date": "2022-09-12",
          "end_date": null,
          "name": "Java Spring Boot",
          "description": "Senior Java Team manager",
          "requirements": "Java, Spring Boot",
          "location": "Sevilla",
          "sector": "Health",
          "status": "Active",
          "priority": "High",
          "project_id": 123123123,
          "remote": false
        },
        "status": null,
        "feedback": "",
        "interview_date": "2022-08-18 / 13:23:21",
        "creation_date": "2022-08-18 / 13:23:23"
      }
    ],
    "active": true
  },
  
]
Return a user by {id} with roles and orders

GET: /admin/users/{id}

{
  "id": 29,
  "candidate": {
    "id": 57,
    "name": "Aldrich",
    "surname": "Battelle",
    "email": "[email protected]",
    "skills": "Greenlamd",
    "studies": "Automation Specialist II",
    "location": "Stockholm",
    "experience": 5,
    "hired": true,
    "state": "activo",
    "phone": null,
    "notes": null
  },
  "selection": {
    "id": 5,
    "created_by": 1,
    "start_date": "2022-09-12",
    "end_date": null,
    "name": "Java Spring Boot",
    "description": "Senior Java Team manager",
    "requirements": "Java, Spring Boot",
    "location": "Sevilla",
    "sector": "Health",
    "status": "Active",
    "priority": "High",
    "project_id": 123123123,
    "remote": false
  },
  "status": null,
  "feedback": "",
  "interview_date": "2022-08-18 / 11:15:14",
  "creation_date": "2022-08-18 / 11:15:18"
},
}
]
Delete user by {id}

DELETE: /admin/delete/44

{ void }
Return the authed user username

GET: /admin/users/whoami

Create new user

POST: /auth/signup

{
  "id": 44,
  "name": "Jesús",
  "username": "yisus",
  "email": "[email protected]",
  "roles": [
    {
      "id": 3,
      "name": "ROLE_ADMIN"
    }
  ],
  "interviews": null,
  "active": true
}
User login returns JWT token

POST: /auth/signin

{
  "id": 2,
  "username": "admin",
  "email": "[email protected]",
  "roles": [
    "ROLE_ADMIN"
  ],
}

Returns:

{
  "accessToken": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iXSwiZW1haWwiOiJhZG1pbkBtYWlsLmNvbSIsImlhdCI6MTY2MTc3MzczOCwiZXhwIjoxNjYxODYwMTM4fQ.JUhaPITEW3ObLyyMkkGF9jpgQnxGxJLURVgPqBArK4PcYgeqaZ33LY3vE6qLII-QtCjjfvs0XPM388KhoKDXkw",
  "tokenType": "Bearer"
}
List All Candidates

GET: /candidate/list

{
  "id": 52,
  "name": "Melissa",
  "surname": "Wayte",
  "email": "[email protected]",
  "skills": "Overhold",
  "studies": "Structural Analysis Engineer",
  "location": "Caçador",
  "experience": 16,
  "hired": true,
  "state": "",
  "phone": null,
  "notes": null,
  "interviews": []
},
{
"id": 53,
"name": "Denis",
"surname": "Elia",
"email": "[email protected]",
"skills": "Fix San",
"studies": "Automation Specialist III",
"location": "Lunao",
"experience": 30,
"hired": true,
"state": "",
"phone": null,
"notes": null,
"interviews": []
},
{
"id": 54,
"name": "Noach",
"surname": "Wakenshaw",
"email": "[email protected]",
"skills": "Asoka",
"studies": "Senior Cost Accountant",
"location": "Rancanyenang",
"experience": 11,
"hired": true,
"state": "",
"phone": null,
"notes": null,
"interviews": []
},
New Candidate

POST: /candidate/new

{
  "id": 107,
  "name": "Samuel",
  "surname": "Alonso",
  "email": "[email protected]",
  "skills": "Angular, Typescript, Java",
  "studies": "F.P.",
  "location": "Pamplona",
  "experience": 1,
  "hired": false,
  "state": null,
  "phone": null,
  "notes": null,
  "interviews": null
}
List Selection Process

GET: /selection/list

[
  {
    "id": 5,
    "created_by": {
      "id": 1,
      "name": "usuario",
      "username": "user",
      "email": "[email protected]",
      "roles": [
        {
          "id": 3,
          "name": "ROLE_ADMIN"
        }
      ],
      "active": true
    },
    "start_date": "2022-09-12",
    "end_date": null,
    "name": "Java Spring Boot",
    "description": "Senior Java Team manager",
    "requirements": "Java, Spring Boot",
    "location": "Sevilla",
    "sector": "Health",
    "status": "Active",
    "priority": "High",
    "project_id": 123123123,
    "remote": false,
    "interviews": [
      {
        "id": 17,
        "candidate": {
          "id": 1,
          "name": "Francisco",
          "surname": "Domínguez",
          "email": "[email protected]",
          "skills": "Angular, Typescript, Java",
          "studies": "F.P.",
          "location": "Sevilla",
          "experience": 1,
          "hired": false,
          "state": null,
          "phone": null,
          "notes": null
        },
        "interviewer": {
          "id": 1,
          "name": "usuario",
          "username": "user",
          "email": "[email protected]",
          "roles": [
            {
              "id": 3,
              "name": "ROLE_ADMIN"
            }
          ],
          "active": true
        },
        "status": null,
        "feedback": "",
        "interview_date": "2022-08-31 / 10:10:03",
        "creation_date": "2022-08-14 / 22:14:12"
      },
]
Create Selection Process

POST: /selection/new?creatorid=14

[
  {
    "start_date": "2022-11-15",
    "name": "Java Spring Boot",
    "description": "Senior Java Team manager",
    "requirements": "Java, Spring Boot",
    "location": "Sevilla",
    "sector": "Health",
    "status": "Active",
    "priority": "High",
    "project_id": 123123123,
    "remote": false
  }
]
Delete Selection Process by {id}

DELETE: selection/delete/{id}

{
  "start_date": "2022-09-12",
  "name": "Java Spring Boot",
  "description": "Senior Java Team manager",
  "requirements": "Java, Spring Boot",
  "location": "Sevilla",
  "sector": "Health",
  "status": "Active",
  "priority": "High",
  "project_id": 123123123,
  "remote": false
}

Returns:

{ void }
List All Interviews
{
"id": 5,
"created_by": {
"id": 1,
"name": "usuario",
"username": "user",
"email": "[email protected]",
"roles": [
{
"id": 3,
"name": "ROLE_ADMIN"
}
],
"active": true
},
"start_date": "2022-09-12",
"end_date": null,
"name": "Java Spring Boot",
"description": "Senior Java Team manager",
"requirements": "Java, Spring Boot",
"location": "Sevilla",
"sector": "Health",
"status": "Active",
"priority": "High",
"project_id": 123123123,
"remote": false,
"interviews": [
{
"id": 35,
"candidate": {
"id": 36,
"name": "Berget",
"surname": "Cakebread",
"email": "[email protected]",
"skills": "Tampflex",
"studies": "Structural Engineer",
"location": "Hekou",
"experience": 12,
"hired": true,
"state": "",
"phone": null,
"notes": null
},
"interviewer": {
"id": 1,
"name": "usuario",
"username": "user",
"email": "[email protected]",
"roles": [
{
"id": 3,
"name": "ROLE_ADMIN"
}
],
"active": true
},
"status": null,
"feedback": "",
"interview_date": "2022-08-18 / 12:19:37",
"creation_date": "2022-08-18 / 12:19:39"
},
{
"id": 18,
"candidate": {
"id": 1,
"name": "Francisco",
"surname": "Domínguez",
"email": "[email protected]",
"skills": "Angular, Typescript, Java",
"studies": "F.P.",
"location": "Sevilla",
"experience": 1,
"hired": false,
"state": null,
"phone": null,
"notes": null
},
"interviewer": {
"id": 1,
"name": "usuario",
"username": "user",
"email": "[email protected]",
"roles": [
{
"id": 3,
"name": "ROLE_ADMIN"
}
],
"active": true
},
"status": null,
"feedback": "",
"interview_date": "2022-08-29 / 15:15:36",
"creation_date": "2022-08-14 / 22:17:45"
},

Find interview by ID

GET: /selection/list?30

[
  {
    "id": 30,
    "candidate": {
      "id": 57,
      "name": "Aldrich",
      "surname": "Battelle",
      "email": "[email protected]",
      "skills": "Greenlamd",
      "studies": "Automation Specialist II",
      "location": "Stockholm",
      "experience": 5,
      "hired": true,
      "state": "activo",
      "phone": null,
      "notes": null
    },
    "interviewer": {
      "id": 1,
      "name": "usuario",
      "username": "user",
      "email": "[email protected]",
      "roles": [
        {
          "id": 3,
          "name": "ROLE_ADMIN"
        }
      ],
      "active": true
    },
    "status": null,
    "feedback": "",
    "interview_date": "2022-08-18 / 11:44:40",
    "creation_date": "2022-08-18 / 11:44:42"
  },
]
Create Interview

POST: /interview/new

[
  {
    "candidateId": 5,
    "interviewerId": 1,
    "selectionId": 5,
    "date": "2022-01-01T22:22:22",
    "status": "Activo",
    "feedback": ""

  }
]

Returns:

{
  "id": 40,
  "candidate": {
    "id": 5,
    "name": "Benedetta",
    "surname": "Scurry",
    "email": "[email protected]",
    "skills": "Keylex",
    "studies": "Senior Cost Accountant",
    "location": "Mevo horon",
    "experience": 24,
    "hired": true,
    "state": "",
    "phone": null,
    "notes": null
  },
  "interviewer": {
    "id": 1,
    "name": "usuario",
    "username": "user",
    "email": "[email protected]",
    "roles": [
      {
        "id": 3,
        "name": "ROLE_ADMIN"
      }
    ],
    "active": true
  },
  "selection": {
    "id": 5,
    "created_by": {
      "id": 1,
      "name": "usuario",
      "username": "user",
      "email": "[email protected]",
      "roles": [
        {
          "id": 3,
          "name": "ROLE_ADMIN"
        }
      ],
      "active": true
    },
    "start_date": "2022-09-12",
    "end_date": null,
    "name": "Java Spring Boot",
    "description": "Senior Java Team manager",
    "requirements": "Java, Spring Boot",
    "location": "Sevilla",
    "sector": "Health",
    "status": "Active",
    "priority": "High",
    "project_id": 123123123,
    "remote": false
  },
  "status": "Activo",
  "feedback": "",
  "interview_date": "2022-01-01 / 22:22:22",
  "creation_date": "2022-08-31 / 08:59:45"
}
Delete Interview by {id}

DELETE: /interview/delete/40

{ void }

🎁 Thanks

  • Tell others about this project 📢
  • Invite someone from the team to a beer 🍺 or a coffee ☕.
  • Give thanks publicly 🤓.
  • etc.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages