This project is a starter for Nodejs-Express-Mongoose with Typescript.
Dependencies are limited to strict minimum.
yarn install
|| npm install
Gulp takes care of recompiling and restarting the server on file change:
In developement: yarn serve
|| npm run serve
Or using only the TypeScript Compiler: yarn serve-tsc
|| npm run serve-tsc
Start the production server (you must build for production before your serve for production)
yarn build-prod
|| npm run build-prod
yarn serve-prod
|| npm run serve-prod
Controllers are the core of the system. A controller can listen to HTTP methods (GET, POST, PUT, DELETE) on a given URL.
A controller extends the Controller class.
A simple controller which returns 'ok' when called with the HTTP GET method looks like this:
export class ControllerOK extends Controller {
constructor() {
super();
}
get() {
this.res.send('ok');
}
}
A custom router is used to redirect HTTP requests to the controllers.
In index.ts
const router = new RestRouter();
In order to bind a Controller to an URL.
router.bind('/tell-me-ok', new ControllerOK());
The logger
object is used to log colorful text in the console as well as creating a log file when in production mode.
Initiate the logger once in index.ts
logger.init()
log() warn() error()
logger.log('a','b','c')
logger.warn('a','b','c')
logger.error('a','b','c')
Mongoose models and their respective schemas should be put in the src/models
directory (each pair in a single file).