BS FastAPI CLI
Uma ferramenta CLI para gerar estruturas e código FastAPI automaticamente. Acelere seu desenvolvimento FastAPI com geração automática de modelos, schemas, routers e estrutura de projeto completa.
Características
- ✅ Inicialização de projeto completa - Cria estrutura FastAPI organizada
- ✅ Geração automática de modelos - SQLAlchemy models com tipos customizados
- ✅ Schemas Pydantic - Validação automática com Create/Update/Response schemas
- ✅ Routers FastAPI - CRUD completo com paginação e autenticação
- ✅ ORM operations - Operações de banco de dados prontas para uso
- ✅ Segurança integrada - Autenticação JWT e hash de senhas
- ✅ Conexão de banco - Configuração SQLAlchemy com PostgreSQL/SQLite
Instalação
pip install bs-fastapi-cli
Uso Rápido
1. Inicializar um projeto
bs init --name "meu_projeto"
cd meu_projeto
Isso cria a seguinte estrutura:
meu_projeto/
├── main.py # Aplicação FastAPI principal
├── bs__connection/ # Configuração de banco de dados
│ ├── __init__.py
│ └── database.py
├── bs__security/ # Autenticação e segurança
│ ├── __init__.py
│ └── auth.py
├── models/ # Modelos SQLAlchemy
│ └── __init__.py
├── schemas/ # Schemas Pydantic
│ └── __init__.py
├── routers/ # Routers FastAPI
│ └── __init__.py
└── orm/ # Operações de banco
└── __init__.py
2. Criar um modelo
bs create Usuario --fields "nome:str,email:str,idade:int,ativo:bool"
Isso gera automaticamente:
models/modelsUsuario.py- Modelo SQLAlchemyschemas/schemaUsuario.py- Schemas Pydantic (Create/Update/Response)routers/routeUsuario.py- Router FastAPI com CRUD completoorm/ormUsuario.py- Operações de banco de dados
3. Instalar dependências e executar
pip install fastapi uvicorn sqlalchemy python-jose passlib bcrypt
uvicorn main:app --reload
Comandos Disponíveis
bs init
Inicializa uma nova estrutura de projeto FastAPI.
Opções:
-n, --name- Nome do projeto (padrão: "fastapi_project")-p, --path- Caminho onde criar o projeto (padrão: ".")
Exemplos:
bs init --name "api_vendas"
bs init --name "blog_api" --path "./projetos"
bs create
Cria um novo modelo com todos os arquivos associados.
Parâmetros:
MODEL_NAME- Nome do modelo (obrigatório)
Opções:
-f, --fields- Campos do modelo no formato "nome:tipo,nome:tipo"-p, --path- Caminho do projeto (padrão: ".")
Tipos suportados:
str- String/Textoint- Número inteirobool- Booleano (True/False)text- Texto longodatetime- Data e hora
Exemplos:
bs create Produto
bs create Cliente --fields "nome:str,email:str,telefone:str"
bs create Pedido --fields "total:int,data_criacao:datetime,ativo:bool,observacoes:text"
Estrutura Gerada
Modelo (SQLAlchemy)
class Usuario(Base):
__tablename__ = "usuarios"
nome = Column(String, nullable=True)
email = Column(String, nullable=True)
idade = Column(Integer, nullable=True)
ativo = Column(Boolean, default=False)
Schema (Pydantic)
class UsuarioCreate(UsuarioBase):
nome: str # Campo obrigatório
class UsuarioUpdate(UsuarioBase):
pass
class UsuarioResponse(UsuarioInDB):
pass
Router (FastAPI)
@router.post("/usuarios/", response_model=UsuarioResponse)
async def create_usuario(...)
@router.get("/usuarios/", response_model=UsuarioListResponse)
async def get_usuarios(...)
@router.get("/usuarios/{usuario_id}", response_model=UsuarioResponse)
async def get_usuario(...)
@router.put("/usuarios/{usuario_id}", response_model=UsuarioResponse)
async def update_usuario(...)
@router.delete("/usuarios/{usuario_id}")
async def delete_usuario(...)
Configuração do Banco de Dados
O projeto gerado suporta PostgreSQL e SQLite através da variável de ambiente DATABASE_URL:
# PostgreSQL
export DATABASE_URL="postgresql://user:password@localhost/dbname"
# SQLite (padrão)
export DATABASE_URL="sqlite:///./app.db"
Autenticação
O sistema de segurança inclui:
- Hash de senhas com bcrypt
- Tokens JWT para autenticação
- Middleware de segurança configurado
- Funções helper para autenticação
Exemplos de Uso
Projeto E-commerce
bs init --name "ecommerce_api"
cd ecommerce_api
bs create Produto --fields "nome:str,preco:int,descricao:text,ativo:bool"
bs create Cliente --fields "nome:str,email:str,telefone:str,data_cadastro:datetime"
bs create Pedido --fields "cliente_id:int,total:int,status:str,data_pedido:datetime"
API de Blog
bs init --name "blog_api"
cd blog_api
bs create Post --fields "titulo:str,conteudo:text,publicado:bool,data_publicacao:datetime"
bs create Autor --fields "nome:str,email:str,bio:text,ativo:bool"
bs create Comentario --fields "post_id:int,autor:str,texto:text,aprovado:bool"
Contribuição
Este projeto está em desenvolvimento ativo. Sugestões e contribuições são bem-vindas!
Licença
MIT License
Metadata
Release files for base-system-api 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| base_system_api-0.1.1.tar.gz | 14.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| base_system_api-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.1 kB
Release files / base_system_api-0.1.1.tar.gz
| Download URL | base_system_api-0.1.1.tar.gz |
|---|---|
| Size | 14.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
81b9ab555ecc0d3857ad1885722fe0222d52faa3947a773bb824e6e06e574572
|
|
BLAKE2b-256 checksum How to use checksums |
52df45f512bf30be01d4ce483a8dbb04fe3d89edb6dcf09d5536b14f482e9201
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.6
|
Release files / base_system_api-0.1.1-py3-none-any.whl
| Download URL | base_system_api-0.1.1-py3-none-any.whl |
|---|---|
| Size | 17.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8c831a763d126bcad9c086b264d4f42f9c5c5d2f0459370a02d67ad4ccd2b054
|
|
BLAKE2b-256 checksum How to use checksums |
596a9fed91248f7b963548fa86b610e85b6ba9497bb6eefefeaee9fb74130065
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.6
|
Security for base-system-api 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.