Hearty Dove Restaurant
Hearty Dove Cuisine is a website designed to reduce no-shows by providing a reservation system that allows customers easily make and manage reservations at Hearty Dove Cuisine. It is useful for friends and families who like to dine and socialise out knowing that their reservation is confirmed.
UX
Strategy
User Goals
The two users groups are the:
- restaurant owner would like to be able to accept online reservations.
- the customers visiting the restaurants - wants to make a table reservation for a specific date and time.
User stories
-
Customer's goals:
- As a user, I am able to find the information I am looking for with ease.
- As a user, I can view the menu the restarant has to offer.
- As a user, I can make enquiry from the website by filling out a contact form.
- As a user, book reservation at the restaurant's website for a number of people at a specific date and time.
- As a user, I can make a reservation as a guest user
- As a user, I am prompted to create an account during or after making a reservation so I can manage my reservation
- As a user, I can get feedback about my reservation after completing the reservation.
- As a user, I can register an account so that i can easily modify or cancel my reservation
- As a regsitered user, I can sigin to my account and update my customer details
- As a logged in user, I can view my past or upcoming reservations.
-
Admin User's goals:
-
As an admin user, I can easily login and logout
-
As an admin user, I can login in order to access the admin dashboard
-
As an admin user, I can update the menu item from the backend
-
As an admin user, I can add and update dining hours
-
As an admin user, I can add or modify a table so that it would be easy to assign customers to tables
-
As an admin user, I can view list of reservations
-
As an admin user, I can approve or decline a reservation
-
As an admin user, I can allocate confirmed reservations to tables so consumers don't keep making bookings when there are no available tables for their party size, date and time.
Scope
The following features will be implemented, in order to achieve the user and business goals:
- Responsive navigation links and a landing page for the restaurant
- Reservation form
- Registration to allow users to register and sign in
- User's profile that lists previous and upcoming reservations
- manage reservation page where logged in users can update thier reservation
- Reservation confirmation via email
- contact form for making enquiries
- Admin login and logout
- updating option on the Admin Dashboard for adding and modifying menu items
- Reservation mangaement page from the Admin dashboard for assigning tables to a reservations
- prevent user from double booking
The following features are nice to have but would not be included in this release
- Appointment reminders
- Push notifications for each booked table
Structure
Skeleton
Wireframes for the restaurant website can be viewed here
Database
Features
[list main features of the app - home page, menu, table, reservation...]
Technologies Used
- Django - used to build the over project and its apps.
- Python - the core programming language used to write all of the code in this application to make it fully functional.
- Bootstrap - used for creating responsive design.
- GitHub - used to store code for the project after being pushed.
- Git - for version control by utilizing the Gitpod terminal to commit to Git and Push to GitHub..
- Gitpod - used as the development environment.
- Heroku - used to deploy application.
- Lucid - used to designing the data model for the project.
- Cloudinary - used to store all of my static files and images.
- Favicon.io - used to create favicon's for my website
- SQLite - used as the database on environment other than the production environment.
- PostgreSQL - used for the production database on Heroku.
- PhoneNumber
Testing
Bugs and fixes
- deployment error Failed to build backports.zoneinfo: - added a runtime.txt file to specify the Python version
Deployment
Clone GitHub repository
- Log in to GitHub and locate the GitHub Repository
- Click the
Code
dropdown arrow button just above the list of files. - To clone the repository using HTTPS, under "Clone with HTTPS", copy the link.
- Open a terminal on your computer
- Change the current working directory to the location where you want the cloned directory to be made.
- Type
git clone
, and then paste the URL you copied in Step 3.
$ git clone https://github.com/valerieoni/hearty-dove-restaurant
- Press Enter. Your local clone will be created.
- Create creds.json file in the root directory and save Google credentials in the file
- Rename .env.example to .env and update the file with your Nutritionix API ID and KEY values
Heroku
The project was deployed to Heroku.
Prerequisites:
- you forked or copied this project into your repository on GitHub.
- Heroku requires these files to deploy successfully, they are both in the root folder of the project:
requirements.txt
Procfile
- you already have a Heroku account, or you need to register one.
Create a Heroku App
Follow these steps to deploy the app from GitHub to Heroku:
- Sign in to Heroku. Signup if you do not have an account.
- From the Heroku dashboard, click on Create New App, give it a platform-unique name
- choose region, click on Create app button
- Click on settings tab
- click on Reveal config vars button
- add environment variables. The required variables are in the env_example.py file
- Click on the Deploy tab and select GitHub as the deployment method and click Connect to GitHub button
- In the GitHub authorization popup window login into GitHub with your GitHub username and click on
Authorize Heroku
button - Type in your repo name and click
search
. It lists your repos. Choose the one and click onconnect
next to it. - select the branch you want to deploy from the drop-down menu beneath choose a branch to deploy
- either enable automatic deployment on every push to the chosen branch or stick to manual deployment
- for the manual deploy, click on Deploy branch button and when the deployment is complete, click on View button to start the program
Credits
During the process of building this project, I used a number of online resources to help me resolve challenges:
- configuring database for different environment
- fix for backports.zoneinfo error
- specifying a Python runtime
- types of drinks
- styling django forms
Acknowledgements
I would like to thank my mentor, Narender Singh for his continuous support and feedback.