Metadata-Version: 2.3
Name: nyxa
Version: 0.1.1b0
Summary: Standalone, convention-first backend framework for Python — AI-first
Keywords: framework,asgi,api,backend,ai,mcp
Author: Al-Amin Islam Nerob
Author-email: Al-Amin Islam Nerob <alamin@aincoder.com>
License: MIT
Requires-Dist: pydantic>=2.9
Requires-Dist: orjson>=3.10
Requires-Dist: nyxa[cli,starlette,blacksheep,granian,uvicorn,msgspec] ; extra == 'all'
Requires-Dist: blacksheep>=2.0 ; extra == 'blacksheep'
Requires-Dist: rich>=13 ; extra == 'cli'
Requires-Dist: cryptography>=43 ; extra == 'encrypt'
Requires-Dist: granian[reload]>=2.0 ; extra == 'granian'
Requires-Dist: argon2-cffi>=23 ; extra == 'hash-argon2'
Requires-Dist: bcrypt>=4 ; extra == 'hash-bcrypt'
Requires-Dist: msgspec>=0.19 ; extra == 'msgspec'
Requires-Dist: nyxa-server>=0.1 ; extra == 'server'
Requires-Dist: nyxa-speedups>=0.1 ; extra == 'speed'
Requires-Dist: starlette>=0.40 ; extra == 'starlette'
Requires-Dist: uvicorn>=0.30 ; extra == 'uvicorn'
Requires-Python: >=3.13
Provides-Extra: all
Provides-Extra: blacksheep
Provides-Extra: cli
Provides-Extra: encrypt
Provides-Extra: granian
Provides-Extra: hash-argon2
Provides-Extra: hash-bcrypt
Provides-Extra: msgspec
Provides-Extra: server
Provides-Extra: speed
Provides-Extra: starlette
Provides-Extra: uvicorn
Description-Content-Type: text/markdown

# Nyxa

A standalone, convention-first backend framework for Python — AI-first.

Explicit route files, `HttpContext` handlers, service providers with a
`register → boot → ready → shutdown` lifecycle, an IoC container with
constructor injection, and a first-class plugin system — served by Granian
through Nyxa's own RSGI bridge (ASGI when selected) via pluggable deployment
adapters.

```python
# start/routes.py
def register(router):
    router.get("/health", lambda ctx: {"status": "ok"})
    router.resource("/cats", CatsController)
```

```python
# app/controllers/cats_controller.py
class CatsController:
    def __init__(self, cats: CatsService):  # constructor injection
        self.cats = cats

    async def index(self, ctx):
        return await self.cats.find_all()
```

```bash
nyxa new myapp && cd myapp
nyxa serve          # Granian, --reload in dev
nyxa build          # AOT codegen: routes/container/manifest artifacts
```

Early development — see `context.md` for architecture and roadmap.
