Pular para o conteúdo principal

Módulo 15: Projeto Final

Objetivo do Projeto​

Desenvolva uma aplicação completa que demonstre seu domínio do Spring Boot integrando os conceitos aprendidos ao longo do curso.

Duração estimada: 20-30 horas


Opções de Projeto​

Escolha um dos cinco projetos a seguir:

Opção A: Plataforma de E-Commerce​

Uma plataforma de comércio eletrônico completa com:

  • Catálogo de produtos
  • Gerenciamento de carrinho
  • Sistema de pedidos
  • Pagamento (simulação)
  • Notificações

Opção B: Sistema de Gerenciamento de Tarefas​

Um sistema de gerenciamento de tarefas/projetos com:

  • Gerenciamento de projetos e tarefas
  • Atribuição de tarefas
  • Controle de tempo
  • Relatórios e estatísticas
  • Notificações em tempo real

Opção C: API de Reserva​

Um sistema de reservas (hotéis, restaurantes, eventos) com:

  • Catálogo de recursos
  • Disponibilidade e calendário
  • Processo de reserva
  • Confirmação e lembretes
  • Dashboard administrativo

Opção D: Autenticação com Email (Recomendado)​

Um sistema de autenticação completo com:

  • Cadastro com validação por email
  • Login JWT
  • Recuperação de senha por email
  • Gerenciamento de papéis (USER/ADMIN)
  • Administração de usuários

Opção E: Formulário de Contato e Gestão de Leads​

Um sistema de formulário de contato com gestão de leads (CRM simplificado):

  • Formulário de contato público → cria automaticamente um Lead
  • Pipeline de conversão (NEW → CONTACTED → QUALIFIED → CONVERTED)
  • Armazenamento PostgreSQL de leads, mensagens e notas
  • Envio automático de emails (notificação admin + confirmação)
  • Lembretes automáticos para leads não contatados (@Scheduled)
  • Dashboard admin com estatísticas do pipeline

Requisitos Técnicos​

Obrigatórios (70 pontos)​

CategoriaRequisitoPontos
ArquiteturaEstrutura MVC limpa5
Separação de camadas (Controller/Service/Repository)5
DTOs para transferência de dados5
API RESTEndpoints CRUD completos5
Códigos HTTP apropriados3
Validação de entrada (@Valid)5
PersistênciaSpring Data JPA5
Relações entre entidades (OneToMany, ManyToMany)5
Consultas personalizadas3
SegurançaSpring Security configurado5
Autenticação JWT5
Papéis e autorizações4
TestesTestes unitários (mín. 10)5
Testes de integração (mín. 5)5
Cobertura > 60%5

Opcionais (30 pontos bônus)​

CategoriaRequisitoPontos
CacheRedis caching5
MessagingIntegração com RabbitMQ5
WebSocketTempo real5
DockerDockerfile + docker-compose5
CI/CDPipeline GitHub Actions5
DocumentaçãoSwagger/OpenAPI5
MonitoringActuator + Prometheus5
MicroservicesArquitetura distribuída10

Estrutura do Projeto​

projet-final/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── projet/
│ │ │ ├── ProjetApplication.java
│ │ │ ├── config/
│ │ │ │ ├── SecurityConfig.java
│ │ │ │ └── WebConfig.java
│ │ │ ├── controller/
│ │ │ │ ├── AuthController.java
│ │ │ │ └── ...Controller.java
│ │ │ ├── dto/
│ │ │ │ ├── request/
│ │ │ │ └── response/
│ │ │ ├── exception/
│ │ │ │ ├── GlobalExceptionHandler.java
│ │ │ │ └── ...Exception.java
│ │ │ ├── model/
│ │ │ │ └── ...Entity.java
│ │ │ ├── repository/
│ │ │ │ └── ...Repository.java
│ │ │ ├── security/
│ │ │ │ ├── JwtService.java
│ │ │ │ └── ...
│ │ │ └── service/
│ │ │ └── ...Service.java
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── application-dev.yml
│ │ └── application-prod.yml
│ └── test/
│ └── java/
│ └── com/
│ └── example/
│ └── projet/
│ ├── controller/
│ ├── service/
│ └── repository/
├── docker-compose.yml
├── Dockerfile
├── README.md
└── pom.xml

Entregáveis​

1. Código Fonte​

  • Repositório GitHub público ou privado
  • Código limpo e documentado
  • README.md completo

2. Documentação​

O README.md deve conter:

  • Descrição do projeto
  • Tecnologias utilizadas
  • Instruções de instalação
  • Instruções de execução
  • Documentação da API (endpoints)
  • Screenshots/demonstrações

3. Demonstração​

  • Vídeo de demonstração (5-10 min)
  • Ou apresentação ao vivo
  • Mostrar as principais funcionalidades
  • Explicar as escolhas técnicas

Critérios de Avaliação​

Nota Técnica (60%)​

CritérioDescriçãoPeso
FuncionalidadeA aplicação funciona corretamente20%
ArquiteturaCódigo bem estruturado e de fácil manutenção15%
Boas práticasConformidade com as convenções do Spring15%
TestesCobertura e qualidade dos testes10%

Nota de Qualidade (25%)​

CritérioDescriçãoPeso
CódigoLegibilidade e clareza10%
DocumentaçãoREADME e comentários10%
Tratamento de errosRobustez5%

Nota de Apresentação (15%)​

CritérioDescriçãoPeso
DemonstraçãoApresentação clara10%
RespostasDomínio do assunto5%

Cronograma Sugerido​

SemanaTarefas
1Planejamento, configuração do projeto, modelo de dados
2API REST básica, entidades JPA, repository
3Serviços de negócio, validação, DTOs
4Segurança, JWT, autenticação
5Testes unitários e de integração
6Funcionalidades avançadas (cache, messaging, etc.)
7Docker, CI/CD, documentação
8Finalização, testes, preparação da demo

Recursos​

Documentação Oficial​

Ferramentas​

  • IntelliJ IDEA ou VS Code
  • Postman ou Insomnia
  • Docker Desktop
  • Git

FAQ​

P: Posso trabalhar em equipe?​

R: Sim, equipes de no máximo 2-3 pessoas. A carga de trabalho esperada aumenta proporcionalmente.

P: Posso propor outro projeto?​

R: Sim, com aprovação prévia. O projeto deve demonstrar as mesmas competências.

P: Qual banco de dados utilizar?​

R: PostgreSQL recomendado. H2 é aceitável para desenvolvimento.

P: O deploy é obrigatório?​

R: Não, mas é fortemente recomendado (pontos bônus). Opções: Heroku, Railway, AWS, etc.


Exemplo de Projeto​

Veja as especificações detalhadas para cada opção:


Boa Sorte!​

Este projeto é a oportunidade de demonstrar tudo o que você aprendeu.

Não hesite em:

  • Fazer perguntas
  • Pedir esclarecimentos
  • Compartilhar seu progresso

Voltar para o início