Setup and development
First-time setup
Make sure you have the following installed:
Installation
# Install dependencies from package.json
yarn install
Note: don't delete yarn.lock before installation, See more in yarn docs
Database
Note: Awesome NestJS Boilerplate uses TypeORM with Data Mapper pattern.
Configuration
Before start install PostgreSQL and fill correct configurations in .env
file
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE=nest_boilerplate
Some helper script to work with database
# To create new migration file
yarn migration:create migration_name
# Truncate full database (note: it isn't deleting the database)
yarn schema:drop
# Generate migration from update of entities
yarn migration:generate migration_name
MySQL
If you need to use MySQL / MariaDB instead of PostgreSQL, follow the steps below:
(assuming you have installed mysql in your system and it is running on port 3306)
- Make the following entries in the #DB section in
.env
file
#== DB
DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USERNAME=mysql
DB_PASSWORD=mysql
DB_DATABASE=nest_boilerplate
DB_ROOT_PASSWORD=mysql
DB_ALLOW_EMPTY_PASSWORD=yes
- Change the DB in TypeORM to MySQL. You can do that by heading over to the file
ormconfig.ts
.
...
export const dataSource = new DataSource({
type: 'mysql', // <-- Just write mysql here
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
namingStrategy: new SnakeNamingStrategy(),
subscribers: [UserSubscriber],
entities: [
'src/modules/**/*.entity{.ts,.js}',
'src/modules/**/*.view-entity{.ts,.js}',
],
migrations: ['src/database/migrations/*{.ts,.js}'],
});
- Delete all the files in migrations folder (
src/database/migrations
) - Run the following commands in the root folder of the project, to regenerate the migrations:
yarn typeorm migration:generate ./src/database/migrations/MySQLMigrations
These steps may work for other databases supported by TypeORM. If they work, let us know and we'll add it to the docs!
Docker Compose
After completing the steps above, you can use this docker-compose file for awesome-nest-boilerplate with MySQL (instead of PostgreSQL).
Dev server
Note: If you're on Linux and see an
ENOSPC
error when running the commands below, you must increase the number of available file watchers.
# Launch the dev server
yarn start:dev
# Launch the dev server with file watcher
yarn watch:dev
# Launch the dev server and enable remote debugger with file watcher
yarn debug:dev
Generators
This project includes generators to speed up common development tasks. Commands include:
Note: Make sure you already have the nest-cli globally installed
# Install nest-cli globally
yarn global add @nestjs/cli
# Generate a new service
nest generate service users
# Generate a new class
nest g class users
Note: if you love generators then you can find full list of command in official Nest-cli Docs.
Docker
if you are familiar with docker and docker-compose then you can run built in docker-compose file, which will install and configure application and database for you.
Docker installation
Download docker from Official website
- Mac https://docs.docker.com/docker-for-mac/install/
- Windows https://docs.docker.com/docker-for-windows/install/
- Ubuntu https://docs.docker.com/install/linux/docker-ce/ubuntu/
Docker-compose installation
Download docker from Official website
Run
Open terminal and navigate to project directory and run the following command.
PORT=3000 docker-compose up
Note: application will run on port 3000 (http://localhost:3000)
Navigate to http://localhost:8080 and connect to you database with the following configurations
host: postgres
user: postgres
pass: postgres
create database nest_boilerplate
and your application fully is ready to use.