GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com โ€” GitHub - python-ellar/ellar: Ellar is a lightweight ASGI framework for building efficient and scalable server-side python applications. It supports both OOP (Object-Oriented Programming) and FP (Functional Programming). Built with passion for programming

BranchesTags
Open more actions menu

Latest commit

 

History

1,418 Commits
1,418 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
docs
docs
 
 
ellar
ellar
 
 
samples
samples
 
 
tests
tests
 
 
.coveragerc
.coveragerc
 
 
.dockerignore
.dockerignore
 
 
.flake8
.flake8
 
 
.gitignore
.gitignore
 
 
.isort.cfg
.isort.cfg
 
 
.pre-commit-config.yaml
.pre-commit-config.yaml
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
mkdocs.yml
mkdocs.yml
 
 
pyproject.toml
pyproject.toml
 
 
pytest.ini
pytest.ini
 
 
requirements-docs.txt
requirements-docs.txt
 
 
requirements-tests.txt
requirements-tests.txt
 
 
requirements.txt
requirements.txt
 
 

Repository files navigation

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

  • Complete documentation: https://python-ellar.github.io/ellar/
  • API Reference: https://python-ellar.github.io/ellar/references/

๐Ÿค 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

About

Ellar is a lightweight ASGI framework for building efficient and scalable server-side python applications. It supports both OOP (Object-Oriented Programming) and FP (Functional Programming). Built with passion for programming

python-ellar.github.io/ellar/

Topics

aiohttpapiasginestjsopenapipythonpython3swagger

Resources

Readme
MIT license

Code of conduct

Code of conduct
Activity
Custom properties

Stars

69 stars

Watchers

3 watching

Forks

4 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 โ€” GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800ร—600. No cookies required.