nest-core
nest-core copied to clipboard
NestJS Boilerplate Project. Docs coming soon.
Nest Boilerplate Project
Nest Boilerplate Project is powered by Nest
Please use a template from README.sample.md for your real project README.md. An example can be found in README.example.md
π Introduction
Powered by Nest and Typescript, this boilerplate project will make your life easier when setup a new project without worrying too much about the architecture, routing, validation, middleware, ...etc. This boilerplate project can be fully customized to your needs.
Thanks to VSCode and Typescript, we will have a fully intellisense when coding. No more magic function names appear out of nowhere, or some global functions that we have no idea where it is located.
We want to hear your feedback and your suggestion on this project to make it more powerful, robust and dynamic.
Also Read How to become a back-end developer
ποΈοΈ Getting Started
Prerequisite
Commands
Check your environment variables
To set your application environment variables create a
.envfile. There is an.env.examplefile to follow.
Install dependencies
yarn install
Run in development environment
# running nodemon
yarn dev
Run in production environment
# compile typescript
yarn build
# compile and run with pm2
yarn start
π¦ Architecture
- Project Structure
- Built-in Modules
- How to start the project
Project Structure
Structure your solution by self-contained components
β’
βββ πassets # Contain any files for your app. ex: email template, static data json
βββ πconfig # Contain any configuration from a third party library. ex: firebase config
βββ πpublic # Contain access files via public
βββ πsrc # Main directory that stores all the business logic
β βββ πapi # Yes, Api you know it
β βββ πcommon # Contain your custom functions
β βββ πlib # Built-In modules
β βββ πmodels # Contain Sequelize models
β βββ πqueries # Contain raw SQL files
β βββ πschema # Contain Mongodb schema
β βββ πapp.module.ts # Contain in-app modules
β βββ πindex.ts # Server configuration and startup
Built-in Modules
- Config
- Firebase Admin
- Google Cloud Storage
- Mailer
- Mongoose
- Redis
- S3
- Sequelize
- Socket
- Authentication
- Cron Scheduler
- Multer Upload
- Social
- Excel
How to start the project
This project will not have the feature you need or you don't need any of our features. To simply start to project, you have to take a look into some files.
The main entry point: index.ts
This project is no doubt using express as a default. If you are familiar with express then you are good to go. You can set any configuration, setting, middleware, document within this file.
async function bootstrap() {
const app = await NestFactory.create(ApplicationModule);
// =================================
// configureExpressSettings
// =================================
app.set();
// =================================
// configureExpressMiddleware
// =================================
app.use();
// =================================
// configureNestGlobals
// =================================
app.useGlobalGuards();
app.useGlobalFilters();
app.useGlobalPipes();
// =================================
// configureNestSwagger
// =================================
const options = new DocumentBuilder()
.setTitle('Nest Boilerplate Project')
.setContact('Dominic Preap', 'https://github.com/Dominic-Preap', '[email protected]')
.setVersion('1.0')
.addBearerAuth()
.build();
const document = SwaggerModule.createDocument(app, options);
SwaggerModule.setup('/docs', app, document);
}
Set your own modules: app.module.ts
This file controls all of your module. The required module for this file is ApiModule and ConfigModule. Un-comment the module that you need.
ApiModulestores every route handlers, business logic, and task scheduler as such.ConfigModulestores and validates environment file.env.
import { Module } from '@nestjs/common';
import { ConfigModule } from '@lib/config';
import { ApiModule } from './api/api.module';
@Module({
imports: [ApiModule, ConfigModule]
})
export class ApplicationModule {}