Este projeto é uma solução para o Desafio FastAPI proposto pela Paneas. O objetivo é construir uma aplicação RESTful utilizando o framework FastAPI, com ênfase em práticas de desenvolvimento, escalabilidade, segurança e integração com outras tecnologias.
Leia o Desafio FastAPI - Paneas para obter mais detalhes.
-
API de Gerenciamento de Usuários
- ✅ CRUD User
- ✅ Autenticação baseada em tokens (JWT)
- ✅ Permissões de Usuário (admin, usuário regular)
-
Integração com Banco de Dados
- ✅ SQLAlchemy como ORM
- ✅ Integração com PostgreSQL
- ✅ Migrações de Banco de Dados com Alembic
-
Documentação da API
- ✅ Utilização do Swagger
- ✅ Documentação de Endpoints e Modelos
- ✅ Exemplos de Requisições e Respostas
-
Dockerização da Aplicação
- ✅ Dockerfile fornecido
- ✅ docker-compose fornecido
- ✅ Orquestração eficiente da aplicação e banco de dados
O código-fonte está disponível neste repositório Git. Siga as instruções abaixo para configurar e executar a aplicação.
Uma documentação detalhada e justificativa de abordagens de desenvolvimento estão disponíveis em um passo a passo que usei para registrar o desenvolvimento.
Antes de iniciar a execução do projeto, certifique-se de ter as seguintes ferramentas instaladas:
- Docker: O projeto utiliza Docker para facilitar a execução em diferentes máquinas e também por ser um dos critérios do desafio. -- Site Oficial para instalar o Docker
- Clone o repositório:
git clone https://github.com/tiagoGIM/fast-api-challenge-user- Navegue até o diretório do projeto:
cd fast-api-challenge-user- Execute o Docker Compose:
docker-compose up --build
- Execute as migrations acesse o terminal docker da api e rode o seguinte comando
alembic upgrade headO Docker Compose criará os contêineres necessários para a aplicação e o banco de dados PostgreSQL. Após a conclusão, a aplicação estará acessível em http://localhost:8000 e a documentação da API em http://localhost:8000/docs.
O projeto incorpora uma estrutura de segurança, possui rotas protegidas e usuários com distintas permissões. Nesse contexto, foram implementadas rotas públicas, acessíveis a usuários comuns, bem como rotas de nível restrito para administradores. Essa abordagem visa garantir um controle efetivo de acesso e segurança na aplicação, atendendo às necessidades específicas de cada tipo de usuário.
