Metadata-Version: 2.4
Name: aura-web
Version: 0.1.0
Summary: A modern, async-first, type-safe Python web framework with SDD support
Project-URL: Homepage, https://github.com/jonathasdavidd/Aura
Project-URL: Repository, https://github.com/jonathasdavidd/Aura
Project-URL: Documentation, https://github.com/jonathasdavidd/Aura/tree/main/docs
Project-URL: Bug Tracker, https://github.com/jonathasdavidd/Aura/issues
Author-email: Jonathas David <jhone.test14@gmail.com>
License: MIT
License-File: LICENSE
Keywords: api,async,framework,sdd,type-safe,web
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: anyio>=4.0
Requires-Dist: httpx>=0.26
Requires-Dist: pydantic-settings>=2.1
Requires-Dist: pydantic>=2.5
Requires-Dist: python-multipart>=0.0.9
Requires-Dist: rich>=13.0
Requires-Dist: starlette>=0.36
Requires-Dist: tomli>=2.0; python_version < '3.11'
Requires-Dist: typer>=0.9
Requires-Dist: typing-extensions>=4.0; python_version < '3.11'
Provides-Extra: all
Requires-Dist: alembic>=1.13; extra == 'all'
Requires-Dist: granian>=1.0; extra == 'all'
Requires-Dist: python-jose[cryptography]>=3.3; extra == 'all'
Requires-Dist: redis[asyncio]>=5.0; extra == 'all'
Requires-Dist: saq>=0.12; extra == 'all'
Requires-Dist: sqlalchemy[asyncio]>=2.0; extra == 'all'
Requires-Dist: uvicorn[standard]>=0.27; extra == 'all'
Provides-Extra: dev
Requires-Dist: httpx>=0.26; extra == 'dev'
Requires-Dist: mypy>=1.8; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov>=4.1; extra == 'dev'
Requires-Dist: pytest>=7.4; extra == 'dev'
Requires-Dist: ruff>=0.2; extra == 'dev'
Provides-Extra: granian
Requires-Dist: granian>=1.0; extra == 'granian'
Provides-Extra: jwt
Requires-Dist: python-jose[cryptography]>=3.3; extra == 'jwt'
Provides-Extra: redis
Requires-Dist: redis[asyncio]>=5.0; extra == 'redis'
Provides-Extra: saq
Requires-Dist: saq>=0.12; extra == 'saq'
Provides-Extra: sqlalchemy
Requires-Dist: alembic>=1.13; extra == 'sqlalchemy'
Requires-Dist: sqlalchemy[asyncio]>=2.0; extra == 'sqlalchemy'
Provides-Extra: taskiq
Requires-Dist: taskiq-redis>=0.5; extra == 'taskiq'
Requires-Dist: taskiq>=0.11; extra == 'taskiq'
Provides-Extra: uvicorn
Requires-Dist: uvicorn[standard]>=0.27; extra == 'uvicorn'
Description-Content-Type: text/markdown

<p align="center">
  <h1 align="center">🌌 Aura Framework</h1>
  <p align="center">
    <strong>O framework Python moderno que você sempre quis.</strong><br/>
    Async nativo · Type-safe · Schema-Driven · Módulos · Jobs integrados
  </p>
  <p align="center">
    <img src="https://img.shields.io/badge/python-3.10%2B-blue?style=flat-square&logo=python" />
    <img src="https://img.shields.io/badge/pydantic-v2-orange?style=flat-square" />
    <img src="https://img.shields.io/badge/async-first-green?style=flat-square" />
    <img src="https://img.shields.io/badge/license-MIT-lightgrey?style=flat-square" />
    <img src="https://img.shields.io/badge/status-alpha-red?style=flat-square" />
  </p>
</p>

---

> **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

```bash
pip install aura-framework[uvicorn]
```

```python
# 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")
```

```bash
uvicorn main:app --reload
# → /docs    (Swagger UI auto-gerado)
# → /redoc   (ReDoc auto-gerado)
```

---

## 📚 Documentação

| Documento | Descrição |
|---|---|
| [Motivação e Comparativo](docs/motivation.md) | Por que Aura existe, dores que resolve |
| [Schemas e Validação](docs/schemas-validation.md) | DTOs, Pydantic v2, validação de dados |
| [ORM e Queries](docs/orm-queries.md) | Repository pattern, CRUD, busca, filtros |
| [Jobs e Workers](docs/jobs-workers.md) | Tasks assíncronas, queues, periodic jobs |
| [Módulos e DI](docs/modules-di.md) | Sistema de módulos, injeção de dependência |
| [Roadmap](docs/roadmap.md) | O que está sendo construído |

---

## ⚡ CLI

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

## 📄 Licença

MIT © Aura Contributors
