Esse é um projeto desenvolvido durante o curso de Análise e Desenvolvimento de Sistemas, na disciplina de Desenvolvimento de Aplicações Corporativas. O objetivo foi aplicar conceitos de desenvolvimento backend e práticas de mercado, usando um sistema corporativo em Java.
Para o desenvolvimento do projeto, utilizamos as seguintes tecnologias:
- Git e GitHub: Versionamento do código;
- Postman e Swagger: Testes e documentação da API;
- PostgreSQL: Banco de dados relacional;
- Java: Linguagem de programação principal;
- IntelliJ IDEA: Ambiente de desenvolvimento integrado (IDE);
- Arquitetura MVC: Organização do código seguindo a arquitetura Modelo-Visão-Controlador.
Este projeto consiste na criação de uma API para o sistema de uma loja de carros, com foco na construção do backend. O sistema é composto por duas tabelas principais (Carros e Usuários) e implementa funcionalidades de autenticação e autorização, além de criptografia. O sistema permite diferentes níveis de acesso com base no tipo de usuário:
- Usuários: possuem permissões limitadas;
- Admins: têm acesso total às funcionalidades do sistema.
Imagem das tabelas do banco de dados
O sistema conta com as seguintes funcionalidades:
- A aplicação só permite acesso a usuários autenticados.
Uma vez autenticado, o usuário pode:
- Registrar-se e Logar;
- Visualizar todos os carros com filtros de busca;
- Atualizar suas próprias informações de perfil;
- Gerar um QR Code com suas informações pessoais.
O administrador tem permissões mais amplas, incluindo:
- Registrar-se e Logar;
- Gerenciar o catálogo de carros (Criar, Atualizar, Deletar e Listar);
- Atualizar informações de outros usuários;
- Gerar QR Codes com informações de veículos;
- Gerar relatórios em PDF contendo a lista de carros e suas especificações completas.
Campo | Tipo | Descrição |
---|---|---|
id | Integer | Identificador único do usuário |
String | E-mail do usuário | |
name | String | Nome completo |
password | String | Senha criptografada |
role | String | Tipo de usuário (user/admin) |
username | String | Nome de usuário único |
Campo | Tipo | Descrição |
---|---|---|
id | Integer | Identificador único do carro |
brand | String | Marca do carro |
city | String | Localização do carro |
license_plate | String | Placa do carro |
model | String | Modelo do carro |
name | String | Nome do carro |
price | Decimal | Preço do carro |
year | Integer | Ano de fabricação |
color | String | Cor do carro |
kilometers | Integer | Quilometragem do carro |