Preparando Ambiente
Este projeto é um sistema de pedidos de lanches adaptável para web e mobile, focado no backend. A aplicação é desenvolvida utilizando FastAPI, SQLAlchemy, e Docker.
Pré-Requisitos
Nota: Essa é uma etapa indispensável para habilitar o ambiente de avaliação do tech challenge!
- Sistema Operacional: O projeto pode ser executado em qualquer sistema operacional que suporte Docker e Python. Recomenda-se um sistema baseado em Unix (Linux ou macOS) para facilitar o uso de Docker;
- Python: Versão 3.8 ou Superior;
- Docker: Para Containerização da Aplicação.
- Docker Compose: Para Orquestração dos Contêineres Docker.
Configuração do Ambiente
Instalação do Python
Linux macOS:
Windows:
- Baixe e instale o Python no Site Oficial.
Instalação do Docker
Siga as instruções no site oficial do Docker para instalar o Docker e Docker Compose:
Clonando o Repositório
Clone este repositório para sua máquina local:
Nota: Essa é uma etapa indispensável para habilitar o ambiente de avaliação do tech challenge!
Banco de Dados
Nota: Essa é uma etapa indispensável para habilitar o ambiente de avaliação do tech challenge!
- Crie um arquivo
.env
na raiz do projeto e defina as seguintes variáveis:
DATABASE_URL=postgresql://postgres:localhost%401988@db:5432/challenge
SECRET_KEY=mySecurePassword
ADMIN_NAME=Admin User
ADMIN_EMAIL=email@email.com.br
ADMIN_CPF=00000000000
ADMIN_PASSWORD=your_password
Instalando Dependências
Nota: Essa é uma etapa indispensável para habilitar o ambiente de avaliação do tech challenge!
- Crie e ative um ambiente virtual (opcional, mas recomendado):
- Instale as Dependências do Projeto:
-
Execute as migrações do Alembic para criar o banco de dados e as tabelas necessárias:
Nota: Etapa opcional para habilitar o ambiente de avaliação do tech challenge
Executando a Aplicação
Nota: Essa é uma etapa indispensável para habilitar o ambiente de avaliação do tech challenge!
Com Docker:
Certifique-se de que o Docker e o Docker Compose estão instalados. Navegue até a pasta do projeto e execute:
A aplicação estará disponível em localhost:2000
.
Sem Docker:
Nota: Etapa opcional para habilitar o ambiente de avaliação do tech challenge
Execute o servidor FastAPI:
A aplicação estará disponível em localhost:2000
.
Documentação da API
A documentação interativa da API está disponível em localhost:2000/docs
.
Estrutura de Arquivos
app/main.py
: Ponto de entrada da aplicação.app/models.py
: Definição dos modelos de dados.app/schemas.py
: Definição dos esquemas Pydantic para validação.app/crud.py
: Funções CRUD para manipulação dos dados.app/database.py
: Configuração do banco de dados e sessão.app/routers
: Roteadores FastAPI para diferentes endpoints (clientes, produtos, pedidos).app/middleware.py
: Middleware para limitação de taxa (Rate Limiting).
Limitação de Taxa
Foi criado mas ainda não implementado um middleware para limitar as solicitações de um mesmo IP para o endpoint de token. Este middleware usa Redis para rastrear e limitar as solicitações:
- Limite de 10 solicitações por minuto por IP.
- Mensagem de erro personalizada quando o limite é atingido.
Contribuição
Para contribuir com este projeto, siga os passos:
- Fork o repositório;
- Crie uma nova branch (
git checkout -b feature/nova-funcionalidade
); - Commit suas mudanças (
git commit -am 'Adicionei uma nova funcionalidade'
); - Push para a branch (
git push origin feature/nova-funcionalidade
); - Abra um Pull Request;