Skip to content

checkmyprojects/recruitment-process-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

100 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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": "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 }

🎁 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

 
 
 

Contributors

Languages