Este repositório contém o projeto desenvolvido durante o evento NLW Journey, organizado pela Rocketseat. O projeto tem como objetivo demonstrar o conhecimento adquirido em Java Spring Boot e a capacidade de desenvolver uma aplicação completa, desde a configuração do ambiente até a implementação das funcionalidades finais.
O projeto consiste em uma aplicação web construída com Java Spring Boot que permite a criação e gerenciamento de viagens. Os usuários podem definir destinos, datas de início e término, e convidar participantes para suas viagens, enviando convites por e-mail.
- Configuração do ambiente de desenvolvimento com Spring Boot
- Implementação de endpoints REST para gerenciar viagens
- Conexão com banco de dados e operações CRUD para viagens
- Adicionar uma validação nos campos de date para que a data de início da viagem seja sempre menor que a data de término e também a data de uma atividade está entre as datas da viagem.
- Extração da core das trips para dentro de uma classe Service
- Mapeamento das exeções para retornar um erro mais amigável para o usuário
- Validação de email para o convite de participantes
- Java 21+
- Spring Boot
- Spring Data JPA
- H2 Database
- Maven
- Java 21
- Maven
-
Clone este repositório:
git clone https://github.com/Erickjonatthan/nlw-journey-JAVA.git
-
Navegue até o diretório do projeto:
cd nlw-journey-JAVA
-
Compile o projeto:
mvn clean install
-
Execute a aplicação:
mvn spring-boot:run
-
A aplicação estará disponível em
http://localhost:8080
.
-
Criar uma nova viagem
POST /trips
- Request Body:
{ "destination": "Florianópolis, SC", "starts_at": "2024-06-25T21:51:54.7342", "ends_at": "2024-06-25T21:51:54.7342", "emails_to_invite": ["mayk.brito@rocketseat.com"], "owner_name": "Fernanda Kipper", "owner_email": "fernanda.kipper@rocketseat.com" }
- Response Body:
{ "id": "UUID" }
-
Obter detalhes de uma viagem
GET /trips/{id}
- Response Body:
{ "id": "UUID", "destination": "Florianópolis, SC", "starts_at": "2024-06-25T21:51:54.7342", "ends_at": "2024-06-25T21:51:54.7342", "emails_to_invite": ["mayk.brito@rocketseat.com"], "owner_name": "Fernanda Kipper", "owner_email": "fernanda.kipper@rocketseat.com", "createdAt": "2024-07-09T12:34:56" }
-
Atualizar uma viagem
PUT /trips/{id}
- Request Body:
{ "destination": "Florianópolis, SC", "starts_at": "2024-06-25T21:51:54.7342", "ends_at": "2024-06-25T21:51:54.7342", "owner_name": "Fernanda Kipper", "owner_email": "fernanda.kipper@rocketseat.com" }
- Response Body:
{ "id": "UUID", "destination": "Florianópolis, SC", "starts_at": "2024-06-25T21:51:54.7342", "ends_at": "2024-06-25T21:51:54.7342", "emails_to_invite": ["mayk.brito@rocketseat.com"], "owner_name": "Fernanda Kipper", "owner_email": "fernanda.kipper@rocketseat.com", "createdAt": "2024-07-09T12:34:56" }
-
Confirmar uma viagem
GET /trips/{id}/confirm
- Response Body:
{ "id": "UUID", "isConfirmed": true }
-
Convidar um participante para a viagem
POST /trips/{id}/invite
- Request Body:
{ "email": "participant@example.com" }
- Response Body:
{ "id": "UUID", }
-
Obter todos os participantes de uma viagem
GET /trips/{id}/participants
- Response Body:
[ { "id": "UUID", "email": "participant@example.com", "isConfirmed": true } ]
-
Registrar uma atividade na viagem
POST /trips/{id}/activities
- Request Body:
{ "title": "Atividade X", "occursAt": "2024-06-25T21:51:54.7342", }
- Response Body:
{ "id": "UUID", }
-
Obter todas as atividades de uma viagem
GET /trips/{id}/activities
- Response Body:
[ { "id": "UUID", "title": "Atividade X", "description": "Descrição da atividade" } ]
-
Adicionar um link à viagem
POST /trips/{id}/links
- Request Body:
{ "title": "Link X", "url": "https://example.com" }
- Response Body:
{ "id": "UUID", }
-
Obter todos os links de uma viagem
GET /trips/{id}/links
- Response Body:
[ { "id": "UUID", "title": "Link X", "url": "https://example.com" } ]
- Confirmar um participante
POST /participants/{id}/confirm
- Request Body:
{ "name": "Participant Name", "email": "email@example.com" }
- Response Body:
{ "id": "UUID", }
- Erick Santos - LinkedIn
- Rocketseat - Site Oficial