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