O projeto Foodly é uma aplicação backend desenvolvida em Java com o Spring Framework, integrada a um banco de dados SQL. Seu principal objetivo é oferecer uma API CRUD eficiente para a gestão de produtos e categorias no setor de delivery, garantindo um fluxo de informações organizado, estruturado e eficiente.
- 💡 Conhecimentos Mobilizados
- 🏗️ Estrutura do Projeto
- 📂 Código Desenvolvido
- 🛠️ Tecnologias Utilizadas
- 🤝 Desenvolvedoras do Projeto
- Spring Framework: Uso do Spring Boot para a construção de APIs RESTful, seguindo boas práticas de desenvolvimento.
- JPA e Hibernate: Mapeamento objeto-relacional para integração com o banco de dados MySQL, garantindo uma persistência eficiente.
- Padrões de Projeto: Implementação da arquitetura em camadas (Model, Repository, Controller) para uma melhor organização do código.
- Banco de Dados: Configuração e gerenciamento do banco de dados MySQL, utilizando Spring Data JPA para persistência dos dados.
- RESTful API: Desenvolvimento de endpoints para manipulação das entidades do sistema, permitindo operações CRUD para usuários, categorias e produtos.
- Swagger: Documentação da API utilizando Swagger, permitindo testes interativos e facilitando a comunicação entre desenvolvedores e clientes.
- Autenticação e Segurança: Implementação de autenticação e proteção de dados dos usuários por meio de hashing de senhas.
- Testes de API: Uso do Insomnia para validar os endpoints e garantir o correto funcionamento da aplicação.
- Regra de Negócio: Implementação da funcionalidade de aplicação automática de desconto para compras acima de R$100,00, com valores configuráveis conforme necessidade da empresa usuária.
- Deploy: Disponibilização da aplicação em ambiente de produção utilizando a plataforma Render, garantindo acessibilidade e funcionamento contínuo.
foodly/
├── controller/
│ ├── UsuarioController.java
│ ├── CategoriaController.java
│ └── ProdutoController.java
├── model/
│ ├── Usuario.java
│ ├── Categoria.java
│ └── Produto.java
├── repository/
│ ├── UsuarioRepository.java
│ ├── CategoriaRepository.java
│ └── ProdutoRepository.java
├── service/
│ ├── UsuarioService.java
│ ├── CategoriaService.java
│ └── ProdutoService.java
├── config/
│ ├── SwaggerConfig.java
│ ├── SecurityConfig.java
│ └── CorsConfig.java
├── resources/
│ ├── application.properties
│ └── data.sql
├── FoodlyApplication.java
Para melhor visualização, aqui estão os principais componentes do sistema:
UsuarioController/CategoriaController/ProdutoController: Controladores responsáveis pela manipulação das respectivas entidades, implementando métodos comogetAll(),getById(),create(),update()edelete(), garantindo operações CRUD eficientes.Usuario/Categoria/Produto: Modelos que representam as entidades do sistema, definindo atributos essenciais para a estrutura e persistência dos dados.UsuarioRepository/CategoriaRepository/ProdutoRepository: Interfaces que estendemJpaRepository, permitindo a comunicação eficiente com o banco de dados MySQL e simplificando as operações de persistência.UsuarioService/ProdutoService: Camada de serviço que contém a lógica de negócio, garantindo uma melhor separação de responsabilidades e a aplicação de boas práticas no desenvolvimento.application.properties: Arquivo de configuração que define a conexão com o banco de dados, especificando credenciais, configurações do Hibernate e propriedades do Spring Boot.FoodlyApplication: Classe principal que inicializa a aplicação Spring Boot, garantindo a execução da API e a configuração dos componentes do sistema.
- Linguagem: Java
- Framework: Spring Boot
- Banco de Dados: MySQL
- JPA/Hibernate: Para persistência de dados e mapeamento objeto-relacional
- IDE utilizada: Spring Tools Suite (STS)
- Ferramenta de Testes: Insomnia, utilizada para testar os endpoints da API
- Documentação da API: Swagger, para facilitar a interação com os endpoints
- Gerenciamento de Dependências: Maven, para controle de bibliotecas e plugins do projeto
- Segurança: Spring Security, para controle de autenticação e autorização
- Deploy: Plataforma Render, garantindo a disponibilização do backend em ambiente de produção
Este projeto foi possível graças às contribuições das seguintes desenvolvedoras:
