Spring Boot App for Contact Management

Job ID: 37570935

Budget: ₹600 – ₹1,500 INR

I am looking for an expert to build an application that will help efficiently manage contacts. Here are the specific requirements:

- The application should be developed using Spring Boot with Maven.
- A preference for using a NoSQL database, ideally CouchDB.
- All API requests and responses need to be handled in JSON format.
- For advanced level testing, please create a new Gmail account.

Key Features:

- User authentication via email and password is mandatory.

The ideal freelancer for this project should be adept in Spring Boot, Maven, NoSQL databases, particularly CouchDB, and have experience with user authentication systems. The ability to efficiently work with JSON formatted APIs is also essential. Please share your relevant portfolio during the bid.

Entry Level
a. Add Employee to a Database: In this task, the candidate needs to implement an
API endpoint to add an employee to the database. The employee data should include the
fields EmployeeName, PhoneNumber, Email, ReportsTo (which refers to the Employee ID of
the reporting manager), and ProfileImage (an URL to the Employee's profile image [use
google images]). Additionally, the candidate needs to generate a unique UUID as the ID field
for the Employee and return this ID,if the Employee is successfully added to the
database.
b. Get All Employees: The candidate needs to implement an API endpoint to retrieve
all employees from the database.
c. Delete Employee by ID: The candidate needs to implement an API endpoint to
delete an employee from the database based on their ID.
d. Update Employee by ID: The candidate needs to implement an API endpoint to
update the details of an employee in the database based on their ID.
Intermediate
a. Get nth Level Manager of an Employee: The candidate needs to implement an API
endpoint that takes an employee ID and a level (n) as input and returns the nth level
manager of that employee. For example, if employee A reports to B, and B reports to C, and
n=1, then the API should return the manager B for employee A, and if n=2, it should return
manager C for employee A.
b. Get Employees with Pagination and Sorting: Modify the "Get All Employees" task
to implement pagination and sorting options. Allow the client to specify the page number,
page size, and sorting criteria (e.g., sort by name or email). Return the appropriate subset of
employees based on the pagination parameters.
Advanced Level
a. Send Email to Level 1 Manager on New Employee Addition: The candidate needs
to implement a functionality that sends an email to the level 1 manager when a new
employee is added. The email should contain a message stating that "<EmployeeName>
will now work under you. Mobile number is <PhoneNumber> and email is <EmailId>". The
email should be a link that opens the email client. Candidate should create a new
email account specifically for this purpose instead of using personal accounts.
b. Host the Application on a Free Platform: The candidate needs to host the Spring
Boot application on a free hosting platform. They can choose platforms like Heroku,
AWS Free Tier, or any other suitable platform. The application should be accessible and
functional after deployment.
Validations and error handling will also be checked for every api route.