Sistema completo de gestão financeira para cooperativas, desenvolvido com arquitetura de microserviços, Clean Architecture e boas práticas de desenvolvimento.
O CoopFinance é uma plataforma web fullstack que demonstra habilidades avançadas em desenvolvimento backend Java, incluindo:
- ✅ Arquitetura de microserviços
- ✅ Clean Architecture (Domain, Application, Infrastructure, Presentation)
- ✅ Design Patterns (Repository, DTO, Factory, Strategy)
- ✅ Autenticação segura com JWT
- ✅ API RESTful documentada com Swagger
- ✅ Testes unitários e de integração (12 testes, 0 falhas)
- ✅ Validações robustas com Bean Validation
- ✅ Banco de dados H2 em memória
Contexto: Projeto desenvolvido como portfólio para demonstrar competências em desenvolvimento fullstack, com foco em qualidade de código e boas práticas.
backend/
├── auth-service # Autenticação e autorização ✅
├── transaction-service # Gestão de transações (em desenvolvimento)
├── investment-service # Gestão de investimentos (em desenvolvimento)
└── common # Código compartilhado
auth-service/
├── domain/ # Entidades e regras de negócio
│ ├── entity/ # User
│ └── repository/ # UserRepository
├── application/ # Casos de uso
│ ├── dto/ # Data Transfer Objects
│ └── service/ # AuthService (lógica de negócio)
├── infrastructure/ # Frameworks e ferramentas externas
│ ├── config/ # Configurações (Security, Swagger)
│ └── security/ # JWT Utility
└── presentation/ # Interface de entrada
└── controller/ # AuthController (API REST)
- Java 17 - Linguagem principal
- Spring Boot 3.2.0 - Framework
- Spring Security - Autenticação e autorização
- Spring Data JPA - ORM
- H2 Database - Banco de dados em memória
- JWT (jsonwebtoken 0.12.3) - Tokens de autenticação
- Lombok - Redução de boilerplate
- JUnit 5 + Mockito - Testes unitários
- Swagger/OpenAPI 3 - Documentação de APIs
- Maven 3.9.11 - Gerenciamento de dependências
- JaCoCo - Cobertura de testes
- React 18 + TypeScript
- Vite
- Axios
- SASS
Antes de começar, você precisa ter instalado:
- Java JDK 17+ → Download
- Maven 3.8+ → Download
- Git → Download
- IDE (VS Code com Extension Pack for Java ou IntelliJ IDEA)
git clone https://github.com/seu-usuario/coopfinance.git
cd coopfinancecd backend/auth-service# Baixar dependências e compilar
mvn clean install
# Executar aplicação
mvn spring-boot:runA aplicação estará disponível em: http://localhost:8081
Acesse a documentação interativa: http://localhost:8081/swagger-ui.html
POST /api/auth/register - Registrar novo usuário
// Request
{
"name": "João Silva",
"email": "joao@example.com",
"password": "senha123"
}
// Response (201 Created)
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"type": "Bearer",
"userId": 1,
"name": "João Silva",
"email": "joao@example.com"
}POST /api/auth/login - Fazer login
// Request
{
"email": "joao@example.com",
"password": "senha123"
}
// Response (200 OK)
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"type": "Bearer",
"userId": 1,
"name": "João Silva",
"email": "joao@example.com"
}GET /api/auth/me - Obter dados do usuário logado
Headers:
X-User-Id: 1
// Response (200 OK)
{
"id": 1,
"name": "João Silva",
"email": "joao@example.com",
"active": true
}Acesse: http://localhost:8081/h2-console
Configurações:
- JDBC URL:
jdbc:h2:mem:authdb - Username:
sa - Password: (deixe em branco)
CREATE TABLE users (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
active BOOLEAN NOT NULL DEFAULT TRUE,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP
);mvn testmvn test jacoco:reportO relatório será gerado em: target/site/jacoco/index.html
✅ AuthServiceTest: 8 testes passando
✓ Deve registrar novo usuário com sucesso
✓ Não deve registrar usuário com email duplicado
✓ Deve fazer login com sucesso
✓ Não deve fazer login com credenciais inválidas
✓ Não deve fazer login com usuário não encontrado
✓ Não deve fazer login com usuário inativo
✓ Deve buscar usuário por ID com sucesso
✓ Deve lançar exceção ao buscar usuário inexistente
✅ AuthControllerTest: 4 testes passando
✓ Deve registrar com sucesso (POST /api/auth/register)
✓ Deve retornar erro com dados inválidos
✓ Deve fazer login com sucesso (POST /api/auth/login)
✓ Deve retornar usuário logado (GET /api/auth/me)
📊 Total: 12 testes, 0 falhas, 64% de cobertura
- Single Responsibility: Cada classe tem uma única responsabilidade
- Open/Closed: Aberto para extensão, fechado para modificação
- Liskov Substitution: Interfaces bem definidas
- Interface Segregation: Interfaces específicas
- Dependency Inversion: Dependências de abstrações
- ✅ Nomes descritivos e significativos
- ✅ Funções pequenas e focadas
- ✅ Comentários apenas quando necessário
- ✅ Tratamento adequado de erros
- ✅ Validações de entrada robustas
- Repository Pattern - Abstração de acesso a dados
- DTO Pattern - Transferência de dados entre camadas
- Factory Pattern - Criação de objetos complexos
- Builder Pattern - Construção de objetos (Lombok @Builder)
- Dependency Injection - Inversão de controle com Spring
- ✅ Senhas criptografadas com BCrypt
- ✅ Tokens JWT com expiração configurável (24 horas)
- ✅ Validação de entrada com Bean Validation
- ✅ CORS configurado
- ✅ Headers de segurança (X-Frame-Options, X-Content-Type-Options)
- ✅ Sessões stateless (REST puro)
coopfinance/
├── .gitignore
├── README.md
├── test-api.http # Requisições REST para teste
├── backend/
│ ├── pom.xml # Parent POM
│ └── auth-service/
│ ├── pom.xml
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/coopfinance/auth/
│ │ │ │ ├── AuthServiceApplication.java
│ │ │ │ ├── domain/
│ │ │ │ │ ├── entity/User.java
│ │ │ │ │ └── repository/UserRepository.java
│ │ │ │ ├── application/
│ │ │ │ │ ├── dto/
│ │ │ │ │ │ ├── LoginRequest.java
│ │ │ │ │ │ ├── RegisterRequest.java
│ │ │ │ │ │ ├── AuthResponse.java
│ │ │ │ │ │ └── UserResponse.java
│ │ │ │ │ └── service/AuthService.java
│ │ │ │ ├── infrastructure/
│ │ │ │ │ ├── config/SecurityConfig.java
│ │ │ │ │ └── security/JwtUtil.java
│ │ │ │ └── presentation/
│ │ │ │ └── controller/AuthController.java
│ │ │ └── resources/
│ │ │ └── application.yml
│ │ └── test/
│ │ └── java/com/coopfinance/auth/
│ │ ├── application/service/AuthServiceTest.java
│ │ └── presentation/controller/AuthControllerTest.java
│ └── target/
└── frontend/ # (Planejado)
- Auth Service com JWT
- Testes unitários e de integração
- Documentação Swagger
- Clean Architecture
- Transaction Service (CRUD de transações)
- Investment Service (Gestão de investimentos)
- Frontend React + TypeScript
- Testes E2E
- CI/CD com GitHub Actions
- Deploy em cloud (Railway/Render)
- API Gateway
- Service Discovery
| Métrica | Valor | Status |
|---|---|---|
| Cobertura de Testes | 64% | 🟡 Bom |
| Testes Passando | 12/12 | 🟢 Excelente |
| Clean Architecture | Sim | 🟢 Excelente |
| Documentação API | Swagger | 🟢 Excelente |
| Design Patterns | 5+ | 🟢 Excelente |
| SOLID Principles | Aplicados | 🟢 Excelente |
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'feat: adiciona MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
feat:Nova funcionalidadefix:Correção de bugdocs:Documentaçãotest:Testesrefactor:Refatoraçãostyle:Formataçãochore:Tarefas gerais
Seu Nome
- LinkedIn: Marco Antonio Flores da Silva
- GitHub: @maarcoafs
- Email: maarco.afs@gmail.com
- Portfolio: https://portfoliomarcoflores.netlify.app/
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Tem alguma dúvida ou sugestão? Entre em contato!
- 📧 Email: maarco.afs@gmail.com
- 💼 LinkedIn: Marco Antonio Flores da Silva
- 🐙 GitHub: @maarcoafs
Desenvolvido com ❤️ para demonstrar habilidades em desenvolvimento fullstack
⭐ Se este projeto te ajudou, deixe uma estrela!