Skip to content

GeekyAnts/express-typescript

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1fd9f44 · Jun 24, 2022
Dec 29, 2020
Sep 20, 2018
Mar 11, 2022
Sep 2, 2020
Sep 12, 2018
Jun 24, 2022
Oct 31, 2019
Dec 4, 2020
Dec 4, 2020
Jun 24, 2022
Aug 21, 2018
Aug 21, 2018
Dec 4, 2020
Aug 21, 2018
Aug 21, 2018
Jan 3, 2022
Sep 20, 2018
Apr 29, 2021
Sep 18, 2018
Dec 4, 2020
Dec 4, 2020
Aug 30, 2018
Jun 24, 2022
Mar 11, 2022
Aug 26, 2018

Repository files navigation

Hey There! 🙌 
🤾 that ⭐️ button if you like this boilerplate. 

express-typescript

A boilerplate for Node.js App.

  • This boilerplate is built using Express.js web framework, and is using Typescript Lang for writing the app's logic.
  • It uses Node's Cluster API, this helps us to take advantage of multi-core systems & to handle the load.
  • For storing custom constant configurations within the process.env - DotEnv package is used.
  • For Database - Repo contains the use of Mongoose (ie. MongoDB object modeling for Node.js).
  • For Cache - Repo contains the use of memory-cache (ie. A simple in-memory cache for node.js).
  • For Routing - Repo contains the use of express-router & have distributed Routes into two files ie. Web Routes & API Routes.
  • For Route Auth Middleware - Web routes are configured with CSRF Token while the API routes are configured with JSON Web Token.
  • For Strategies Auth - Repo contains the use of the Passport.js. Passport.js is compatible with Express.js and is authentication middleware for Node.js.
  • For Logging - Repo uses custom Log class built in middlewares folder, and it creates logs file by date & removes the log files after 'X' days (You can define that 'X' in the .env file).
  • For Handling Exception - Repo contains two classes ie. Handler & NativeEvent.
  • To Log - use Log.info('Your message should go here!'). Other options for logging are Log.warn, Log.error & Log.custom.
  • For views - Repo contains the use of PUG template engine.
  • For background queues - Repo contains the use of Kue. For more details, please review the Queue class.

Contents

Global Requisites

  • node (>= 10.5.0)
  • tsc (>= 3.0.1)
  • typescript (>= 3.0.1)
  • mongoose (>= 3.6.2)
  • redis

App Structure

Note: I am mentioning only files/folders which you need to configure if required

├── dist
├── public
├── src
│   ├── controllers
│   │   ├── Api
│   │   │   ├── Auth
│   │   │   │   ├── Login.ts
│   │   │   │   ├── RefreshToken.ts
│   │   │   │   └── Register.ts
│   │   │   └── Home.ts
│   │   ├── Auth
│   │   │   ├── Login.ts
│   │   │   ├── Logout.ts
│   │   │   ├── Register.ts
│   │   │   └── Social.ts
│   │   ├── Account.ts
│   │   └── Home.ts
│   ├── exception
│   │   ├── Handler.ts
│   │   └── NativeEvent.ts
│   ├── interfaces
│   │   ├── models
│   │   │   └── user.ts
│   │   └── vendors
│   │        ├── index.ts
│   │        ├── INext.ts
│   │        ├── IRequest.ts
│   │        └── IResponse.ts
│   ├── middlewares
│   │   ├── CORS.ts
│   │   ├── CsrfToken.ts
│   │   ├── Http.ts
│   │   ├── Kernel.ts
│   │   ├── Log.ts
│   │   ├── Statics.ts
│   │   ├── StatusMonitor.ts
│   │   └── View.ts
│   ├── models
│   │   └── User.ts
│   ├── providers
│   │   ├── App.ts
│   │   ├── Cache.ts
│   │   ├── Database.ts
│   │   ├── Express.ts
│   │   ├── Locals.ts
│   │   ├── Passport.ts
│   │   ├── Queue.ts
│   │   └── Routes.ts
│   ├── routes
│   │   ├── Api.ts
│   │   └── Web.ts
│   ├── services
│   │   └── strategies
│   │        ├── Google.ts
│   │        ├── Local.ts
│   │        └── Twitter.ts
│   └── index.ts
├── views
│   ├── includes
│   ├── modals
│   ├── pages
│   ├── partials
│   ├── static
│   │   ├── css/*.css
│   │   └── js/*.js
│   └── layout.pug
├── .env
├── .gitignore
├── nodemon.json
├── package.json
├── README.md
├── tsconfig.json
└── tslint.json

Install, Configure & Run

Below mentioned are the steps to install, configure & run in your platform/distributions.

# Clone the repo.
git clone https://github.com/GeekyAnts/express-typescript.git;

# Goto the cloned project folder.
cd nodets;
# Without Docker

# Note: It is assumed here that you have MongoDB running in the background and that you have created the database.

# Install NPM dependencies.
# Note: You can review the list of dependencies from the below link.
# https://github.com/faizahmedfarooqui/nodets/network/dependencies
npm install;

# Edit your DotEnv file using any editor of your choice.
# Please Note: You should add all the configurations details
# or else default values will be used!
vim .env;

# Run the app
npm run dev;
# With Docker

# Note: It is assumed here that you have Docker running in the background.

# Run the app in docker as a foreground process
docker-compose up

# Run the app in docker as a background process
docker-compose up -d

List of Routes

# Web Routes:

+--------+-------------------------+
  Method | URI
+--------+-------------------------+
  GET    | /
  GET    | /signup
  POST   | /signup
  GET    | /login
  POST   | /login
  GET    | /logout
  GET    | /account
  GET    | /auth/google
  GET    | /auth/google/callback
  GET    | /auth/twitter
  GET    | /auth/twitter/callback
  GET    | /status-monitor
+--------+-------------------------+

# API Routes:

+--------+-------------------------+
  Method | URI
+--------+-------------------------+
  POST   | /api
  POST   | /api/auth/login
  POST   | /api/auth/register
  POST   | /api/auth/refresh-token
+--------+-------------------------+

Screens

Home / Landing Page

Home / Landing Page

Note: This page has sub-sections, like about-us, contact-us & portfolio

LogIn Page

LogIn Page

Note: LogIn with Providers

SignUp Page

SignUp Page

Note: SignUp with Providers

Dashboard Page

Dashboard Page

With Dropdown Menu

Dashboard Page with Dropdown Menu

Page Not Found Page

Page Not Found Page

Note: In case the requested URI does not exist, app shows this page

Under Maintenance Page

Under Maintenance Page

Note: In case an error is generated, so instead of plain errors we can show the under maintenance page.