Skip to main content

Ellar - Python ASGI web framework for building fast, efficient, and scalable RESTful APIs and server-side applications.

Project description

Ellar - Modern Python ASGI Framework

Ellar Logo

Test Coverage PyPI version PyPI version PyPI version

Overview

Ellar is a modern, fast, and lightweight ASGI framework for building scalable web applications and APIs with Python. Built on top of Starlette and inspired by the best practices of frameworks like NestJS, Ellar combines the power of async Python with elegant architecture patterns.

✨ Key Features

  • 🚀 High Performance: Built on ASGI standards for maximum performance and scalability
  • 💉 Dependency Injection: Built-in DI system for clean and maintainable code architecture
  • 🔍 Type Safety: First-class support for Python type hints and Pydantic validation
  • 📚 OpenAPI Integration: Automatic Swagger/ReDoc documentation generation
  • 🏗️ Modular Architecture: Organize code into reusable modules inspired by NestJS
  • 🔐 Built-in Security: Comprehensive authentication and authorization system
  • 🎨 Template Support: Integrated Jinja2 templating for server-side rendering
  • 🔌 WebSocket Support: Real-time bidirectional communication capabilities
  • 🧪 Testing Utilities: Comprehensive testing tools for unit and integration tests

🚀 Quick Start

Installation

pip install ellar

Basic Example

from ellar.common import get, Controller, ControllerBase
from ellar.app import AppFactory
import uvicorn

@Controller()
class HomeController(ControllerBase):
    @get('/')
    async def index(self):
        return {'message': 'Welcome to Ellar Framework!'}

app = AppFactory.create_app(controllers=[HomeController])

if __name__ == "__main__":
    uvicorn.run("main:app", port=5000, reload=True)

📚 Complete Example

from ellar.common import Body, Controller, ControllerBase, delete, get, post, put, Serializer
from ellar.di import injectable, request_scope
from ellar.app import AppFactory
from pydantic import Field

# Define Data Model
class CreateCarSerializer(Serializer):
    name: str
    year: int = Field(..., gt=0)
    model: str

# Define Service
@injectable(scope=request_scope)
class CarService:
    def __init__(self):
        self.detail = 'car service'

# Define Controller
@Controller
class CarController(ControllerBase):
    def __init__(self, service: CarService):
        self._service = service
    
    @post()
    async def create(self, payload: Body[CreateCarSerializer]):
        result = payload.dict()
        result.update(message='Car created successfully')
        return result

    @get('/{car_id:str}')
    async def get_one(self, car_id: str):
        return f"Retrieved car #{car_id}"

app = AppFactory.create_app(
    controllers=[CarController],
    providers=[CarService]
)

🔧 Requirements

  • Python >= 3.8
  • Starlette >= 0.27.0
  • Pydantic >= 2.0
  • Injector >= 0.19.0

📖 Documentation

🤝 Contributing

We welcome contributions! Here's how you can help:

  • Create an issue for bugs or feature requests
  • Submit pull requests for improvements
  • Create third-party modules
  • Share your experience with Ellar
  • Build and showcase your applications

See CONTRIBUTING.md for detailed guidelines.

📝 License

Ellar is MIT Licensed.

👤 Author

Ezeudoh Tochukwu @eadwinCode

Download files

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

Source Distribution

ellar-0.9.5.tar.gz (282.2 kB view details)

Uploaded Source

Built Distribution

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

ellar-0.9.5-py3-none-any.whl (392.1 kB view details)

Uploaded Python 3

File details

Details for the file ellar-0.9.5.tar.gz.

File metadata

  • Download URL: ellar-0.9.5.tar.gz
  • Upload date:
  • Size: 282.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ellar-0.9.5.tar.gz
Algorithm Hash digest
SHA256 102b16fa26754d209814e2a2b4f487de43e24cd7fb993bff92c0f52fd6006569
MD5 ba72f5cc9c3800334e0e5e56ce3b34aa
BLAKE2b-256 5fd6f4145f25f924d2c2a040fdc02a3af3d7a21f373aa97bb175b770d051bc0f

See more details on using hashes here.

File details

Details for the file ellar-0.9.5-py3-none-any.whl.

File metadata

  • Download URL: ellar-0.9.5-py3-none-any.whl
  • Upload date:
  • Size: 392.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ellar-0.9.5-py3-none-any.whl
Algorithm Hash digest
SHA256 a52c21eee70d711c5a6175b78035750085f5107d000eaece9a864f0ed058d017
MD5 60017bc36a47f280bed4049d7f698700
BLAKE2b-256 b332d6e1084b29624e6365cfc6bc9f5736b19fc91d8bd1368a8a64369a60c786

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