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.
https://github.com/checkmyprojects/recruitment-process-frontend
https://github.com/checkmyprojects/recruitment-process-backend
Java
Spring Boot
Spring Security
JWT
MySQL
javax.mail
mockito
junit5
- 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.
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.
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 }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 }- Tell others about this project 📢
- Invite someone from the team to a beer 🍺 or a coffee ☕.
- Give thanks publicly 🤓.
- etc.