Um sistema completo desenvolvido com arquitetura moderna, utilizando Node.js/Express no backend e React no frontend, com foco em escalabilidade e boas práticas de desenvolvimento.
git https://github.com/joaoMiraya/cubos-teste.git
cd cubos# Suba todos os serviços
docker compose up --build -d
# Conceda permissão para o executável criar as migrations
chmod +x gen_migration.s
# Gere as migrations iniciais
./gen_migration.sh InitialMigration
# Acessar
http://localhost:5173/| Tecnologia | Versão | Descrição |
|---|---|---|
| Node.js | ^18.0.0 | Runtime JavaScript |
| Express | ^4.18.0 | Framework web |
| TypeScript | ^5.0.0 | Superset tipado do JavaScript |
| TypeORM | ^0.3.0 | ORM para TypeScript/JavaScript |
| PostgreSQL | ^15.0 | Banco de dados relacional |
| AWS SDK | ^3.0.0 | Integração com serviços AWS |
| node-cron | ^3.0.0 | Agendamento de tarefas |
| Tecnologia | Versão | Descrição |
|---|---|---|
| React | ^18.0.0 | Biblioteca para interfaces |
| TypeScript | ^5.0.0 | Tipagem estática |
| React Query | ^4.0.0 | Gerenciamento de estado servidor |
| Axios | ^1.0.0 | Cliente HTTP |
| TailwindCSS | ^3.0.0 | Framework CSS utilitário |
- Docker & Docker Compose - Containerização
- Amazon S3 - Armazenamento de arquivos
- Amazon SES - Serviço de e-mail
- PostgreSQL - Banco de dados principal
O projeto segue uma arquitetura em camadas bem definida:
┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend │
│ (React TS) │◄──►│ (Express TS) │
└─────────────────┘ └─────────────────┘
│
┌──────▼──────┐
│ Camadas │
│ │
│ Route │
│ Controller │
│ Service │
│ Repository │
└──────┬──────┘
│
┌─────────▼─────────┐
│ PostgreSQL │
└───────────────────┘
Copie o arquivo .env.example para .env e configure:
cp backend/.env.example backend/.envPORT=3000
NODE_ENV=development
API_VERSION=v1DATABASE_URL=postgresql://user:password@localhost:5432/cubos_db
DATABASE_TYPE=postgres
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_USERNAME=cubos_user
DATABASE_PASSWORD=password
DATABASE_NAME=cubos_dbJWT_SECRET=your-super-secret-key
JWT_EXPIRES_IN=24hAWS_REGION=us-east-1
AWS_BUCKET_NAME=your-bucket-name
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
SENDER_EMAIL=your-email@domain.comCORS_ORIGIN=http://localhost:3000,http://localhost:5173- Objetivo: Evitar o uso de exceptions, melhorando performance
- Benefícios:
- Melhor retorno para o usuário
- Performance otimizada
- Controle de fluxo mais claro
- Objetivo: Separação de responsabilidades
- Benefícios:
- Facilita testes unitários
- Melhora manutenibilidade
- Abstrai acesso a dados
Fluxo da arquitetura:
Route → Controller → Service → Repository → PostgreSQL
- Facilita testes e manutenção
- Desacoplamento entre camadas
- Melhor testabilidade