travel-api_crystal-kemal
API de Gerenciamento de Planos de Viagens - Teste Para Desenvolvedor FullStack
API para armazenar e gerenciar planos de viagens, integrada à API do Rick and Morty para obter informações sobre locais por ID. A API oferece seis rotas principais: listar todos os planos, obter um plano por ID, criar um novo plano, atualizar um plano existente, excluir um plano e adicionar pontos de parada a planos existentes.
Sumário
Estrutura do Projeto
O projeto da API de planos de viagens foi desenvolvido utilizando conceitos de Programação Orientada a Objetos (POO) e Clean Code, com o objetivo de aplicar uma arquitetura de software organizada e de fácil manutenção. A estrutura adotada segue o padrão MVC (Model-View-Controller) junto com o uso de serviços, rotas, modelos e repositórios.
Pré-requisitos
- Crystal (version 1.8.2) - A API é desenvolvida em Crystal, portanto, é necessário ter o Crystal instalado em sua máquina
- Kemal (version 1.4.0) - A API utiliza o framework Kemal para lidar com as rotas e requisições HTTP.
- Jennifer ORM (version 0.13.0) - A API utiliza o Jennifer ORM para interagir com o banco de dados.
- Sam (0.4.2) - Sam é um gerenciador de serviços usado para facilitar a execução da API e de outros componentes necessários.
- Docker e Docker Compose - O Docker e Docker Compose é necessário para criar e orquestrar os contêineres da API e do banco de dados. Não é nescessário, mas é recomendado utilizar.
- Postgres - A API utiliza o banco de dados PostgreSQL para armazenar os planos de viagens. Pode usar outro banco, contudo deve se realizar auterações no arquivo de configuração do banco.
- GraphQL - A API utiliza o graphql para fazer requisição para API externa. (Obs.: Não se faz nescessário a instalação).
Instalação (Se você utiliza docker clique aqui)
- Clone o repositório
git clone https://github.com/mauricioccardoso/travel-api-crystal-kemal.git
- Acesse o diretório do projeto
cd travel-api-crystal-kemal
-
Altere o arquivo de configuração do banco de dados. Em "config/database.yml". Se você utiliza outro banco de dados, será nescessário adicionar o drive do banco no arquivo "shard.yml".
-
Na raiz do projeto, intale as dependências do Crystal usando o Shards
shards install
- Crie o banco de dados. (Obs.: O comando 'crystal sam.cr db:setup' cria o banco e executa as migrations)
crystal sam.cr db:create ou make sam db:create
- Execute as migrations do banco de dados
crystal sam.cr db:migrate ou make sam db:migrate
- Inicie a API
crystal run src/main.cr
- Inicie a API
crystal run src/main.cr
Docker
- Clone o repositório
git clone https://github.com/mauricioccardoso/travel-api-crystal-kemal.git
- Acesse o diretório do projeto
cd travel-api-crystal-kemal
- Inicie o container
docker compose up
- Após seguir esses passos, a API de Gerenciamento de Planos de Viagens estará instalada e pronta para uso.
- Certifique-se de fornecer as informações corretas para as variáveis de ambiente no arquivo de configuração do banco de dados (database.yml).
- Essas são apenas instruções resumidas e podem variar dependendo do seu ambiente e configurações específicas.
- A API estará disponível em http://localhost:3000.
Uso
A API de Gerenciamento de Planos de Viagens oferece várias rotas para interagir com os planos de viagens. A seguir, estão detalhadas as informações sobre cada rota, sua estrutura e exemplos de uso.
-
Rota: GET /travel_plans
- Parâmetros de consulta:
optimize
eexpand
- Descrição:
optimize
(opcional): Reorganiza a lista de paradas para otimizar o número de viagens entre dimensões, reorganizando-as por popularidade.expand
(opcional): Modifica os dados retornados para incluir mais informações sobre os locais, além dos IDs.
- Parâmetros de consulta:
-
Rota: GET /travel_plans/:id
- Parâmetros de consulta: Nenhum
-
Rota: POST /travel_plans
- Parâmetros de consulta: Nenhum
-
Rota: PUT /travel_plans/:id
- Parâmetros de consulta: Nenhum
-
Rota: DELETE /travel_plans/:id
- Parâmetros de consulta: Nenhum
-
Rota: PATCH /travel_plans/:id/append
- Parâmetros de consulta: Nenhum
Contributors
- Maurício Erick da Costa Cardoso - desenvolvedor
- github
- mauricioerick17@gmail.com
travel-api_crystal-kemal
- 0
- 0
- 0
- 0
- 0
- over 1 year ago
- June 28, 2023
Wed, 20 Nov 2024 20:44:05 GMT