Skip to content

DevGuiRocha/travel_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 

Repository files navigation

Travel App

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.

Documentação da API

Retorna todas as corridas de um determinado usuario

  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

Exemplo de retorno

[
  {
		"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"
	}
]

Envia um item

  POST /corridas

Formatação do JSON para envio

{
  "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

Possíveis erros

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"
	]
}

Rodando localmente

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

Para configurações do Rails:

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

Para configurações do React

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

Rodando os testes

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 executar os testes do Rails

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 executar os testes do React

Para a execução dos testes, basta rodar o seguinte comando:

  npm test

Stack utilizada

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published