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": "frando@mail.com",
"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": "user@mail.com",
"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": "ahiley1c@sciencedaily.com",
"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": "abattelle1k@altervista.org",
"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
"test@mail.com"Create new user
POST: /auth/signup
{
"id": 44,
"name": "Jesús",
"username": "yisus",
"email": "admin1@mail.com",
"roles": [
{
"id": 3,
"name": "ROLE_ADMIN"
}
],
"interviews": null,
"active": true
}User login returns JWT token
POST: /auth/signin
{
"id": 2,
"username": "admin",
"email": "admin@mail.com",
"roles": [
"ROLE_ADMIN"
],
}Returns:
{
"accessToken": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iXSwiZW1haWwiOiJhZG1pbkBtYWlsLmNvbSIsImlhdCI6MTY2MTc3MzczOCwiZXhwIjoxNjYxODYwMTM4fQ.JUhaPITEW3ObLyyMkkGF9jpgQnxGxJLURVgPqBArK4PcYgeqaZ33LY3vE6qLII-QtCjjfvs0XPM388KhoKDXkw",
"tokenType": "Bearer"
}List All Candidates
GET: /candidate/list
{
"id": 52,
"name": "Melissa",
"surname": "Wayte",
"email": "mwayte1f@dyndns.org",
"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": "delia1g@usda.gov",
"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": "nwakenshaw1h@tinyurl.com",
"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": "alsa@mail.com",
"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": "user@mail.com",
"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": "frando@mail.com",
"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": "user@mail.com",
"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": "user@mail.com",
"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": "bcakebreadz@yahoo.co.jp",
"skills": "Tampflex",
"studies": "Structural Engineer",
"location": "Hekou",
"experience": 12,
"hired": true,
"state": "",
"phone": null,
"notes": null
},
"interviewer": {
"id": 1,
"name": "usuario",
"username": "user",
"email": "user@mail.com",
"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": "frando@mail.com",
"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": "user@mail.com",
"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": "abattelle1k@altervista.org",
"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": "user@mail.com",
"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": "bscurry4@istockphoto.com",
"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": "user@mail.com",
"roles": [
{
"id": 3,
"name": "ROLE_ADMIN"
}
],
"active": true
},
"selection": {
"id": 5,
"created_by": {
"id": 1,
"name": "usuario",
"username": "user",
"email": "user@mail.com",
"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.
