Aucune description

x1ongzhu e7260b5101 . il y a 1 an
.vscode 672301f4b1 . il y a 2 ans
certs d3b281a502 path il y a 2 ans
res 869bb35436 . il y a 1 an
src e7260b5101 . il y a 1 an
templates 399b41b465 first commit il y a 2 ans
test d3b281a502 path il y a 2 ans
views d277b5d018 客服 il y a 2 ans
.env 3db2920027 . il y a 2 ans
.env.production 8aaed24f9d . il y a 2 ans
.eslintrc.js 399b41b465 first commit il y a 2 ans
.gitignore 399b41b465 first commit il y a 2 ans
.prettierrc 399b41b465 first commit il y a 2 ans
1.md 4fe1903174 il y a 2 ans
111.puml 015db6fe8b il y a 2 ans
LICENSE 399b41b465 first commit il y a 2 ans
README.md 399b41b465 first commit il y a 2 ans
afterBuild.js 249ebf4096 . il y a 2 ans
build.sh 399b41b465 first commit il y a 2 ans
docker-compose.yml 399b41b465 first commit il y a 2 ans
fix.js 80bc8e91e4 . il y a 2 ans
g.mjs 399b41b465 first commit il y a 2 ans
graph.json 399b41b465 first commit il y a 2 ans
langChain.mjs c89338f1e2 . il y a 2 ans
nest-cli.json 792fb1e2d6 paper il y a 2 ans
package-lock.json 5771d7318f . il y a 2 ans
package.json 1bce8df324 . il y a 1 an
testupload.ts 249ebf4096 . il y a 2 ans
tsconfig.build.json 399b41b465 first commit il y a 2 ans
tsconfig.json 80bc8e91e4 . il y a 2 ans
typeorm-cli.config.ts 399b41b465 first commit il y a 2 ans
yarn.lock 1bce8df324 . il y a 1 an

README.md

NestJSApiBoilerplateJWT

An API Boilerplate to create a ready-to-use REST API in seconds with NestJS 9.x and JWT Auth System :heart_eyes_cat:

Installation

   $ npm install

Set Enviroment for secret key JWT and other configurations

   $ cp .env.example .env

To set up on multiple environments, such as dev, stage or prod, we do as follows:

   $ cp .env.example .env.dev # or .env.stage, etc

Config settings .env for send notification when a user registers, forgot password or change password

   EMAIL_HOST=smtp.mailtrap.io
   EMAIL_PORT=2525
   EMAIL_AUTH_USER=[:user]
   EMAIL_AUTH_PASSWORD=[:password]
   EMAIL_DEBUG=true
   EMAIL_LOGGER=true
   EMAIL_LAYOUT_DIR='templates/emails/'
   EMAIL_PARTIAL_DIR='templates/emails/'
   EMAIL_VIEW_PATH='/templates/emails/'
   EMAIL_DEFAULT_LAYOUT='index'

Config settings .env for connect MySQL

Once the database has been configured, start the Nest App via npm run start:dev it automatically synchronizes the entities so ready to use. :heart_eyes_cat:

   TYPEORM_CONNECTION = "mysql"
   TYPEORM_HOST = "localhost"
   TYPEORM_PORT = 3306
   TYPEORM_USERNAME = [:user]
   TYPEORM_PASSWORD = [:password]
   TYPEORM_DATABASE = [:database]
   TYPEORM_AUTO_SCHEMA_SYNC = true
   TYPEORM_ENTITIES = "dist/**/*.entity.js"
   TYPEORM_SUBSCRIBERS = "dist/subscriber/**/*.js"
   TYPEORM_MIGRATIONS = "dist/migrations/**/*.js"
   TYPEORM_ENTITIES_DIR = "src/entity"
   TYPEORM_MIGRATIONS_DIR = "src/migration"
   TYPEORM_SUBSCRIBERS_DIR = "src/subscriber"

Install TypeScript Node

   $ npm install -g ts-node

Running migrations with typeorm

   $ ts-node node_modules/.bin/typeorm migration:run -d dist/typeorm-cli.config

or

   $ node_modules/.bin/typeorm migration:run -d dist/typeorm-cli.config

Running the app

    # development
    $ npm run start

    # watch mode
    $ npm run start:dev

    # production mode
    $ npm run start:prod

Runnig the app in REPL mode

   $ npm run start -- --entryFile repl

or

   $ npm run start:repl

Docker

There is a docker-compose.yml file for starting MySQL with Docker.

$ docker-compose up db

After running, you can stop the Docker container with

$ docker-compose down

Url Swagger for Api Documentation


http://127.0.0.1:3000/docs

or


http://127.0.0.1:3000/docs-json

or


http://127.0.0.1:3000/docs-yaml

Configure SWAGGER_USER and SWAGGER_PASSWORD in the .env file and set NODE_ENV to local or devor staging to access the SWAGGER(Open Api) documentation with basic authentication.


NODE_ENV=[:enviroments]
SWAGGER_USER=[:user]
SWAGGER_PASSWORD=[:password]

````

If you want to add more environments, include them in the `SWAGGER_ENVS` array in `main.ts`, see the following:

typescript const SWAGGER_ENVS = ['local', 'dev', 'staging']; ````

Configuring the NODE_API_PORT environment variable as the default port if you don't want to use the default

   NODE_API_PORT=3333

Configuring the ENDPOINT_CORS environment variable for app frontend

   ENDPOINT_CORS='http://127.0.0.1:4200'

Getting secure resource with Curl

    $ curl -H 'content-type: application/json' -v -X GET http://127.0.0.1:3000/api/secure  -H 'Authorization: Bearer [:token]'

Generate Token JWT Authentication with Curl

   $ curl -H 'content-type: application/json' -v -X POST -d '{"email": "tony_admin@nest.it", "password": "secret"}' http://127.0.0.1:3000/api/auth/login

Registration user with Curl

   $ curl -H 'content-type: application/json' -v -X POST -d '{"name": "tony", "email": "tony_admin@nest.it", "username":"tony_admin", "password": "secret"}' http://127.0.0.1:3000/api/auth/register

Forgot password with curl

   $ curl -H 'content-type: application/json' -v -X POST -d '{"email": "tony_admin@nest.it"}' http://127.0.0.1:3000/api/auth/forgot-password

Change password User with curl

   $ curl -H 'content-type: application/json' -v -X POST -d '{"email": "tony_admin@nest.it", "password": "secret123"}' http://127.0.0.1:3000/api/auth/change-password  -H 'Authorization: Bearer [:token]'

Update profile User with curl

   $ curl -H 'content-type: application/json' -v -X PUT -d '{"name": "tony", "email": "tony_admin@nest.it", "username": "tony_admin"}' http://127.0.0.1:3000/api/users/:id/profile  -H 'Authorization: Bearer [:token]'

Users list with Curl

   $ curl -H 'content-type: application/json' -H 'Accept: application/json' -v -X GET http://127.0.0.1:3000/api/users  -H 'Authorization: Bearer [:token]'

User by Id with Curl

   $ curl -H 'content-type: application/json' -H 'Accept: application/json' -v -X GET http://127.0.0.1:3000/api/users/:id  -H 'Authorization: Bearer [:token]'

Update User with Curl

   $ curl -H 'content-type: application/json' -v -X PATCH -d '{"name": "tony", "email": "tony_admin@nest.it", "username": "tony_admin", "password":"secret"}' http://127.0.0.1:3000/api/users/:id  -H 'Authorization: Bearer [:token]'

Delete User by Id with Curl

   $ curl -H 'content-type: application/json' -H 'Accept: application/json' -v -X DELETE http://127.0.0.1:3000/api/users/:id  -H 'Authorization: Bearer [:token]'