getAtable is a full-stack app built using the PERN stack (PostgreSQL, Express, React, and Node.js) to provide a seamless and efficient user experience. It's more than just a restaurant reservation app โ it's a time-saving solution for customers and a valuable tool for restaurants. By assisting customers in finding and verifying current restaurant seating capacity, especially for walk-in only establishments, the app helps customers save time and plan impromptu group meals more easily. At the same time, it helps restaurants manage their seating capacity and attract more customers by displaying available seats to users.
This full-stack application also serves to fulfill the academic requirements of General Assembly's Software Engineering Immersive capstone project.
- Description
- Technologies Used
- Dependencies to install
- Users Stories
- Wireframes
- Back-end Repo
- API endpoints
- Tables
We've all experienced the disappointment of arriving at a walk-in only restaurant, only to find that it's filled and there's a long line of people waiting to be seated. Instead of joining the wait or searching for alternative places, wouldn't it be great to have an app that can help you avoid disappointment and wasted time? That's what getAtable aims to accomplish. It provides real-time information on restaurant seating capacity and availability, so you know exactly what to expect when you arrive. Plus, it eliminates the need to call restaurants or search for information on your phone, making it easy to plan hassle-free meals, whether you're with a group or just looking for a quick bite.
Not only does getatable provide real-time information on restaurant seating capacity and availability to help consumers plan hassle-free meals, but it also allows restaurants to manage their seat capacity in real time by integrating the program with their POS system. This saves time and hassle for both consumers and restaurants โ consumers can easily find and verify seating availability without having to wait for a response from the restaurant, and restaurants can avoid the time and effort required to answer phone calls about seating availability, getAtable helps restaurants attract more customers and streamline their operations.
- React.js
- HTML
- CSS: Tailwindcss and Tailwind Elements
- Express.js
- node-postgres
- Postgresql
In React.js | |
---|---|
1 | React-Hook-Form |
2 | React-Router-Dom |
3 | Tailwindcss |
4 | Tailwind Elements |
npm i react-hook-form react-router-dom tailwindcss tw-elements
In Express.js | |
---|---|
1 | Node-Postgres |
2 | BCrypt |
3 | CORS |
4 | Dotenv |
npm i pg bcrypt cors dotenv
- As a consumer, I want to be able to search for restaurants by location, party size, and dietary requirements so that I can find a restaurant that meets my needs and can accommodate my group.
- As a consumer, I want to see real-time information on restaurant seating capacity and availability so that I can easily find and verify which restaurants can accommodate my group without having to call or wait for a response.
- As a consumer, I want to be able to make reservations or add my name to a waitlist directly through the app so that I can easily plan my meal without having to call or visit the restaurant in person.
Why should I as a consumer use the app?
- an app that allows me to save time, effort and avoid disappointment when dining out in groups
- good for impromptu lunch/dinner plans
- avoid crowded places
- don't have to walk around physically in search of alternatives
When I am looking for alternatives, I would like the ability to:
- check the restaurant ratings
- check comments left by other diners
- check distance between my current location and that of the alternative restaurant(s)
- check distance between the location of my first choice and the alternatives
- share information about the alternative restaurant(s) with the rest of the group to decide the next steps
What information I can check using the app:
- if the restaurant is currently at full capacity
- if there is enough capacity to take in X number of diners
- if there is a long waiting time (queue situation)
- As a restaurant, I want to be able to update my seating capacity and availability in real time so that I can accurately reflect my current availability and attract more customers.
- As a restaurant, I want to be able to integrate the app with my POS system so that I can easily manage reservations and waitlists and streamline my operations.
- As a restaurant, I want to be able to customize my profile and menu on the app so that I can showcase my offerings to potential customers.
Why should the restaurant/cafe/bars use the app?
- manage walk-ins and queues, especially during peak hours
- minimize crowds gathering outside the restaurant
- launch ads during off-peak hours (using geolocation, geofencing and push notification)
- keep track of time per table
- inform consumers on opening/closing time and last order status
- monitor customers' feedback
- more advance usage with implementation in their POS system
- contactless payment
- a digital menu for ordering
- kitchen management
Login | Routes | |
---|---|---|
1 | Consumers | /users/login |
2 | Restaurant Manager | /restaurants/login |
3 | Restaurant Staff | /restaurants/login |
Link to getAtable backend repo
CRUD Operation | Description | API endpoints |
---|---|---|
Create | Create new user account | /users/register |
- | Login | /users/login |
Read | View a user's details | /users/:user_id |
Read | Update a user's details | /users/:user_id |
Read | View all users | /users |
CRUD Operation | Description | API endpoints |
---|---|---|
Create | Create new restaurant account | /restaurants/:id |
Read | View a restaurant's details | /restaurants/:id |
Update | Update a restaurant's details | /restaurants/ |
Read | View all restaurants | /restaurants/ |
CRUD Operation | Description | API endpoints |
---|---|---|
Create | Create new staff account | /restaurants/:id/staff/create |
- | Login | /restaurants/staff/login |
Read | View a staff's details | /restaurants/:id/staff |
Update | Update a staff's details | /restaurants/:id/staff/update |
Delete | Delete a staff's account | /restaurants/:id/staff/delete |
Read | View all staff of a restaurant | /restaurants/:id/staff |
CRUD Operation | Description | API endpoints |
---|---|---|
Create | Create a restaurant's capacity | /restaurants/:id/capacity |
Read | View a restaurant's capacity | /restaurants/:id/capacity |
Update | Update a restaurant's capacity | /restaurants/:id/capacity |
1 | restaurants |
2 | restaurant_operating_hours |
3 | locations |
4 | restaurant_locations |
5 | cuisines |
6 | restaurant_cuisines |
7 | tags |
8 | restaurant_tags |
9 | restaurant_staff |
10 | restaurant_media |
11 | restaurant_seats_capacity |
12 | users |
13 | reviews |