Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zrwusa/bunny-nest
A best practice microservice based on NestJS, used to build RESTful APIs
https://github.com/zrwusa/bunny-nest
dto jwt microservice nestjs oauth2 postgresql protocol restful-api solid-principles typeorm typescript
Last synced: 5 days ago
JSON representation
A best practice microservice based on NestJS, used to build RESTful APIs
- Host: GitHub
- URL: https://github.com/zrwusa/bunny-nest
- Owner: zrwusa
- Created: 2024-09-14T12:24:09.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-09-16T23:58:09.000Z (about 2 months ago)
- Last Synced: 2024-09-27T07:01:14.600Z (about 1 month ago)
- Topics: dto, jwt, microservice, nestjs, oauth2, postgresql, protocol, restful-api, solid-principles, typeorm, typescript
- Language: TypeScript
- Homepage:
- Size: 151 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Description
![system architecture diagram](https://raw.githubusercontent.com/zrwusa/assets/master/images/bunny-nest/bunny-farm.webp)
Bunny Nest is part of this system architecture and is responsible for the API service in this architecture.
It is a microservice framework based on NestJS, used to build RESTful APIs:
- Implements Google and Github OAuth 2.0 authentication, and unifies JWT authentication. Session information is stored in Redis.
- TypeORM combined with PostgreSQL is used to implement structured data storage.
- Standardizes service layer communication protocols and standardizes controller layer communication protocols.
- Implements i18n (internationalization).
- Swagger UI
- SOLID Principle## Project setup
### .env setup
```text
PORT=8080
FRONT_END_PORT=3000POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=your_postgres_password_here
POSTGRES_DATABASE=your_postgres_database_hereGOOGLE_OAUTH2_AUTHORIZATION_URL=https://accounts.google.com/o/oauth2/auth
GOOGLE_OAUTH2_TOKEN_URL=https://oauth2.googleapis.com/token
SWAGGER_OAUTH2_REDIRECT_URL=http://localhost:8080/api/oauth2-redirect.htmlJWT_SECRET=your_secret_key_here
JWT_ACCESS_TOKEN_EXPIRES_IN=15m
JWT_REFRESH_TOKEN_EXPIRES_IN=7d
JWT_SIGN_EXPIRES_IN=60m
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
GOOGLE_CLIENT_ID=your_google_client_id_here
GOOGLE_CLIENT_SECRET=your_google_client_secret_here
GOOGLE_AUTHORIZED_REDIRECT_URI=http://localhost:8080/auth/google/callback
OAUTH2_LOGIN_CALLBACK_REDIRECT_URL=/success
OAUTH2_GOOGLE_STRATEGY_CALLBACK_URL=http://localhost:8080/auth/google/callback
OAUTH2_GITHUB_STRATEGY_CALLBACK_URL=http://localhost:8080/auth/github/callbackGITHUB_CLIENT_ID=your_github_client_id_here
GITHUB_CLIENT_SECRET=your_github_client_secret_here
``````bash
$ pnpm install
```## Compile and run the project
```bash
# development
$ pnpm run start# watch mode
$ pnpm run start:dev# production mode
$ pnpm run start:prod
```## Run tests
```bash
# unit tests
$ pnpm run test# e2e tests
$ pnpm run test:e2e# test coverage
$ pnpm run test:cov
```## Resources
## Stay in touch
## License