restaurant-reservation: full-stack application for Thinkful's Software Engineering immersion program.
======
*A deployed demo can be found here: https://ms-rest-client.herokuapp.com/dashboard
Built from user stories, it allows employees to book, change or cancel reservations, and track reservation seating arrangements.
The UI is a minimalist design with a visual hierarchy focused on application functionality.
The application is fully responsive and cross-browser compatible, built with ReactJs and ExpressJs utilizing RESTful API methodology.
Reservations are stored in a PostgreSQL database with a one-to-many relationship and queried with the KnexJs library.
*Below is a quick overview of the project requirements and pre-existing files included with the project.
=======
You have been hired as a full stack developer at Periodic Tables, a startup that is creating a reservation system for fine dining restaurants. The software is used only by restaurant personnel when a customer calls to request a reservation. At this point, the customers will not access the system online.
There are no user stories for deployment: it is expected that you will deploy the application to production after you finish a user story.
There are no user stories for logging: it is expected that you will add logging to the application with enough detail to help you diagnose issues in production.
This repository is set up as a monorepo, meaning that the frontend and backend projects are in one repository. This allows you to open both projects in the same editor.
As you work through the user stories listed later in this document, you will be writing code that allows your frontend and backend applications to talk to each other. You will also write code to allow your controllers and services to connect to, and query, your PostgreSQL database via Knex.
The table below describes the folders in this starter repository:
Folder/file path | Description |
---|---|
./back-end |
The backend project, which runs on localhost:5000 by default. |
./front-end |
The frontend project, which runs on localhost:3000 by default. |
This starter code closely follows the best practices and patterns established in the Robust Server Structure module.
The ./back-end
folder contains all the code for the backend project.
The table below describes the existing files in the ./back-end
folder:
Folder/file path | Description |
---|---|
./back-end/knexfile.js |
The Knex configuration file. You will not need to make changes to this file. |
./back-end/src/app.js |
Defines the Express application and connects routers. |
./back-end/src/db/connection.js |
The Knex connection file. You will not need to make changes to this file. |
./back-end/src/db/migrations |
The Knex migrations folder. |
./back-end/src/db/seeds/ |
The Knex seeds folder. |
./back-end/src/errors/errorHandler.js |
Defined an Express API error handler. |
./back-end/src/errors/notFound.js |
Defined an Express API "not found" handler. |
./back-end/src/reservations/reservations.controller.js |
A controller for the reservations resource. |
./back-end/src/reservations/reservations.router.js |
A router for the reservations resource. |
./back-end/src/server.js |
Defines the node server. |
./back-end/test |
A folder that contains all of the integration tests. You will not need to make changes to the files in this folder. |
./back-end/vercel.json |
A vercel deployment configuration file. You will not need to make changes to this file. |
The ./front-end
folder contains all the code for the frontend project.
The table below describes the existing files in the ./front-end
folder:
Folder/file path | Description |
---|---|
./front-end/e2e |
Contains all of the end-to-end tests. You will not need to make changes to the files in this folder. |
./front-end/jest-puppeteer.config.js |
A configuration file used by the end-to-end tests. You will not need to make changes to this file. |
./front-end/src/App.js |
Defines the root application component. You will not need to make changes to this file. |
./front-end/src/App.test.js |
Contains the tests for the root application component. You will not need to make changes to this file. |
./front-end/src/dashboard/Dashboard.js |
Defines the Dashboard page. |
./front-end/src/index.js |
The main entry point for the React application. |
./front-end/src/layout/ErrorAlert.js |
Defines an error alert component that display only when an error is specified. |
./front-end/src/layout/Layout.css |
The css for the Layout component. |
./front-end/src/layout/Layout.js |
Defines the main layout of the application. |
./front-end/src/layout/Menu.js |
Defines the menu for the application. |
./front-end/src/layout/NotFound.js |
Defines the "Not found" component that is displayed when no route matches. |
./front-end/src/layout/Routes.js |
Defines all the routes for the application. |
./front-end/src/utils/api.js |
Defines the functions used to access the backend API |
./front-end/src/utils/date-time.js |
Defines functions to format date and time strings. |
./front-end/src/utils/format-reservation-date.js |
Defines a function to format the date on a single reservation or an array of reservations. |
./front-end/src/utils/format-reservation-time.js |
Defines a function to format the time on a single reservation or an array of reservations. |
./front-end/src/utils/useQuery.js |
Defines a custom hook to parse the query parameters from the URL. |
========================