thiagopena /
djangoSIGE
Sistema Integrado de Gestão Empresarial baseado em Django
Loading repository data…
cleitonleonel / repository
Sistema de gestão de NFSe em Python (FastAPI + SQLAlchemy + SQLite), com dashboard, downloads XML/PDF, analytics e relatórios JSON/CSV/XLSX.
O projeto armazena clientes e notas em um banco SQLite local, sincroniza dados com o portal de NFSe, baixa XML/PDF, gera relatórios e exibe indicadores no dashboard.
backend/main.py.frontend/, com páginas carregadas dinamicamente.ui/, usando Tauri como shell nativo.nfse.db.nfse_manager/
├── 📁 backend/ # API, modelos, schemas e rotas
├── 🎨 frontend/ # UI web servida pelo FastAPI
├── 🖥️ ui/ # Shell desktop com Tauri
├── 📚 docs/ # Documentação do projeto
├── 🗃️ nfse.db # Banco SQLite local
├── 🧩 pyproject.toml # Dependências e configuração do Poetry
├── ▶️ run_web.sh # Inicializa a versão web
└── 🚀 run_ui.sh # Inicializa a versão desktop
Leia também:
docs/arquitetura-e-uso.mdOs exemplos abaixo foram condensados do USAGE_EXAMPLES.md para facilitar o uso direto pelo README.
python -m uvicorn backend.main:app --host 0.0.0.0 --port 8000 --reload
import uvicorn
from backend.main import app
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
python -c "from backend.main import app; import uvicorn; uvicorn.run(app, port=8000)"
Use sempre os caminhos do pacote backend:
from backend.models import Client, Invoice
from backend.schemas import ClientResponse, SyncRequest, DashboardStats
from backend.database import get_db, SessionLocal
from backend.main import app
from backend.api.deps import get_nfse_client
from backend.api.state import tasks_status
curl -X POST "http://localhost:8000/api/clients" \
-F "cnpj=19.495.981/0001-13" \
-F "razao_social=Minha Empresa" \
-F "username=usuario" \
-F "password=senha123" \
-F "description=Cliente de teste"
Com certificado:
curl -X POST "http://localhost:8000/api/clients" \
-F "cnpj=19.495.981/0001-13" \
-F "razao_social=Minha Empresa" \
-F "username=usuario" \
-F "password=senha123" \
-F "cert_file=@certificado.pfx"
curl "http://localhost:8000/api/clients"
curl -X POST "http://localhost:8000/api/sync" \
-H "Content-Type: application/json" \
-d '{
"client_id": 1,
"data_inicio": "01/01/2026",
"data_fim": "31/05/2026",
"tipo": "emitidas"
}'
curl "http://localhost:8000/api/tasks/{task_id}"
curl "http://localhost:8000/api/analytics/stats?client_id=1"
# JSON
curl "http://localhost:8000/api/reports/export?format=json&period=30d" > relatorio.json
# CSV
curl "http://localhost:8000/api/reports/export?format=csv&period=30d" > relatorio.csv
# XLSX
curl "http://localhost:8000/api/reports/export?format=xlsx&period=30d" > relatorio.xlsx
http://localhost:8000/docshttp://localhost:8000/redocPara adicionar um novo domínio de negócio:
backend/api/routers/;APIRouter com prefixo próprio;backend/main.py.Exemplo mínimo:
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from backend.database import get_db
router = APIRouter(prefix="/api/novo_dominio", tags=["novo_dominio"])
@router.get("/rota-1")
def exemplo(db: Session = Depends(get_db)):
return {"status": "ok"}
python -c "from backend.main import app; print('✓ OK')"
curl "http://localhost:8000/openapi.json" | python -m json.tool
pytest tests/ -v
poetry install --with dev
O projeto não usa requirements.txt; a referência oficial de dependências é o pyproject.toml.
chmod +x run_web.sh
./run_web.sh
Ou, manualmente:
poetry run python -m uvicorn backend.main:app --host 0.0.0.0 --port 8000 --reload
A aplicação ficará disponível em:
http://localhost:8000http://localhost:8000/docshttp://localhost:8000/redocchmod +x run_ui.sh
./run_ui.sh
O script entra na pasta ui/ e chama o fluxo de desenvolvimento do Tauri.
O backend principal está em backend/main.py e:
init_db();frontend/ na raiz da aplicação;backend/api/routers/clients.py — CRUD de clientes.backend/api/routers/invoices.py — Sincronização e listagem de faturas (invoices).backend/api/routers/downloads.py — Download de arquivos e lote ZIP.backend/api/routers/analytics.py — Estatísticas e gráficos.backend/api/routers/reports.py — Exportação de relatórios.backend/api/routers/system.py — Suporte, update check e navegação de pastas.GET /api/clientsPOST /api/clientsPUT /api/clients/{client_id}DELETE /api/clients/{client_id}POST /api/syncGET /api/tasks/{task_id}GET /api/invoicesPOST /api/download/sync-portalGET /api/download/file?path=...POST /api/download/batchGET /api/analytics/statsGET /api/analytics/chartPOST /api/analytics/enrich-xmlGET /api/analytics/rankingGET /api/reports/export?format=json|csv|xlsxPOST /api/support/messageGET /api/system/check-updateGET /api/system/list-foldersclientsGuarda credenciais e configuração de cada cliente:
invoicesGuarda as notas sincronizadas:
emitidas / recebidas)DD/MM/AAAA.ModuleNotFoundError: No module named 'backend': execute os comandos a partir da raiz do projeto.nfse.db é criado automaticamente ao inicializar a aplicação.backend.models, backend.schemas e backend.database../run_web.sh # sobe a API + frontend
./run_ui.sh # inicia o desktop Tauri
Este projeto centraliza a versão no pyproject.toml (campo project.version). Para manter tudo sincronizado e facilitar releases, seguem ferramentas e recomendações:
pyproject.toml (ex.: version = "0.2.0").backend.version.VERSION e existe um endpoint leve /api/system/version que retorna { "current_version": "X.Y.Z" }.release/staging/ e só depois libera a aplicação.frontend/views/about.html) execute:python3 scripts/sync_version.py
chmod +x scripts/release.sh
./scripts/release.sh
1.2.3 é estável, 1.3.0-alpha e 2.0.0-rc.1 são pré-releases e não gerarão automaticamente a release.Existe um workflow (.github/workflows/auto-release.yml) que é disparado quando uma PR para main é encerrada com merge e recebe a label release. O comportamento padrão do workflow:
vX.Y.Z e uma release no GitHub;- ou + (pré-release);release;Recomendações de processo:
pyproject.toml (use poetry version patch/minor/major se utilizar Poetry).main. Aguarde a execução do CI (testes/lint).auto-release pode criar a tag e a release automaticamente.Se quiser que eu adapte o workflow para um fluxo diferente (por exemplo: apenas criar release quando uma PR tiver uma label release ou quando um arquivo RELEASE.md for modificado), posso ajustar isso.
backend/
├── 🚪 main.py # inicia a API e serve o frontend
├── 🗄️ database.py # engine, sessão e get_db()
├── 🧱 models.py # Client, Invoice e init_db()
├── 🧾 schemas.py # modelos Pydantic
└── api/
├── 🔌 deps.py # cliente NFSe a partir do banco
├── 🧠 state.py # status de tarefas em memória
└── routers/
├── 👥 clients.py
├── 📝 invoices.py
├── ⬇️ downloads.py
├── 📊 analytics.py
├── 📤 reports.py
└── ⚙️ system.py
| Área | Arquivo | Função |
|---|---|---|
| API principal | backend/main.py | Sobe o FastAPI e monta o frontend |
| Banco | backend/database.py | Conexão SQLite e sessão SQLAlchemy |
| Modelos | backend/models.py | Tabelas Client e Invoice |
| Schemas | backend/schemas.py | Validação de dados |
| Clientes | `backend/api/routers/clients |
Selected from shared topics, language and repository description—not editorial ratings.
thiagopena /
Sistema Integrado de Gestão Empresarial baseado em Django
Antonio-Neves /
Sistema completo de gestão escolar / School Management System (em desenvolvimento) Python e Django
arthurSchgg /
Fluxee é um sistema de gestão de almoxarifado escolar desenvolvido em Python e Flask. Focado no controle de estoque, fluxo de solicitações de materiais e gestão de serviços auxiliares (transporte, segurança e limpeza), oferecendo uma interface intuitiva para administradores e funcionários escolares.
alexxsouzaa /
PyMediAgenda é um sistema de gestão de agendamento e cadastro de consultas médicas desenvolvido em Python.
felipecolen /
Exemplo de Sistema de Gestão de RH
Pythonando /
Sistema para gestão de uma mercearia local