Back to Junior Level

React/Spring Boot Guest Book


Prerequisite

  • React
  • Java 8 or later
  • Spring Boot
  • Postgres
  • Material UI
  • Docker Compose

Requirements

You are tasked to create a simple guest book web application that provides users a way to check in to the website and leave a note with their name and contact info. The data entered into the guest form will be sent to a Java + Spring Boot API to be stored in a Postgres database.

  • Backend
    • POST new guest check-in endpoint
      • POST-BODY: {first_name: ‘String’, last_name: ‘String’, message: ‘String’, phone_number: ‘String’}.
      • Side effect: The guest check in is recorded in the Postgres database with a unique UUID for each check-in.
      • Output: HTTP 200 response.
    • GET guest check-in’s endpoint
      • Input: None
      • Output: HTTP 200 response with JSON list of all recorded check-in’s.
    • DELETE guest check-in endpoint
      • Input: check-in UUID
      • Output: HTTP 200 response with JSON output of the check-in that got deleted.
  • Frontend
    • React App
      • Create a React frontend that makes use of the above endpoints. The UI can be sparse but should still look compelling.
      • The UI should use the Material UI component library for basic components and theming. Use either a ’light’ or ‘dark’ theme, no need to switch.
      • There should be a simple header and footer. Feel free to use some Lorem Ipsum to fill in space.
      • Guests should be able to check in by clicking on a button that opens a form inside a Material UI Modal component. (https://mui.com/material-ui/react-modal/)
      • Add an image (bonus points for a carousel of images) that is positioned behind the guest form.
      • Below the image and check in form add a table that shows the last ten guest check-ins with their name and message (not phone number).
      • No authentication is necessary.

Deliverable

  • A docker-compose.yml file that defines all containers needed to run this locally
  • Unit/integration tests
  • A great README with instructions on how to run everything locally using Docker
  • We will evaluate your application on either M1 or x86 Macbooks or inside a Linux Virtual Machine, and will follow your deployment instructions exactly as written in the README.
  • A GitHub repo with read permissions given to GitHub users rafty8s,bsneider, omnipresent07, barakstout, and cskeen (how to invite collaborators)