Este é um projeto criado com foco em simular uma aplicação de solicitação de viagens. Sendo uma aplicação composta por uma API no Backend e um Frontend para melhor interface, ela conta com dois endpoits, sendo o primeiro um POST onde é enviado um arquivo JSON para que seja salvo os dados enviado a aplicação e um segundo sendo um GET, onde é possível recuperar todas as corridas de um determinado usuário, conforme especificado mais a frente.
GET /corridas=user_id=?
Parâmetro | Tipo | Descrição |
---|---|---|
user_id |
string |
Obrigatório. O ID do usuário ao qual quer recuperar as corridas |
[
{
"id": 1,
"user_id": "123",
"ponto_partida": "Rua A",
"ponto_destino": "Rua B",
"solicitado_em": "2025-01-08T15:30:00.000Z",
"valor_estimado": "50.0"
}
]
POST /corridas
{
"corrida": {
"user_id": string,
"ponto_partida": string,
"ponto_destino": string,
"solicitado_em": datetime,
"valor_estimado": decimal
}
}
Parâmetro | Tipo | Descrição |
---|---|---|
user_id |
string |
Obrigatório. O ID do usuário responsável pela corrida, não podendo ser nulo ou vazio |
ponto_partida |
string |
Obrigatório. Ponto de partida da corrida, também sendo considerado um endereço |
ponto_destino |
string |
Obrigatório. Ponto de destino da corrida, também sendo considerado um endereço |
solicitado_em |
datetime |
Obrigatório. Data da solicitação |
valor_estimado |
decimal |
Obrigatório. Valor estipulado da corrida |
User_id vazio ou nulo.
{
"errors": [
"User can't be blank"
]
}
Ponto de partida/destino não informado
{
"errors": [
"Ponto partida can't be blank",
"Ponto destino can't be blank"
]
}
Valor estimado da corrida menor que ou igual a 0.
{
"errors": [
"Valor estimado must be greater than 0"
]
}
Primeiramente faça o clone do repositório para seu ambiente local
git clone https://github.com/DevGuiRocha/travel_app.git
Entre no diretório do projeto
cd travel_app
Entre no diretório do backend
cd travel_app_backend
Instale as dependências necessárias para a execução do projeto
bundle install
Edite o arquivo config/database.yml
para alterar as configurações para seu ambiente local, assim como usuario e senha do PostgreSQL para conexões
Rode os seguintes comandos para que seja criado as bases de desenvolvimento/testes e a criação das tabelas
rails db:create
rails db:migrate
Inicie o servidor
rails s
Com o comando acima, o rails irá executar na porta padrão 3000. Contudo, se desejar alterar a porta de execução, basta rodar o seguinte comando
rails s -p porta_de_sua_escolha
Acesse o projeto rails pelo navegador
localhost:3000
Entre no diretório do frontend
cd travel_app_frontend
Instale as dependências necessárias para a execução do projeto
npm install
Inicie o servidor
npm start
Com o comando acima, o servidor será inicializado por padrão na porta 5173. Acesse o projeto rails pelo navegador
localhost:5173
Foram configurados testes tanto no backend como no frontend. Assim os testes serão descritos de forma separada:
NOTA:
Foram desenvolvidos um total de 8 testes para a API, um número considerável
dado a finalidade do projeto. No geral, foram criados 3 testes de validação
do models e 5 testes para validação dos endpoits da aplicação. Além destes,
foram feitos 17 testes para o front, divididos entre 3 páginas principais.
Para a execução dos testes, basta rodar o seguinte comando:
bundle exec rspec
Os testes do models podem ser encontrados no arquivo corrida_spec.rb
, encontrado no seguinte caminho
spec/models/corrida_spec.rb
Os testes para o controller da API podem ser encontrados no arquivo corrida_spec.rb
, encontrado no seguinte caminho
spec/requests/corrida_spec.rb
Para a execução dos testes, basta rodar o seguinte comando:
npm test
Por se tratar de um projeto que contém uma API no backend e um Front end separado, foram usadas diversas tecnologias, das quais irei pontuar as principais logo abaixo:
Back-end:
- Ruby versão 3.0.0
- Rails versão 7.0.8.5
- Gems em destaque:
- RSpec para testes da API,
- Serializer para geração de JSON de maneira orientada e baseada em convenções
Front-End
- Framework: React
- Gerenciador de Pacotes: npm
- Estilização: CSS
Banco de Dados:
- PostgreSQL versão 16
Ferramentas de Testes
- BackEnd: RSpec
- FrontEnd: Jest e React Testing Library
- Testes na API: Insomnia