api.nerd.api-video-readme.mp4
- A personal project I created to learn and improve my skills in:
- NestJS
- Typescript
- Clean/Hexagonal Architecture Principles (ports, useCases, repositories, etc)
- Stateless Authentication & Authorization using JWT
- API (REST) development and documentation
- Tests (Unit, integration, TDD, etc)
- Web Scrapping
- API Requests Handling & Limit & Quota
- SaaS (Software as a Service) Backend Development
- And so on
- This project use 2 databases:
- JSONs files for simplicity and fast development.
- PostgresSQL using PrismaORM (migrations, seeds, prisma studio) and Docker
- Git
- NodeJS v20
- VSCode
- Prisma ORM
- Docker
- PostgreSQL
- Telegram API for Logs: https://core.telegram.org/api
- Deploy: https://render.com/
- Payment API: https://stripe.com/en-br
- Emails API: https://resend.com/
- GitHub Actions for CI/CD
- Linter and Prettier to format code
- Unit Tests using mocks
- Integration Tests
- Swagger API Documentation
- Authentication, Authorization and Google & Github Social Login
- FrontEnd Source Code: https://github.com/AlexGalhardo/nerdapi.com
- Documentation Source code: https://github.com/AlexGalhardo/docs.nerdapi.com
- Docs Live: https://docs.nerdapi.com
- Clone repository
git clone git@github.com:AlexGalhardo/api.nerdapi.com.git
- Enter repository
cd api.nerdapi.com/
- Install dependencies
npm install
- Setup your enviroment variables
cp .env-example .env
- Start Docker, PrismaORM, Migrations and Seeds
sh setup.sh
- To Start Prisma Studio:
npm run prisma:studio
- Start local server
npm run dev
- Go to: http://localhost:4000/
- To created build to deploy run:
npm run build
- To test build production locally run:
npm run start
- Run unit tests:
npm run test
- Run integrations tests:
npm run test:integration
-
You can see the HTTP Requests references inside folder rest-client/
-
You can also import file
docs/INSOMNIA_API_NERDAPI_HTTP_REQUESTS_COLLECTION.json
to your Insomnia HTTP Client -
You can also see Swagger API documentation in: http://localhost:4000/api
Copyright (c) August 2023-present, Alex Galhardo