Skip to main content

A modern, async-first, type-safe Python web framework with SDD support

Project description

🌌 Aura Framework

O framework Python moderno que você sempre quis.
Async nativo · Type-safe · Schema-Driven · Módulos · Jobs integrados


Aura nasceu da frustração real com o Django, FastAPI e Flask.
Frameworks que ou te dão baterias antigas, ou te deixam comprar tudo separado.
Aura entrega o melhor dos dois mundos: opiniões certas nos lugares certos, liberdade onde importa.


✨ Por que Aura?

Problema real Como outros resolvem Como Aura resolve
settings.py com 500 linhas Django: um arquivo global aura.toml modular + config type-safe por seção
ORM síncrono em stack async Django: sync_to_async() em todo lugar SQLAlchemy 2.x async genuíno desde o core
Serializers fazem tudo (DRF) ViewSet + Serializer + Permissions misturados Schemas (DTOs) separados de Services e Routers
Celery complexo, sem async Celery 5: ainda sem async def nativo @task(queue="emails") — async de verdade
DI só funciona no HTTP FastAPI: Depends() não roda em jobs/CLI DIContainer funciona em qualquer contexto
Typing quebra com mypy Django: metaclass magic quebra o type checker Pydantic v2 em todo o framework, mypy strict
Sem estrutura de projeto FastAPI: 82+ boilerplates diferentes @Module NestJS-inspired com DI encapsulado
N+1 queries em produção DRF: serializers aninhados sem select_related Repository[T] com métodos otimizados

🚀 Início rápido

pip install aura-framework[uvicorn]
# main.py
from aura import Aura, Module, Schema, injectable
from aura.routing.decorators import get, post
from aura.routing.params import Body, Param

class CreateUserSchema(Schema):
    name: str
    email: str

@injectable
class UserService:
    async def create(self, data: CreateUserSchema) -> dict:
        return {"id": 1, **data.model_dump()}

class UserController:
    def __init__(self, service: UserService):
        self.service = service

    @get("/users")
    async def list_users(self) -> list:
        return await self.service.list_all()

    @post("/users")
    async def create_user(self, body: Body[CreateUserSchema]) -> dict:
        return await self.service.create(body)

@Module(controllers=[UserController], providers=[UserService], prefix="/api")
class UserModule:
    pass

app = Aura(modules=[UserModule], title="Minha API")
uvicorn main:app --reload
# → /docs    (Swagger UI auto-gerado)
# → /redoc   (ReDoc auto-gerado)

📚 Documentação

Documento Descrição
Motivação e Comparativo Por que Aura existe, dores que resolve
Schemas e Validação DTOs, Pydantic v2, validação de dados
ORM e Queries Repository pattern, CRUD, busca, filtros
Jobs e Workers Tasks assíncronas, queues, periodic jobs
Módulos e DI Sistema de módulos, injeção de dependência
Roadmap O que está sendo construído

⚡ CLI

aura new project meu-projeto
aura generate module users
aura run
aura worker
aura migrate make "add users"

📄 Licença

MIT © Aura Contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aura_web-0.1.0.tar.gz (88.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aura_web-0.1.0-py3-none-any.whl (78.5 kB view details)

Uploaded Python 3

File details

Details for the file aura_web-0.1.0.tar.gz.

File metadata

  • Download URL: aura_web-0.1.0.tar.gz
  • Upload date:
  • Size: 88.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for aura_web-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0e6f30a1f2fa3ab4a9fc5cf8bb2ba2951259e9449c149932b4c0373e68dc52bc
MD5 813d35ee330f136d44064d38c3e09b38
BLAKE2b-256 dc4682e1a0494f6f4ceae2061439b74388d2917efda74cd5272da19390a0f779

See more details on using hashes here.

File details

Details for the file aura_web-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: aura_web-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 78.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for aura_web-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0cd4bbcf1763e59a72ec49e6f3ef4e80b25a548fea73eab67e940dd42930bf7c
MD5 86786634982de7265f0d12dae6f68e02
BLAKE2b-256 76b22ec8fdfa2ee713ddc4bf0b1161a466ef61d00cd4913e8b45c730abfece11

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page