travel-api_crystal-kemal

API for storing and managing travel plans, integrated with the Rick and Morty API to fetch location information by ID. For a full-stack developer position.

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

  1. Sobre o Projeto
  2. Pré-requisitos
  3. Instalação(Sem Docker)
  4. Uso
  5. Contributors

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)

  1. Clone o repositório
  git clone https://github.com/mauricioccardoso/travel-api-crystal-kemal.git
  1. Acesse o diretório do projeto
  cd travel-api-crystal-kemal
  1. 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".

  2. Na raiz do projeto, intale as dependências do Crystal usando o Shards

  shards install
  1. 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
  1. Execute as migrations do banco de dados
 crystal sam.cr db:migrate ou make sam db:migrate
  1. Inicie a API
 crystal  run src/main.cr
  1. Inicie a API
 crystal  run src/main.cr

Docker

  1. Clone o repositório
  git clone https://github.com/mauricioccardoso/travel-api-crystal-kemal.git
  1. Acesse o diretório do projeto
  cd travel-api-crystal-kemal
  1. 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.

  1. Rota: GET /travel_plans

    • Parâmetros de consulta: optimize e expand
    • 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.
  2. Rota: GET /travel_plans/:id

    • Parâmetros de consulta: Nenhum
  3. Rota: POST /travel_plans

    • Parâmetros de consulta: Nenhum
  4. Rota: PUT /travel_plans/:id

    • Parâmetros de consulta: Nenhum
  5. Rota: DELETE /travel_plans/:id

    • Parâmetros de consulta: Nenhum
  6. Rota: PATCH /travel_plans/:id/append

    • Parâmetros de consulta: Nenhum

Contributors

Repository

travel-api_crystal-kemal

Owner
Statistic
  • 0
  • 0
  • 0
  • 0
  • 0
  • 10 months ago
  • June 28, 2023
License

Links
Synced at

Tue, 21 May 2024 20:49:50 GMT

Languages