This is the homework assignment 4 of the course "Node JS masterClass".
These are some features that I considered to make the project:
- ECMAScript 6
- Async/Await
- Airbnb JS Style Guide
- Functionality inspired on Express.JS
- x-www-form-urlencoded request support
- JSON request support
- HTTP/HTTPS support
- Implementation of online payments with the Stripe API
- Implementation of notifications by email with Mailgun API
- No NPM or third-party dependencies
- Static content support
- Html templates
- CLI
Command |
Options |
Example |
Description |
exit |
none |
$ exit |
Kill the CLI (and the rest of the application) |
clear |
none |
$ clear |
It clears the screen or console window of commands. |
man |
none |
$ man |
Show this help page |
help |
none |
$ help |
Show this help page |
product |
--all, --one {product name} |
$ product --one pizza |
Show info about available products |
user |
--all, --one {email} |
$ user --all |
Show info about registed users |
last sessions |
none |
$ last sessions |
Show the users who have signed up in the last 24 hours. |
orders |
--last, --id {value} |
$ orders --last |
Get a specific order by the id or get the all orders registered in the last 24 hours. |
Route |
Method |
Requires auth |
/ |
GET |
false |
/login |
GET |
false |
/signup |
GET |
false |
/order |
GET |
true |
/profile |
GET |
true |
Route |
Method |
Required Data |
Optional Data |
Description |
/api/users |
GET |
none |
none |
Returns all registered users |
/api/user |
GET |
queryString: username |
none |
Returns a specified user by the username field. |
/api/user |
POST |
body: username, fullname, email, address, and password. |
none |
Creates a new user |
/api/user |
POST |
queryString: username |
body: fullname, email, address, and password. |
this route updates a specific user by the username field, all the fields that are provided will be updated. |
Route |
Method |
Required Data |
Optional Data |
Description |
/api/products |
GET |
headers: token; queryString: id |
none |
Get items |
/api/product |
GET |
headers: token |
none |
Get a specific item |
/api/product |
POST |
headers: token; body: name, price, description, currency, urlImage |
none |
Create a new item |
/api/product |
PUT |
headers: token; queryString: id |
body: name, price, description, currency, urlImage |
Update a specific item |
/api/product |
DELETE |
headers: token; queryString: id |
none |
Delete a specific item |
Route |
Method |
Required Data |
Optional Data |
Description |
/api/auth/login |
POST |
body: username, password |
none |
Login |
/api/auth/logout |
POST |
headers: token |
none |
Logout |
Route |
Method |
Required Data |
Optional Data |
Description |
/api/orders |
GET |
headers: token |
none |
Get the orders |
/api/order |
GET |
headers: token; queryString: username |
none |
Get the orders related to a user |
/api/order/item |
POST |
headers: token; body: username, productId, quantity |
none |
Add item to a order |
/api/order/item |
DELETE |
headers: token; body: username, productId |
none |
remove item from a order |
/api/order |
DELETE |
headers: token; queryString: username |
none |
Delete a order |
/api/order/pay |
POST |
headers: token, stripeSource; queryString: username |
none |
Order payment |
- Clone this repo
$ git clone https://github.com/JoseNoriegaa/node-m-c-hw4.git
- set the environment variables
STRIPE_PK=YOUR_STRIPE_PUBLIC_KEY
STRIPE_SK=YOUR_STRIPE_SECRET_KEY
MAILGUN_DOMAIN=YOUR_MAILGUN_DOMAIN
MAILGUN_API_KEY=YOUR_MAILGUN_API_KEY
MAINGUN_SENDER=Pizza App <postmaster@YOUR_MAILGUN_DOMAIN>
- Run the proyect:
$ cd node-m-c-hw4
$ node index
Jose Noriega
Node version: v11.1.0