https://github.com/cedrickchee/soshiok
A full stack restaurant app
https://github.com/cedrickchee/soshiok
ecmascript2015 es6 expressjs food fullstack-javascript javascript nodejs restaurant-management store-locator webapp
Last synced: 2 months ago
JSON representation
A full stack restaurant app
- Host: GitHub
- URL: https://github.com/cedrickchee/soshiok
- Owner: cedrickchee
- License: mit
- Created: 2017-05-25T09:55:44.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-06-17T13:31:38.000Z (over 8 years ago)
- Last Synced: 2025-01-18T17:49:36.186Z (about 1 year ago)
- Topics: ecmascript2015, es6, expressjs, food, fullstack-javascript, javascript, nodejs, restaurant-management, store-locator, webapp
- Language: JavaScript
- Size: 13.3 MB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SoShiok · [](https://travis-ci.org/cedrickchee/soshiok)
A full stack restaurant app built using Node.js 7.6+ and modern JavaScript.
***Note: Please do not use this for production. The application is still under heavy development and the API is not stable.***
## Overview
* [Features](#features)
* [Application Architecture](#architecture)
* [Functionalties](#functionalties)
* [Development Stack](#development)
* [Quickstart](#quickstart)
* [Documentation](#documentation)
* [Standard](#standard)
* [Sample Data](#data)
* [Deployment](#deployment)
## Features
Users can:
- Search
- Geolocate
- Review
- Curate their favourite restaurants
## Architecture
The application has three main models
- Users
- Stores
- Reviews
All models are relational.
### Functionalties
The application is designed for today's technology needs such as:
- User authentication
- Database storage
- AJAX REST API
- File upload and image resizing
### Development
Modern JavaScript:
- ECMAScript 6 (ES6) also known as ECMAScript 2015 (ES2015)
- ES6 features are heavily used throughout the app, from destructuring to arrow functions
- ES6 Async + Await
- It allows us to craft easy to read, logical flows without relying on external flow control libraries, chaining multiple promises, or writing spaghetti code by nesting callbacks
- [Express](https://expressjs.com/)
- Fast, unopinionated, minimalist web framework for Node.js
- [Pug](https://pugjs.org/)
- Formerly known as "Jade"
- A robust, elegant, feature rich template engine for Node.js
- [Passport](http://passportjs.org/)
- A simple, unobtrusive authentication for Node.js
- Passport is a middleware for Node.js
- [Sass](http://sass-lang.com/) (Syntactically awesome style sheets)
- A CSS preprocessor
- [Webpack](https://webpack.js.org/)
- A module bundler for modern JavaScript applications
- [MongoDB](https://www.mongodb.com/)
- A document-oriented database and NoSQL database
- Uses JSON-like documents with schemas
## Quickstart
Basically, the app was developed in ES6. You should have knowledge of how functions, variables, Objects, Arrays and other JavaScript fundamentals work.
Prerequisite:
- Runtime: make sure we have Node.js 7.6 and above installed in our development environment.
- Database: we are using MongoDB 3.2.x
Then, clone the git repo. Rename `variables.env.sample` to `variables.env`. Update the environment settings in this configuration file.
Run the following command in your terminal:
Install all node packages (dependencies) listed in `package.json` file:
```bash
npm install
```
Start our server and run the app:
```bash
npm start
```
## Documentation
### Standard
The app was designed and developed based on widely adopted general JavaScript best practices from the industry's best Node.js developers.
### Data
To load sample data, run the following command in your terminal:
```bash
npm run sample
```
If you have previously loaded in this data, you can wipe your database 100% clean with:
```bash
npm run blowitallaway
```
That will populate 16 stores with 3 authors and 41 reviews. The logins for the authors are as follows:
|Name|Email (login)|Password|
|---|---|---|
|Cedric Chee|cedric@example.com|cedric|
|John Doe|john@example.com|john|
|Foo Bar|foo@example.com|foo|
### Deployment
Supports:
- [x] Deploying to Now
- [ ] Deploying to Heroku
- [ ] Digital Ocean Linux
## License
**SoShiok** is an open-source software and is licensed under the [MIT License](./LICENSE).