- Thorough documentation: Written with the same care as NodeJS docs.
- Guaranteed consistency: Opinionated linting for NodeJS and Typescript/JSON integrated into Visual Studio Code and run against staged files on pre-commit.
- Getting Started
- Pre-Configured
- Environment
- Available Scripts
- Architecture
- Linting and Formating
- Editor intergration
Make sure you have the following installed:
- Node (at least the latest LTS)
- Eslint (at least the lates)
- Typescript (at least the latest)
# 1. Clone the repository.
git clone https://github.com/MochamadAkbar/node-restful.git
# 2. Enter your cloned directory.
cd node-restful
# 3. Install dependencies. Make sure yarn installed: https://yarnpkg.com/
yarn install
# 4. Run on your local.
# This command is a default to run development mode,
# and wil be listen http://localhost:5000
yarn run start:dev
- NestJS as framework.
- typeorm as orm.
- joi as validator.
- jsonwebtoken.
For the first time you must create environment in root directory. This List Environment must be create in this project:
.env
.env.example is example .env for this source
In the project directory, you can run:
# 1. Build (note: make sure the environment is correct for build)
yarn run build
# 2. clear latest build and reBuild (note: make sure the environment is correct for build)
yarn run build:clean
# 3. Run prettier format
yarn run format
# 4. Run in production server
yarn run start
# 5. Run in development server
yarn run start:dev
# 6. Run in development server with debug mode
yarn run start:debug
# 7. Delete node_modules and re-install dependencies from package.json
yarn run install:clean
# 8. Typeorm CLI
yarn run typeorm
# 9. Typeorm CLI create migration
yarn run migrate:create [./path-to-miration/migration-name]
# 10. Typeorm CLI run migrations
yarn run migrate:run
# 11. Typeorm CLI revert migrations
yarn run migrate:revert
# 12. Check Lint all files
yarn run lint
# 13. Check Lint all files, fixing many violations automatically
yarn run list:fix
# 14. Run the jest
yarn run test
# 15. Watch the unit-test
yarn run test:watch
# 16. Watch the unit-test with coverage
yarn run test:cov
# 17. Watch the unit-test with debug mode
yarn run test:debug
# 18. Watch the e2e test
yarn run test:e2e├── src
| ├── common
| ├── decorators
| ├── domain
| | ├── ...
| | ├── module-name
| | | ├── entities
| | | ├── controllers
| | | ├── repositories
| | | ├── services
| | | └── *.module.ts
| | ├── controller.ts
| | ├── entity.ts
| | ├── repository.ts
| | ├── schema.ts
| ├── exceptions
| | ├── http.exception.ts
| | └── ...
| ├── interfaces
| | ├── database
| | | ├── migrations
| | | ├── database.module.ts
| | | └── database.service.ts
| ├── middlewares
| | ├── auth.middleware.ts
| | └── ...
| ├── types
| | └── ...
| ├── app.controller.ts
| ├── app.module.ts
| ├── app.service.ts
| ├── config.ts
| └── msin.ts
├── tests
| ├── *.e2e-spect.ts
| └── jest-e2e.json
├── node_modules
├── .editorconfig
├── .env.example
├── .eslintignore
├── .eslintrc.json
├── .gitignore
├── .prettierrc
├── docker-compose.yaml
├── Dockerfile
├── nest-cli.json
├── package.json
├── tsconfig.build.json
├── tsconfig.json
└── README.md
Contains the database
-
commonContains the utilities for the application -
decoratorsContains the custom decorators for the application -
domainContains the domain layer of the application, which includes all modules and detail entities, controllers, repositories, schemas and services.entitiesContains the core entities of the application.controllersContains the endpoint implementations for the application.schemasContains the joi schemas and open api schemas for the application.repositoriesContains the interfaces for accessing the data layer.servicesContains the high-level business logic of the application.
-
exceptionsContains the http error exceptions handler. -
interfacesContains the interfaces layer of the application, which includes data access implementation details.databaseContains the database access implementation details.
-
middlewaresContains the middlewares for the application. -
typesContains types declaration for the application. -
app.controller.tsContains the root endpoint implementations of the application. -
app.module.tsContains the root nest modules of the application. -
app.service.tsContains the root high-level business logic of the application. -
config.tsContains the configuration settings for the application. -
main.tsContains the HTTP server implementation of the application. -
testsContains the unit test and e2e test of the application.
- Typescript is linted by ESLint.
There are a few different contexts in which the linters run.
# Lint all files
yarn run lint
# Lint all files, fixing many violations automatically
yarn run lint:fixIn supported editors, all files will be linted and formatted on-save. See Editor Integration for details.
This projects with opinionated defaults, but you can edit each tools configuration in the following config files:
- ESLint
.eslintrc.json.eslintignore
This project is best developed in VS Code. With the recommended extensions and setting in your VS Code, you get:
- Syntax highlighting for all files
- Intellisense for all files
- Lint-on-save for all files
- In-editor results on save for unit tests
Recommended for this project:
- EditorConfig
- ESLint
- Javascript (ES6) code snippets
To Configure extendsions in your VS Code enter command:
For Windows and Linux.
CRTL + X
For Mac.
COMMAND + X
To Configure Lint-on-save. In your local VS Code Create User Setting or edit in Json file and will be automatically generated setting.json. And enter this code.
{
"extensions.ignoreRecommendations": false,
"eslint.validate": [
"typscript",
"javascript"
],
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}This project uses ESLint to catch errors and avoid bikeshedding by enforcing a common code style.
- See NestJS Documentation.
- See Typeorm Documentation.
- See Joi Documentation