Criei uma API REST para gerenciamento de pedidos, clientes e produtos de uma pizzaria.
Construída com FastAPI, SQLAlchemy e autenticação com JWT.
- FastAPI - Framework web moderno e rápido
- Uvicorn - Servidor ASGI para rodar a aplicação
- SQLAlchemy - ORM para manipulação do banco de dados
- Alembic - Migrations do banco de dados
- Passlib - Hash de senhas com Bcrypt
- Python-Jose - Geração/validação de tokens JWT
- python-dotenv - Carrega variáveis de ambiente a partir de um arquivo
.env - python-multipart - Suporte ao envio de arquivos via formulários
- SQLAlchemy-Utils - Utilitários adicionais para o SQLAlchemy
- Requests - Biblioteca HTTP para fazer requisições externas
- Cadastro e login de usuários com autenticação JWT
- Cadastro de produtos (pizzas, bebidas, etc)
- Gerenciamento de pedidos
- Relacionamento entre clientes, pedidos e itens
Project_FastAPI/
├── app/
│ ├── main.py # Inicialização do FastAPI
│ ├── dependencies # Dependencias para verificar sessão e token
│ ├── models/ # Modelos SQLAlchemy
│ ├── routes/ # Endpoints da API
│ │ └── auth/ # Geração e verificação de tokens JWT
│ │ └── # Demais rotas
│ ├── schemas/ # Pydantic (entrada e saída de dados)
│ ├── tests # Testes automatizados
│ └── banco.db # Conexão e criação do banco
├── .env
├── .gitignore
├── alembic.ini
├── README.md
└── requirements.txt- Clone o repositório
git clone https://github.com/ArielVinis/Project_FastAPI.git
cd Project_FastAPI- Crie e ative um ambiente virtual
python -m venv venv
source venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows- Instale as dependências
pip install -r requirements.txt- Configure o .env
Crie um arquivo .env com:
SECRET_KEY = COLOQUE_SUA_CHAVE_AQUI
ALGORITHM = HS256
ACCESS_TOKEN_EXPIRE_MINUTES = 30🔐 https://secretkeygen.vercel.app/
Copie a chave gerada e substitua o COLOQUE_SUA_CHAVE_AQUI
- Execute a aplicação
uvicorn app.main:app --reload- Acesse a documentação
- Swagger UI: http://localhost:8000/docs
- Redoc: http://localhost:8000/redoc
Sinta-se à vontade para contribuir com melhorias, correções ou novas funcionalidades. Para isso, abra um PR ou issue com sua sugestão.
Desenvolvido por Ariel França