Skip to content

Repositório dedicado ao desafio técnico para admissão como estagiario na triagil

License

Notifications You must be signed in to change notification settings

mts-lucas/desafio-triagil

Repository files navigation

Desafio Triagil

Repositório dedicado ao desafio técnico para admissão como estagiario backend na empresa Triagil

Executando o projeto sem docker

Para rodar o projeto, siga as etapas abaixo:

  1. Crie um ambiente virtual para isolar as dependências do projeto:
  2. python -m venv venv
  3. Ative o ambiente virtual:
    • No Windows:
    • venv\Scripts\activate
    • No Linux/MacOS:
    • source venv/bin/activate
  4. Instale as dependências do projeto:
  5. pip install -r requirements.txt
  6. Gere sua SECRET_KEY a partir do seguinte comando no terminal:
  7. python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
    
  8. Crie um arquivo .env na raiz do diretório do projeto, copie o conteudo de .env.example e adicione sua SECRET_KEY, logo apos crie o bando de dados e preencha os demais campos
  9. SECRET_KEY='your-secret-key-here'
    #True or False
    DEBUG=True
    POSTGRES_DB=
    POSTGRES_USER=
    POSTGRES_PASSWORD=
    DB_HOST=
    DB_PORT=5432
      
  10. Faça as migrações do banco de dados:
  11. python manage.py migrate
  12. Inicie o servidor de desenvolvimento:
  13. python manage.py runserver
  14. Abra o navegador e acesse o endereço http://localhost:8000 para acessar a aplicação.

Executando o Projeto com Docker Compose

Este é um guia para executar o projeto usando o Docker Compose. O Docker Compose permite criar e executar o ambiente de desenvolvimento com todas as dependências do projeto de forma fácil e automatizada. Aqui estou usando o Postgres como banco de dados.

1 Faça clone desse repositorio:

git clone https://github.com/mts-lucas/desafio-triagil.git
  1. Criar ambiente virtual:
  • Windows
python -m venv venv
  • Linux ou macOS
python3 -m venv venv
  1. Ativar ambiente virtual:
  • Windows
cd venv/Scripts
  • caso use o powershell
./activate
  • caso use o cmd
activate
  • Linux ou macOS
source venv/bin/activate
  1. Instale as dependências:
pip install -r requirements.txt

Caso tenja algum problema na instalação das dependencias, execute o comando abaixo.

pip install -r requirements.txt --use-pep517
  1. Criar arquivo .env: Nesse caso só será necessário a SECRET_KEY. Copie e cole a variável SECRET_KEY que está em .env.example para o seu .env. Em seguida, no seu terminal execute o seguinte comando para criar:
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"

Irá ser gerado um uma chave onde você poderá copiar e colar como valor da SECRET_KEY no seu .env.

  1. Crie um arquivo chamado .env na raiz do projeto e cole o conteúdo do .env.example:
SECRET_KEY='your-secret-key-here'
#True or False
DEBUG=True
POSTGRES_DB=
POSTGRES_USER=
POSTGRES_PASSWORD=
DB_HOST=
DB_PORT=5432

Certifique-se de preencher corretamente os valores para cada variável de ambiente de acordo com as configurações do seu ambiente.

  1. Crie um arquivo chamado .env.docker na raiz do projeto e cole o conteúdo do .env.docker.example:
#True or False
DEBUG=True
SECRET_KEY='your-secret-key-here'

POSTGRES_DB=
POSTGRES_USER=
POSTGRES_PASSWORD=
DB_HOST=
DB_PORT=5432

PGADMIN_DEFAULT_EMAIL=
PGADMIN_DEFAULT_PASSWORD=
#True or False
PGADMIN_CONFIG_SERVER_MODE=

Da mesma forma, preencha as variáveis de ambiente com os valores corretos para o ambiente em que você está executando o projeto.

Certifique-se de revisar e ajustar todas as variáveis de ambiente nos arquivos .env e .env.docker de acordo com a configuração do seu ambiente, como o nome do banco de dados, usuário, senha, host, porta, etc.

  1. Execute o comando abaixo para coletar os arquivos estaticos:
python manage.py collectstatic
  1. Rodando os containers:
docker compose up -d
  1. Executando as migrations e migrates:
docker container ls
docker container exec -it triagil_app python manage.py makemigrations
docker container exec -it triagil_app python manage.py migrate
  1. Rodando os testes:
docker container exec -it triagil_app python manage.py test       
  1. Após a inicialização bem-sucedida dos contêineres, você poderá acessar o projeto em seu navegador usando o seguinte endereço:
http://127.0.0.1:8000/

Diagrama de entidade relacionamento

    erDiagram
        POKEMON {

            int id PK
            int dex_id UK
            string(32) name
            int weight
            int height
        }

        TEAM {

            int id PK
            string(32) owner

        }
        TEAM_POKEMONS {
            int pokemonID PK, FK
            int TeamID PK, FK
        }

        POKEMON ||--o{ TEAM_POKEMONS : esta_em
        TEAM ||--o{ TEAM_POKEMONS : tem

Loading

Exemplos

Para visualização de documentação, existem 3 endpoints dedicados a isso:

  • http://127.0.0.1:8000/poketeams/api/schema retorna um arquivo json que pode ser usado no postman ou insomnia
  • http://127.0.0.1:8000/poketeams/api/schema/swagger/ abre a interface da documentação swagger
  • http://127.0.0.1:8000/poketeams/api/redoc/ abre a interface do redoc

Output(GET)

http://127.0.0.1:8000/poketeams/api/teams/{team_id}

{
  "id": 1,
  "owner": "ash",
  "pokemons": [
    {
      "id": 172,
      "name": "pichu",
      "weight": 20,
      "height": 3
    },
    {
      "id": 4,
      "name": "charmander",
      "weight": 85,
      "height": 6
    }
  ]
}

Output(GET)

http://127.0.0.1:8000/poketeams/api/teams/

{
  "count": 32,
  "next": "http://127.0.0.1:8000/poketeams/api/teams/?format=json&page=2",
  "previous": null,
  "results": [
    {
      "id": 1,
      "owner": "ash",
      "pokemons": [
        {
          "id": 172,
          "name": "pichu",
          "weight": 20,
          "height": 3
        },
        {
          "id": 4,
          "name": "charmander",
          "weight": 85,
          "height": 6
        }
      ]
    },
    {
      "id": 2,
      "owner": "misty",
      "pokemons": [      ]
    },
    {
      "id": 3,
      "owner": "brock",
      "pokemons": [
        {
          "id": 172,
          "name": "pichu",
          "weight": 20,
          "height": 3
        },
        {
          "id": 4,
          "name": "charmander",
          "weight": 85,
          "height": 6
        }
      ]
    },
    {
      "id": 4,
      "owner": "may",
      "pokemons": [
        {
          "id": 172,
          "name": "pichu",
          "weight": 20,
          "height": 3
        },
        {
          "id": 4,
          "name": "charmander",
          "weight": 85,
          "height": 6
        }
      ]
    },
    {
      "id": 5,
      "owner": "dawn",
      "pokemons": [
        {
          "id": 172,
          "name": "pichu",
          "weight": 20,
          "height": 3
        },
        {
          "id": 4,
          "name": "charmander",
          "weight": 85,
          "height": 6
        }
      ]
    }
  ]
}

Input(POST)

http://127.0.0.1:8000/poketeams/api/teams/

{
  "user": "brendon",
  "team": [
    "blastoise",
    "pikachu",
    "charizard",
    "venusaur",
    "lapras",
    "dragonite"
  ]
}

Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter mais detalhes.

About

Repositório dedicado ao desafio técnico para admissão como estagiario na triagil

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published