Para utilizar essa aplicação, é essencial que o ambiente esteja devidamente configurado. Primeiramente, é necessário ter a linguagem Python instalada no sistema, pois a partir dela será possível realizar a instalação do FastAPI.
Para executar o projeto, é necessário utilizar um ambiente virtual, criado e executado por meio do Pyenv. Além disso, o gerenciador de pacotes Poetry foi utilizado, a fim de gerenciar as dependências e o ambiente virtual.
Por fim, para uma futura execução da interface, ainda não finalizada, é necessária a instalação do Node.js, ferramenta indispensável para criar e rodar o ReactJS.
Com essas dependências devidamente configuradas, o desenvolvimento e a execução da aplicação ocorrerão de forma fluida e organizada.
- Clone o repositório:
git clone https://github.com/MarcioDzn/Prosel-EcompJR.git.
- Navegue até o diretório principal:
cd todo_list
- Ative o ambiente virtual:
poetry shell
- Instale as dependências:
poetry install
- Construa o Banco de Dados:
alembic upgrade head
- Execute a API:
fastapi dev todo_list/app.py
Após a execução da API, o seguinte "painel" será exibido no terminal:
O próprio fastapi disponibiliza uma documentação feita automaticamente a partir do Swagger, para visualizá-la deve-se acessar a segunda URL fornecida no painel supracitado.
As imagens abaixo ilustram as rotas e endpoints disponíveis na API. Vale salientar que muitas das rotas são protegidas, ou seja, só podem ser executadas com autenticação prévia.
Retorna uma lista com os dados de todos os usuários cadastrados.
Apenas usuários autenticados e com o tipo "administrator" podem ter acesso a essa rota.
Exemplo de resposta:
{
"users": [
{
"id": 0,
"name": "string",
"email": "[email protected]",
"type": "user",
"created_at": "2024-09-30T19:30:32.040Z"
}
]
}
- Status de sucesso: 200 OK
Permite a criação de um novo usuário a partir dos dados fornecidos.
Exemplo de corpo da requisição:
{
"name": "string",
"email": "[email protected]",
"password": "string",
"type": "user"
}
- Status de sucesso: 201 CREATED
- Status de erro: 422 VALIDATION ERROR
Retorna os dados do usuário autenticado.
Apenas usuários autenticados podem ter acesso a essa rota.
Exemplo de resposta:
{
"id": 0,
"name": "string",
"email": "[email protected]",
"type": "user",
"created_at": "2024-09-30T19:30:32.040Z"
}
- Status de sucesso: 200 OK
Remove o usuário autenticado do banco de dados.
Apenas usuários autenticados podem ter acesso a essa rota.
- Status de sucesso: 200 OK
Permite a edição de dados do usuário autenticado. Não é necessário informar todos os dados para realizar a atualização.
Exemplos de corpo da requisição:
- Exemplo 1:
{
"name": "string"
}
- Exemplo 2:
{
"password": "string"
}
Apenas usuários autenticados podem ter acesso a essa rota. Apenas administradores podem alterar o campo "type"
- Status de sucesso: 200 OK
Retorna os dados de um usuário com um id específico.
Apenas usuários autenticados e com o tipo "administrator" podem ter acesso a essa rota.
Exemplo de resposta:
{
"id": 0,
"name": "string",
"email": "[email protected]",
"type": "user",
"created_at": "2024-09-30T19:30:32.040Z"
}
- Status de sucesso: 200 OK
Remove um usuário a partir de seu id.
Apenas usuários autenticados e com o tipo "administrator" podem ter acesso a essa rota.
- Status de sucesso: 200 OK
Cria uma nova tarefa associada ao usuário atualmente autenticado.
Apenas usuários autenticados podem ter acesso a essa rota.
Exemplo de corpo da requisição:
{
"title": "string",
"description": "string",
"status": "doing"
}
- Status de sucesso: 201 CREATED
- Status de erro: 422 VALIDATION ERROR
Retorna todas as tarefa relacionadas ao usuário autenticado.
Apenas usuários autenticados podem ter acesso a essa rota.
Exemplo de resposta:
{
"tasks": [
{
"id": 0,
"title": "string",
"description": "string",
"status": "doing",
"created_at": "2024-09-30T19:29:46.340Z"
}
]
}
- Status de sucesso: 200 OK
Retorna uma tarefa específica de um usuário autenticado a partir de seu id.
Apenas usuários autenticados podem ter acesso a essa rota.
Exemplo de resposta:
{
"id": 0,
"title": "string",
"description": "string",
"status": "doing",
"created_at": "2024-09-30T19:29:46.340Z"
}
- Status de sucesso: 200 OK
Permite a edição uma tarefa específica de um usuário autenticado a partir de seu id.
Apenas usuários autenticados podem ter acesso a essa rota.
- Status de sucesso: 200 OK
Remove uma tarefa específica de um usuário autenticado a partir de seu id.
Apenas usuários autenticados podem ter acesso a essa rota.
- Status de sucesso: 200 OK
Permite a autenticação de um usuário a partir de suas credênciais (e-mail e senha)
- Status de sucesso: 200 OK
Como já mencionado, muitas rotas necessitam de autenticação prévia para que sejam executadas. As únicas exceções são a POST /users
, necessária para a criação de novas contas e a POST /auth
, a qual permite a autenticação de um usuário.
Para a realização da segurança utilizou-se os frameworks passlib
, para a encriptação de senhas e pyjwt
, para a criação de tokens de autenticação.
Caso o usuário tente acessar uma rota protegida sem a devida autenticação prévia um erro será exibido, com o status: 401 UNAUTHORIZED.
Essa seção é destinada a ilustração dos prototipos das telas, desenvolvidadas com a ferramenta Figma.
🚧 Em construção 🚧