This project is a backend developed in Node.js with TypeScript and Fastify, designed to serve as a portfolio case and also as the foundation for a desktop application. The goal is have a tiny CRUD core and a heavyweight AWS pipe
The entire API will be documented and tested using Postman, including examples and environment variables for ease of use.
- Create a robust, modular, and scalable tiny API.
- Containerized the API using Docker to scale the application
- Building a pipe using github actions and send to AWS
- API create : Make a tiny API using Node.js and typescript
- Docker config containerized a application
- CI/CD with Github actions -> build, test, coverage, image push
The system follows a modular monolith design with clear domain boundaries, packaged into a single deployable service on AWS.
- Modular domain structure — each module has its own routes, services, validations, and data models.
- Centralized route registration — all modules are registered in one place for maintainability.
- TypeScript (ESM) — modern syntax, strict typing.
- AWS-hosted — containerized on ECS Fargate, with RDS for persistence and CloudWatch for logging/monitoring.
- Testing using vitest to unit and integration tests
- CI/CD to automated pipe with build, test and deployment
- Lint Code linting code with ESLint and TS
- Container with image security scanning and variables builds
- Node.js 20 or later
- Docker and Docker Compose
- PostgreSQL
- Node.js 22+
- TypeScript
- Fastify
- Prisma ORM with PostgreSQL
- Zod for validation
- Vitest for testing
- Nodemon and TSX for development
- Docker
-
Clone the repository:
Git clone https://github.com/JoaoMiottiTec/featherforge.git cd featherforge -
Configure environment variables:
#Criar o arquivo .env touch .env -
Give a valor to the variable keys in .env:
DATABASE_URL= PORT= HOST= JWT_SECRET= JWT_EXPIRES= JWT_REFRESH_SECRET= JWT_REFRESH_EXPIRES= -
Start the service:
docker-compose up -d
- Auth & Users – User registration, login, and profile management. [x]
- Sessions – Training session logging (duration, effort, jump count). []
- Goals – Weekly/monthly goal management. []
- Device – Receiving data from Arduino device. []
- Analytics – Training statistics and reports. []
- AI – Training suggestions based on history. []
- Exports & Reports – Exporting data to CSV/PDF. []
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if necessary
- Submit a pull request
- João Vitor Miotti