Craft Framework · Open Source MIT

Craft Engine v3.21.0

O framework Python para aplicações web expressivas

Construa aplicações elegantes e prontas para produção em Python, com convenções MVC familiares. Craft ORM com UUIDs de chave dupla, templates Forge, WAF Active Defense e CRUD builder visual — tudo incluído.

1,500+ Testes passando
3 Bancos de dados
MIT Licença
Py 3.14+ Runtime ASGI
routes/web.py & app/Models/Post.py
from craft.facades import Route, Auth, DB
from craft.orm.model import Model

class Post(Model):
    __table__ = "posts"
    fillable = ["title", "body", "user_id"]

    def author(self):
        return self.belongs_to(User)

# Expressive REST & Admin Routing
Route.resource("posts", PostController, write_middleware="auth")
Route.get("/admin", [AdminController, "index"])
    .middleware("auth", "role:admin", "firewall")

Rodando em segundos

Do zero a uma aplicação rodando, com migrations, dados de exemplo e interface administrativa — em quatro passos simples.

1

Clonar e configurar

$ git clone https://github.com/msrjson/craftengine.git
$ cd craftengine/data && cp .env.example .env
$ python dev.py key:generate
2

Migrar e popular

$ python dev.py migrate --seed
3

Servir localmente

$ python dev.py serve

Rodar com Docker

$ docker compose up -d --build

Aplicação pronta em localhost:9000

Tudo o que você precisa, nada do que não precisa

Um framework completo que respeita o seu tempo. Convenções MVC familiares, pensadas para desenvolvedores Python que exigem velocidade, clareza e segurança.

Active Record e UUID de chave dupla

ORM de alto desempenho com eager loading, relacionamentos, soft deletes, query builder e resolução automática de UUID público — em SQLite, PostgreSQL e MySQL.

Desempenho ASGI assíncrono

Um núcleo ASGI de alto throughput: controllers síncronos rodam em paralelo num pool de threads, cada um com uma conexão de banco do pool, e há suporte a controllers assíncronos.

Active Defense e firewall WAF

Web Application Firewall embutido (proteção contra SQLi, XSS e SSRF), honeypot para capturar atacantes, bloqueio contra força bruta e log de auditoria.

CRUD builder visual e no terminal

Gere fatias verticais completas com um comando ou pelo builder visual: migrations DDL, Models, FormRequests, Resources e interface administrativa.

Motor de templates Forge

Templates expressivos com escape automático e diretivas como @csrf, @auth, @guest, @can, @honeypot e layouts de componentes.

Console e CLI para desenvolvedores

Ferramentas de linha de comando completas: geradores, console interativo tinker, migrator de banco, workers de fila, agendador de tarefas e gestão do firewall.

Segurança faz parte do motor

Os padrões perigosos já estão fechados antes da sua primeira rota — não ficam como checklist para depois.

Hash de senha Argon2id

Hash com uso intensivo de memória para senhas novas; hashes antigos em bcrypt e PBKDF2 continuam verificáveis e são atualizados no próximo login.

Cofre de credenciais AES-256-GCM

Chaves de API de terceiros e segredos OAuth ficam criptografados em repouso, com uma chave derivada da chave da aplicação — nunca em texto puro.

Tokens assinados com contexto

Tokens de redefinição de senha e de verificação ficam presos à sua finalidade e ao seu contexto, com expiração opcional, para que um token vazado não seja reutilizado em outro lugar.

CSRF, honeypot e anti-spam

Todo formulário que altera estado leva @csrf; formulários públicos somam honeypot e anti-spam com comparação em tempo constante, e cada disparo é registrado como evento de segurança.

Autorização, não só autenticação

Gates, policies e middleware role:; o build falha se uma rota administrativa for declarada sem uma proteção de autorização.

Persistência absoluta de dados

Migrations só para frente e soft deletes. Comandos destrutivos como migrate:fresh e db:wipe são proibidos em qualquer ambiente.

Um esqueleto que você copia, não uma biblioteca contra a qual você luta

O repositório é o esqueleto base de uma aplicação nova. Clone, renomeie, e a mesma base de código leva você de um blog até a escala multi-tenant.

craftengine/
  • data/a aplicação, montada como /app
  • data/engine/o núcleo, importado como craft.*
  • data/app/controllers, models, policies, plugins
  • data/routes/rotas web e de API
  • data/resources/views/templates Forge
  • data/database/migrations só para frente e seeders
  • data/documentation/mais de 35 guias e llms.txt
  • data/tests/mais de 1.500 casos pytest
  • data/dev.pya CLI de desenvolvimento
  • .claude/rules/governança e gates de qualidade
  • .agents/skills para agentes de IA

Módulos, plugins e container

Núcleo, módulos de negócio e plugins de capacidade removíveis, ligados por um container de injeção de dependência e facades estáticas — todo serviço pode ser mockado no pytest.

i18n no banco de dados

As traduções ficam no banco, não em arquivos soltos. Todo projeto nasce trilíngue — inglês como fonte, português do Brasil como padrão, espanhol como alternativa — com plurais ICU.

Releases governadas

Versão, contador de release e changelog andam juntos; testes, lint e o gate de linguagem precisam passar antes de uma release. Código em inglês, zero texto de usuário fixo no código.

Feito para pessoas e para agentes de código

Convenções que um modelo já entende, documentação escrita para máquinas e para pessoas, e ferramentas de agente de primeira classe dentro do framework.

Model Context Protocol

Declare classes AgentTool protegidas por RBAC e exponha-as via MCP, para que assistentes e IDEs descubram e chamem as ferramentas da sua aplicação com segurança.

SDK de IA independente de provedor

Uma facade AI para geração de texto e um orquestrador de agentes, com drivers substituíveis em vez de dependência de um fornecedor.

Documentação legível por máquina

llms.txt, llms-full.txt, CRAFT_ENGINE.md e skills de agente entregam a um agente de código o ciclo de construção, os limites e o que ainda não existe.

Requisições em paralelo num único worker

Medido na aplicação de exemplo com o load tester incluído, depois de mover a cadeia de controllers para um pool de threads com conexões em pool.

~115 req/s com 10 clientes simultâneos, antes ~27 req/s
0.57 s latência p95, antes 1,9 s
JSON jobs na fila, nunca pickle — seguros entre processos