后端开发代写|Backend Take-home Project

本次美国代写是一个Java后端开发的project

TASKS:

  1. Problem Statement: As a user, I should be able
  • to register into the system with my first name, last name, email and multiple addresses with information like line 1, line 2, city, state, zip.
  • to get the list of all the users in the system.
  • to search a user by email and confirm if the user exists.
  • to edit the address of the user but retain the old address.
  • to update user information.
  • to delete users from the system but am able to audit the deletion of users.
  1. Create an architectural diagram demonstrating the workflow of your solution to the problems below.
  2. Create REST API using Javamicroservice with distinct proto’s/data model and service with gradle or maven dependency management system.
  3. Microservice will support below endpoints
    1. UpsertUserAPI to update user if exists else create a new
    2. IsUserExistsAPI which takes input as email and returns appropriate status
    3. ListUsersAPI to return list of all users
    4. GetUserDetailsAPI inputs user id and returns user details including address.
    5. DeleteUserAPI which takes user id and marks the user as deleted.
    6. UpdateAddressAPI which takes user id and updates user address such that the old address is archived.
  4. Your goal is to architect a solution that will
    1. Create right protoBuf/data model for required API
    2. Demonstrate OOP principles along with separation of concerns.
    3. Demonstrate use of design patterns necessary for the solution.
    4. Plan to include indexes to optimize query performance.
    5. Create unit tests and integration tests to test the system behavior.

 

RULES:

  1. Please include the database migration script.
  2. You are welcome to use any open source libraries and/or create additional services to accomplish your tasks.
  3. You areopen to use any database, preferred Postgres
  4. Setup database connections with below settings or provide ability to configure connection via env variables url  host – localhost, dbname – backend_test, username – varo, password – varo.