O Orange Portfolio foi desenvolvido durante o Hackathon, a última fase final do processo seletivo da Fcamara, na quinta edição do programa. O backend do projeto desenvolvido em Java com o framework Spring Boot seguindo a arquitetura MVC. A API gerencia usuários e projetos, fornecendo endpoints para registro, autenticação, criação, atualização, exclusão e busca de projetos.
- Java
- Spring Boot
- Spring Security com autenticação JWT
- Lombok
- JPA
- Flyway
- Validation
- Java JWT
- PostgreSQL
- AWS (EC2 para hospedagem remota)
O projeto segue a arquitetura MVC (Model-View-Controller) para uma organização clara e modular do código. Consiste em entidades Java que representam os usuários e projetos, além de DTOs (Data Transfer Objects) para transferência de dados entre o frontend e o backend. Aqui está uma visão geral das entidades e seus DTOs correspondentes:
Representa um usuário da aplicação.
- Campos:
- id
- firstname
- lastname
- password
- profileImageAddress
- role
Representa um projeto criado por um usuário.
- Campos:
- id
- title
- description
- link
- imageProject
- tags
- deleted
- user
- createdAt
- ProjectRequest
- ProjectResponse
- UserRequest
- UserResponse
- FailLoginResponse
- LoginRequest
- SuccessLoginResponse
Existem dois controladores principais:
Controla operações relacionadas a usuários, como registro e autenticação.
Controla operações relacionadas a projetos, como criação, atualização, exclusão e busca.
A documentação da API é gerada utilizando o Swagger, fornecendo uma interface interativa para explorar os endpoints disponíveis, bem como suas descrições e requisitos de segurança.
- POST /api/register: Registra um novo usuário.
- POST /api/login: Autentica um usuário e gera um token de acesso.
- POST /api/projects: Salva um novo projeto para um usuário.
- GET /api/projects: Busca todos os projetos cadastrados.
- GET /api/projects/user: Busca todos os projetos do usuário por ID.
- PUT /api/projects: Atualiza um projeto existente.
- DELETE /api/projects/{projectId}: Exclui um projeto.
Todos os endpoints exigem autenticação com um token JWT no cabeçalho da requisição.
Exceções são tratadas de forma adequada em todo o código, garantindo uma experiência de usuário consistente e robusta.
A deleção lógica foi implementada para garantir que os registros excluídos não sejam removidos permanentemente, mantendo a integridade dos dados.
Nome | Função | Github | Foto |
---|---|---|---|
Felipe Silva | Frontend | ||
Marcos | Frontend | ||
Fhelipe Alves | Backend | ||
Ramir Junior | Backend |
Este projeto está sob a licença MIT. Consulte o LICENSE para obter mais detalhes.