Back to Junior Level
React/Express Guest Book
Prerequisite
- React/Next.js
- Node.js v23 or later
- PostgreSQL
- Docker Compose
- Shadcn/UI
- Host the application somewhere with a public facing URL
- Use of Cursor, Claude, etc. is allowed – IDE and Prompts must be demonstrable during the interview
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 Node.JS Express API to be stored in a PostgreSQL database.
Backend
- POST new guest check-in endpoint
- POST-BODY:
first_name
,last_name
,message
,phone_number
. - Side effect: The guest check in is recorded in the PostgreSQL database with a unique ID for each check-in.
- Output: HTTP 200 response.
- POST-BODY:
- GET All guest check-in’s endpoint
- Input: None
- Output: HTTP 200 response with JSON list of all recorded check-in’s.
- GET Specific guest check-in’s endpoint
- Input: Guest ID
- Output: HTTP 200 response with JSON list of all recorded check-in’s.
- DELETE guest check-in endpoint
- Input: check-in ID
- Output: HTTP 200 response with JSON output of the check-in that got deleted.
- POST new guest check-in endpoint
Frontend
- React App
- Create a React frontend that makes use of the above endpoints. The UI can be sparse but should still look compelling.
- 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 via a form on the top of the page.
- 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 all previous guest check-ins with their name and message (not phone number).
- No authentication is necessary but a good to have
- React App
Deliverable
- A docker-compose.yml file that defines all containers needed to run this locally. Interviews should be able to run the code on localhost using one line docker command.
- Public facing URL for the application – You can use free services like Supabase to host PG and services like Vercel to host the application.
- Unit/integration tests
- A great README with instructions on how to run everything locally using Docker
- A GitHub repo with read permissions given to GitHub users
rafty8s
,slaplante-raft
,omnipresent07
, andJacobTyo
(how to invite collaborators)