Repositório dedicado ao desafio técnico para admissão como estagiario backend na empresa Triagil
Para rodar o projeto, siga as etapas abaixo:
- Crie um ambiente virtual para isolar as dependências do projeto:
- Ative o ambiente virtual:
- No Windows:
- No Linux/MacOS:
- Instale as dependências do projeto:
- Gere sua SECRET_KEY a partir do seguinte comando no terminal:
- 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
- Faça as migrações do banco de dados:
- Inicie o servidor de desenvolvimento:
- Abra o navegador e acesse o endereço http://localhost:8000 para acessar a aplicação.
python -m venv venv
venv\Scripts\activate
source venv/bin/activate
pip install -r requirements.txt
python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
SECRET_KEY='your-secret-key-here' #True or False DEBUG=True POSTGRES_DB= POSTGRES_USER= POSTGRES_PASSWORD= DB_HOST= DB_PORT=5432
python manage.py migrate
python manage.py runserver
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
- Criar ambiente virtual:
- Windows
python -m venv venv
- Linux ou macOS
python3 -m venv venv
- Ativar ambiente virtual:
- Windows
cd venv/Scripts
- caso use o powershell
./activate
- caso use o cmd
activate
- Linux ou macOS
source venv/bin/activate
- 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
- 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.
- 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.
- 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.
- Execute o comando abaixo para coletar os arquivos estaticos:
python manage.py collectstatic
- Rodando os containers:
docker compose up -d
- 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
- Rodando os testes:
docker container exec -it triagil_app python manage.py test
- 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/
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
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 insomniahttp://127.0.0.1:8000/poketeams/api/schema/swagger/
abre a interface da documentação swaggerhttp://127.0.0.1:8000/poketeams/api/redoc/
abre a interface do redoc
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
}
]
}
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
}
]
}
]
}
http://127.0.0.1:8000/poketeams/api/teams/
{
"user": "brendon",
"team": [
"blastoise",
"pikachu",
"charizard",
"venusaur",
"lapras",
"dragonite"
]
}
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter mais detalhes.