- Screamless - a cover of Seamless, an online food delivery service for New York City and nearby boroughs.
- React.js and Flux frontend, Ruby on Rails backend
- Create accounts and authenticate
- Stores passwords as encrypted hashes using BCrypt
- Render restaurant locations by Google Maps Api and Geocoder
- CRUD functionality for restaurant reviews, menu items, and orders
- Host images AWS S3
- Add orders to shopping cart, using local storage cookies
- Persists shopping cart data between sessions on the database
Screamless offers an easy browsing experience to all restaurants and their menus without the need to sign up or sign in. However, for better access of restricted features such as orders, reviews, and saved profile, it's recommended for users to have an account. This allows users to effortlessly bookmark their favorite places, have multiple addresses, and most importantly order food!
Using backend Rails validations, customers with invalid credentials will see error messages until requirements are fulfilled, and server requests will be made.
Upon sign-in, user is greeted with their first name, preloaded address onto navigation bar, and past orders. If no address is given, all restaurants will render below past orders.
User can explore each restaurant by search, filters, or explore. Each restaurant has a menu divided into three categories - appetizers, main, and desserts. In addition to menu items, user can look at restaurant's hours of operation, phone, and address (conveniently marked on map with Google API).
At the bottom of each restaurant show page is a section for reviews ordered by date, most recent first. Users can leave a review, edit or delete their review (if applicable).
User can go to their profile page by clicking on their name on the top right corner. There, they can see their personal info such as name, email, address, saved payment methods, past orders, and view receipts.
User can have ease of fast and convenient re-ordering from their favorite restaurants. Upon reorder, user's cart will be loaded with previously purchased items, and a modal will pop up for confirmation. There, they will be able to adjust their order settings and/or add a delivery message.
Each user will have one shopping cart with the following -
- price
- edit quantity option
- delete option
- cancel option
- adjust order settings option
- add delivery message option
User is prompt with a copy of their receipt which lists an estimated arrival time using live time, their itemized orders, and total. User can also leave a review for the restaurant with a rating and description, which will save to the back end and rerender with a new review count and rating (if applicable).