https://github.com/grupo2generation77/carona-generation
Projeto para ser feito em 30 horas, envolvendo trabalho em equipe, metodologias ageis e desenvolvimento parelelo.
https://github.com/grupo2generation77/carona-generation
java jpa jpa-hibernate jpa-persistence-applications mvc-pattern spring-boot spring-security
Last synced: 3 months ago
JSON representation
Projeto para ser feito em 30 horas, envolvendo trabalho em equipe, metodologias ageis e desenvolvimento parelelo.
- Host: GitHub
- URL: https://github.com/grupo2generation77/carona-generation
- Owner: grupo2generation77
- Created: 2024-12-17T17:27:24.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-12-18T19:41:39.000Z (6 months ago)
- Last Synced: 2025-02-15T14:20:27.704Z (4 months ago)
- Topics: java, jpa, jpa-hibernate, jpa-persistence-applications, mvc-pattern, spring-boot, spring-security
- Language: Java
- Homepage: https://carona-generation.onrender.com
- Size: 75.2 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# š **API de Aplicativo de Caronas**
### š Uma API desenvolvida para um aplicativo de caronas colaborativas, com funcionalidades de gerenciamento de viagens, cĆ”lculo automĆ”tico da hora de chegada, cadastro de usuĆ”rios e sistema seguro de login.
---
## š **Ćndice**
1. [Sobre o Projeto](#sobre-o-projeto)
2. [Funcionalidades Principais](#funcionalidades-principais)
3. [Tecnologias Utilizadas](#tecnologias-utilizadas)
4. [Entidades](#entidades)
5. [Relação Entre Tabelas](#relação-entre-tabelas)
6. [Instalação e Execução](#instalação-e-execução)
7. [Endpoints da API](#endpoints-da-api)
8. [Deploy](#deploy)
9. [Testes](#testes)
10. [Integrantes](#integrantes)---
## š **Sobre o Projeto**
A API foi criada como base para um **aplicativo de caronas colaborativas**. Seu objetivo é conectar motoristas e passageiros que compartilham trajetos similares, proporcionando uma maneira mais econÓmica e eficiente de viajar. A aplicação inclui um sistema completo de gerenciamento de viagens, com cÔlculo automÔtico da hora de chegada, além de segurança no login e cadastro dos usuÔrios.
A API Ć© desenvolvida utilizando **Spring Boot**, integrada ao banco de dados **PostgreSQL** e hospedada na plataforma **Render** com suporte a **Docker**.
---
## ⨠**Funcionalidades Principais**
- **CRUD completo** para:
- Gerenciamento de **viagens**.
- Cadastro de **categorias** de viagens.
- Cadastro e controle de **usuƔrios**.
- **Busca por ID** das entidades.
- **CÔlculo automÔtico** da hora de previsão de chegada com base na **hora de partida**, **velocidade média** e **distância**.
- Sistema de **login seguro** com autenticação utilizando **Spring Security**.
- Documentação interativa com **Swagger**.
- Banco de dados gerenciado com **PostgreSQL**.
- Deploy automatizado com **Render** e suporte ao **Docker**.
- **Testes unitƔrios** com **JUnit**.---
## š ļø **Tecnologias Utilizadas**
- **Java 17** - Linguagem de programação principal.
- **Spring Boot** - Framework utilizado para acelerar o desenvolvimento da API.
- **Spring Web** - Gerenciamento de requisiƧƵes HTTP.
- **Spring Data JPA** - PersistĆŖncia de dados.
- **Spring Security** - Implementação de segurança e autenticação.
- **PostgreSQL** - Banco de dados relacional.
- **Swagger** - Documentação interativa da API.
- **Docker** - Containerização da aplicação.
- **Render** - Plataforma de hospedagem para deploy.
- **JUnit** - Ferramenta para testes unitƔrios.
- **Maven** - Gerenciador de dependĆŖncias.---
## šļø **Entidades**
### š **Produto (Viagem)**
| Campo | Tipo | Descrição |
|-----------------------|-----------------|-----------------------------------------|
| `id` | Long | Identificador Ćŗnico da viagem. |
| `distancia` | BigDecimal | Distância total do trajeto (em km). |
| `vagas` | Int | Quantidade de vagas disponĆveis. |
| `velocidadeMedia` | Double | Velocidade mƩdia esperada (em km/h). |
| `horaPartida` | LocalDate | Hora de inĆcio da viagem. |
| `horaPrevisaoChegada`| LocalDate | Hora calculada de chegada. |
| `lugarPartida` | String | Local de inĆcio da viagem. |
| `lugarDestino` | String | Local de destino da viagem. |
| `viagemRecorrente` | Boolean | Indica se a viagem Ć© recorrente. |
| `preco` | Long | PreƧo da viagem. |
| `usuario_id` | Long | Identificador do usuƔrio responsƔvel. |
| `categoria_id` | Long | Identificador da categoria da viagem. |### š·ļø **Categoria**
| Campo | Tipo | Descrição |
|--------------|---------|-----------------------------------------|
| `id` | Long | Identificador Ćŗnico da categoria. |
| `tipo` | String | Tipo da categoria (ex: "Longa", "Curta"). |
| `descricao` | String | Descrição da categoria. |### š¤ **User (UsuĆ”rio)**
| Campo | Tipo | Descrição |
|------------------|----------|-----------------------------------------|
| `id` | Long | Identificador único do usuÔrio. |
| `nome` | String | Nome do usuƔrio. |
| `email` | String | Email para login. |
| `senha` | String | Senha do usuƔrio (criptografada). |
| `modeloCarro` | String | Modelo do carro do usuƔrio. |
| `avaliacao` | Float | Avaliação média do motorista. |---
## š **Relação Entre Tabelas**
```mermaid
erDiagram
USER ||--o{ PRODUTO : possui
PRODUTO }o--|| CATEGORIA : pertence
USER {
Long id
String nome
String email
String senha
String modeloCarro
Float avaliacao
}
PRODUTO {
Long id
BigDecimal distancia
Int vagas
Double velocidadeMedia
LocalDate horaPartida
LocalDate horaPrevisaoChegada
String lugarPartida
String lugarDestino
Boolean viagemRecorrente
Long preco
Long usuario_id
Long categoria_id
}
CATEGORIA {
Long id
String tipo
String descricao
}
```---
## š **Instalação e Execução**
1. **Clone o repositório**:
```bash
git clone https://github.com/MatheusSPQ/BlogPessoal.git
```2. **Configure o banco de dados PostgreSQL**:
- Crie um banco de dados chamado `db_blogpessoal`.
- Configure o arquivo `application.properties` com suas credenciais PostgreSQL:
```properties
spring.datasource.url=jdbc:postgresql://localhost:5432/db_blogpessoal
spring.datasource.username=seu_usuario
spring.datasource.password=sua_senha
spring.jpa.hibernate.ddl-auto=update
```3. **Execute o projeto**:
```bash
./mvnw spring-boot:run
```4. **Acesse a documentação Swagger**:
- URL padrão: `http://localhost:8080/swagger-ui.html`---
## š **Endpoints da API**
### Produto (Viagem)
- **GET /viagens** - Lista todas as viagens.
- **GET /viagens/{id}** - Busca uma viagem por ID.
- **POST /viagens** - Cria uma nova viagem.
- **PUT /viagens** - Atualiza uma viagem existente.
- **DELETE /viagens/{id}** - Deleta uma viagem.### Categoria
- **GET /categorias** - Lista todas as categorias.
- **GET /categorias/{id}** - Busca uma categoria por ID.
- **POST /categorias** - Cria uma nova categoria.
- **PUT /categorias** - Atualiza uma categoria existente.
- **DELETE /categorias/{id}** - Deleta uma categoria.### UsuƔrio
- **POST /usuarios/cadastrar** - Cadastra um novo usuƔrio.
- **POST /usuarios/login** - Realiza login.
- **GET /usuarios** - Lista todos os usuƔrios
- **GET /usuarios/{id}** - Busca um usuƔrio por ID.
- **PUT /usuarios** - Atualiza um usuƔrio
- **DELETE /usuarios/delete/{id}** - Deleta um usuƔrio---
## š¦ **Deploy**
O projeto é hospedado na plataforma **Render** e utiliza **Docker** para containerização.
- Link do deploy: `em processo*`
---
## š„ **Colaboradores**
Matheus Queiroz
Nina Raquel
Lucas Oliveira
Ivan Barbosa
Jaqueline Valle
---
**Desenvolvido com š», dedicação e muita colaboração!** š