express-template-by-amr
v1.0.0
Published
<div float="left" align="middle">
Downloads
2
Readme
Express Template
Project Requirements
This is an node Express template Project that is pre configured with the following tools : node-express, typescript, prettier, eslint and jasmine
Installation
You need to have Node & Docker installed in your machine, then you can follow one of these two ways to clone and install project dependencies.
One way
- Is to open your terminal and run command
npx express-template-by-amr
& follow instructions on your terminal.
Another way
1- clone repo on https://github.com/3amr7ussein/express-template-by-amr
you local machine
2- cd into project directory and run npm install
3- create .env file in the project directory and copy/paste https://github.com/3amr7ussein/.env-files/blob/main/.env
4- run docker-compose up
& keep this terminal running
5- Open new terminal and run project scripts
npm run test
to run jasmine unit test on the projectnpm start
to fill database with dummy data & start server on http://localhost:4000
Endpoints
Main Route
| HTTP Verbs | Endpoints | Action | | ---------- | --------- | ----------------- | | GET | /signup | Sign Up [Page] | | POST | /signup | Create New User | | GET | /signin | Sign In [Page] | | POST | /signin | Authenticate user | | GET | /signout | Remove user token |
users/
Route
| HTTP Verbs | Endpoints | Action |
| ---------- | ------------- | ---------------------------------------------------- |
| GET | / | Users Table [Require Authentication] |
| GET | /current-user | current logined user [Require Authentication] |
| GET | /search | Search User By ID [Page] [Require Authentication] |
| POST | /:id | Get data of user with :id
[Require Authentication] |
products/
Route
| HTTP Verbs | Endpoints | Action |
| ---------- | ------------------- | -------------------------------------------- |
| GET | / | Products Table [Require Authentication] |
| GET | /top | top 5 popular products |
| GET | /create | New product [Page] [Require Authentication] |
| POST | /create | Add new product row [Require Authentication] |
| GET | /search | Search Products [Page] |
| GET | /:id | Search Product By :id
|
| GET | /category | Find product by category [Page] |
| GET | /category/:category | Search Products by :category
|
orders/
Route
| HTTP Verbs | Endpoints | Action |
| ---------- | ------------------ | ------------------------------------------------------------- |
| GET | / | Orders Table [Page] |
| GET | /create | New Order [Page] |
| POST | /create | Add New Order Row |
| GET | /addItem | New Order Item [Page] |
| POST | /addItem | Add New Order Item |
| GET | /current | User Active Order [Page] [Require Authentication] |
| GET | /current/:userId | Get User Active Order by userId
[Require Authentication] |
| GET | /completed | User Completed Order [Page] [Require Authentication] |
| GET | /completed/:userId | Get User Completed Order by userId
[Require Authentication] |
Database Schema
Used Technologies
NodeJS This is a cross-platform runtime environment built on Chrome's V8 JavaScript engine used in running JavaScript codes on the server. It allows for installation and managing of dependencies and communication with databases.
ExpressJS This is a NodeJS web application framework.
Jasmine Jasmine is a behavior-driven development framework for testing JavaScript code.
Docker Docker’s comprehensive end to end platform includes UIs, CLIs, APIs and security that are engineered to work together across the entire application delivery lifecycle.