Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/willianfalbo/shopping-app
A simplified version of an online shopping application
https://github.com/willianfalbo/shopping-app
ejs-templates express-js javascript mongo-db mongoose multer mvc node-js nodemailer pdfkit sendgrid stripe-payments
Last synced: about 1 month ago
JSON representation
A simplified version of an online shopping application
- Host: GitHub
- URL: https://github.com/willianfalbo/shopping-app
- Owner: willianfalbo
- Created: 2019-09-28T04:26:27.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-11T07:28:02.000Z (almost 2 years ago)
- Last Synced: 2024-09-27T17:23:46.397Z (about 2 months ago)
- Topics: ejs-templates, express-js, javascript, mongo-db, mongoose, multer, mvc, node-js, nodemailer, pdfkit, sendgrid, stripe-payments
- Language: JavaScript
- Homepage:
- Size: 16.8 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Shopping App
A simplified version of an online shopping application. It was created for demonstration purpose only.
### Features
- Authentication: Sign-up, login, logout and reset password e-mail.
- Shopping: Paginated product listing, product details and so on.
- Cart: Add different products to cart and visualise checkout page.
- Orders & Payments: Create orders, enter credit card details, get pdf receipt and view orders.
- Admin Area: Manage products online, upload photos, create products, update and delete.### Quick Preview
**Customer Area**
**Admin Area**
### Quick Start
1. Run `npm i` to install package dependencies.
2. Run `cp .env.sample .env` to create the configuration file.
> **NOTE:** Please make the proper changes in ".env" file.
>
> \* For **sending e-mails**, you must create an account in [SendGrid](https://sendgrid.com). Then, navigate to "Settings > API Keys" menu, generate a new key and change your config file using the generated token.
>
> \* For **using payments**, you must create an account in [Stripe](https://stripe.com). Then, navigate to "Developers > API Keys" menu, copy the Publishable/Secret keys and change your config file using these tokens. ** **You must set an account name; otherwise, it will not work**.3. Run `docker-compose up --build` to set up a quick database. _** You can skip this step if you don't want to use Docker._
> **IMPORTANT:** Before running above command, make sure you have [docker](https://docs.docker.com/engine/install/) and [docker-compose](https://docs.docker.com/compose/install/) installed. * It runs the **docker-compose.yml** file.
4. Run `npm run seed` to Seed data into the database.
> This command creates a couple of products and the Admin user (Username: `[email protected]` / Password: `password`).
5. Run `npm run start:dev` for starting the server.
### Stack
- Node.js & Javascript
- MVC pattern & Express.js
- EJS as templating engine
- MongoDB database & Mongoose.js ODM
- Session authentication & Password-Hashing with bcrypt
- File uploads with Multer
- Nodemailer for sending e-mails & SendGrid
- Payment processing with Stripe
- Pdfkit for generating PDF documents
- Loggin files with Morgan### Credits
This app was created based on [Maximilian Schwarzmüller](https://academind.com/team/#maximilian)'s course. [NodeJS - The Complete Guide](https://academind.com/learn/our-courses/).