menu button
HE
EN
Go homepage to projects view in portfolio

Itay's Restaurant (All in one solution)

Project Overview

The goal was to create a universal code that can fit in independently to any type of business that sell products (whether it is food, chain store for jewelry, computers store or anything else). The idea was to make this code solve out many problems that every business is likely to have.
In this case, the "platform" that I chose is a made up restaurant chain in the United Kingdom, but it really can be anything else as well.

What makes this universal?
Every business needs the features that I created in there, and the fact that all the data is generated dynamically. So this makes this code reusable for any other type of business without much effort.

So what's the core of this website got to offer in simple words?
- eCommerce website.
- 2 different dashboards for content management, one for administrators and one for workers.
- Live track orders system & management either for the client and the workers.
- Customer relationship management.
And there's much more if you go through the technical aspects down below.

What's the process the website goes through each order?

  • A user browses the menu
  • ⬇
  • The user makes an order (buys a product)
  • ⬇
  • The user gets a dynamic order tracking link with all his details
  • ⬇
  • A new order is added to the dashboard of workers
  • ⬇
  • The workers update the state of the order
  • ⬇
  • The user receives the update (accepted/accepted at specific time/refunded)
  • ⬇
  • The user got what he asked for
  • ⬇
  • The order is removed/archived from the dashboard accordingly at the end of the day automatically

Technologies Used

HTML5

HTML5

CSS3

CSS3

ReactJS

ReactJS

Firebase

Firebase

PWA

PWA

Technical Aspects

eCommerce Website

-

allows customers to buy any type of food they'd like from any restaurant branch, using one of the next services such as Takeaway, Delivery and Table Reservations.

Each of these services can be consumed while making an order from variety of categories. Each category has its own individual products that have individual price/options/extras list.

Dashboard

-

allows workers to manage orders livetime with their customers (getting all the necessary details to accept/accept at specific hour/cancel with refund every order request), keeping access to archives/orders by phone number.

CMS (content management system)

-

an admin can easily change the menu for everyone without knowing any bit of code.

Many available options such as: add/remove/edit/order/hide/copy categories & items.

Amazing statistics

-

allows the admin to increase his profits by observing observing graphs are based on different data which lead the the admin to make smart decision about the restaruant (made with Chart.js)

These graphs are being changed every time a new order is being created, and they are being measured by specific dates (checkpoints) during which new data is being accumulated to the specific graph.

An admin can easily create a new checkpoint by simply clicking to start creating & grasping a new graph (for example creating a new checkpoint every month). Some examples are: the most sold products (showing how many times a product was hold, the price of the product and the total money gained from the specific product during the checkpoint), the best seller restaurant branch, the total income for the latter dates, etc..

CRM (customer relationship management)

-

divided audience with Google Analytics API, allows the admins to give purchaers sales every once in a while, also tracks the number of purchases for each client and showing in the analytics what kind of items the clients decided to remove/add.

Live updates

-

every order that is being created gets a live track URL that's specific for the specific client, this link is getting live updates about the current state of the order that's managed by the restaurant, without forcing the user to refresh his page (automatically changing the information on his page livetime).

Optimization tricks

-

using react-snap for pre-rendering to achieve optimization and manage working meta tags for making successful SEO.

Using lazy-loading on all pictures in order to prevent from the user loading heavy pages, hence it loads only the relevant information for the user.

Furthermore, using localStorage to avoid re-running a script for existing data that was downloaded in the past, this way the user can skip some unnecessary standby time.

Smart Features Behind The Scenes

-

 Smart redirects = if a user tries to load a link to Drinks category, despite his link hasn't processed/completed the AJAX request to receive the required information from the database, he'll be redirected to Drinks category after his page loaded

Smart Cart Memory = on page reload/refresh you'd expect the cart to be emptied, but that won't happen because the last cart added items are saved automatically (and even without using any caching method), which means after a refresh you'd still see your last added items until the user manually removes them.

Parallel Update on Dashboard - An update that occures in one dashboard (whether it's a worker/admin that changed something) will also change the dashboard for other dashboards opened in other branches without any page refresh.

Compressed database - any data that is inserted in the database by the user is compressed wisely, which allows the user to get database information faster than as if it wasn't compressed.

Pub/Sub & Google Scheduler = every day at night after the restaurant is closed (or at some other time we set up), a back-end function will run that will clear the database from past orders, everything from the past will be moved into an archive without any human trigger(done automatically), which means every day you come to a new day of work you'll see in main panel only the relevant orders for today, everything organized simply.

Search Engine Optimization & Loading Speed

-

using react-helmet, each page has its own meta tags(title, description, keywords), so that every page gains more exposure that can be tracked by search engines.

Using imagemin & sharp packages, all images that exist on the website or being uploaded are resized & compressed by cloud function on the backend, hence a faster loading speed is achieved for the user.

Designed / Customized / Dynamic Website (SPA)

-

 every page has its own niche, all the content in menu page is generated from Firebase firestore database, every page has its own unique page URL link (an admin can create a new route without knowing any code, which creates better practical environment for optimized SEO), every action the user does is saved in the database.

PWA (progressive web app) + Offline Mode

-

an option to install the website as an app (add to home button), using service-worker to enable offline mode, pre-caching and caching, all these allow make sure the next time you come back to the website it'll load faster.

Paypal API

-

to achieve secured payment transcations. Accepting both Paypal payments or credit cards such Visa (also pre-paid Visa cards), Mastercard, American Express and Discover.

Refunds can be handled both by the client, or the restaurant - as long as the state of the order is "pending" they both have the option to request a full refund. The refund is handled through cloud functions backend as well, which is more secured for the user.

Google Maps API

-

showing on the map markers (special icons) of each restaurant branch according to its geographic location, easy access to view more information about the specific location by simply clicking on those icons.

Secured Backend

-

Not anyone can make any type of action, every sort of action is being checked for the sake of security, only an admin can change the menu, only the specific client who made the order can ask for a refund or the restaurant itself, etc..

Multilingual

-

The whole website is supporting both Hebrew (RTL language) and English (LTR language), adding the prefix '/en' will make the website in English.

Animations

-

using CSS and the Intersection API to achieve beautiful and lovely experience for the user.

Responsive Design

-

working in any sort of environment, both in phones and computers.

Thank you for reading! 😊
jump to top page
Itay Shiff ©