{"id":27877399,"url":"https://github.com/eadwinCode/ellar","last_synced_at":"2025-05-05T03:02:02.204Z","repository":{"id":39636408,"uuid":"482791845","full_name":"python-ellar/ellar","owner":"python-ellar","description":"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","archived":false,"fork":false,"pushed_at":"2025-05-01T00:49:54.000Z","size":15813,"stargazers_count":55,"open_issues_count":3,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-04T03:35:07.815Z","etag":null,"topics":["aiohttp","api","asgi","nestjs","openapi","python","python3","swagger"],"latest_commit_sha":null,"homepage":"https://python-ellar.github.io/ellar/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/python-ellar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security/authentication/api-key-authentication.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-18T09:38:36.000Z","updated_at":"2025-04-07T18:54:53.000Z","dependencies_parsed_at":"2023-09-02T06:45:09.159Z","dependency_job_id":"ffd6ac8d-1592-4238-9378-e6f55e25d6d0","html_url":"https://github.com/python-ellar/ellar","commit_stats":null,"previous_names":["python-ellar/ellar","eadwincode/ellar"],"tags_count":55,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-ellar%2Fellar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-ellar%2Fellar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-ellar%2Fellar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-ellar%2Fellar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/python-ellar","download_url":"https://codeload.github.com/python-ellar/ellar/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252429932,"owners_count":21746571,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aiohttp","api","asgi","nestjs","openapi","python","python3","swagger"],"created_at":"2025-05-05T03:01:33.625Z","updated_at":"2025-05-05T03:02:02.057Z","avatar_url":"https://github.com/python-ellar.png","language":"Python","funding_links":[],"categories":["Frameworks"],"sub_categories":["WebSockets"],"readme":"# Ellar - Modern Python ASGI Framework\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://python-ellar.github.io/ellar/img/EllarLogoB.png\" width=\"200\" alt=\"Ellar Logo\" /\u003e\n\u003c/p\u003e\n\n![Test](https://github.com/python-ellar/ellar/actions/workflows/test_full.yml/badge.svg)\n![Coverage](https://img.shields.io/codecov/c/github/python-ellar/ellar)\n[![PyPI version](https://badge.fury.io/py/ellar.svg)](https://badge.fury.io/py/ellar)\n[![PyPI version](https://img.shields.io/pypi/v/ellar.svg)](https://pypi.python.org/pypi/ellar)\n[![PyPI version](https://img.shields.io/pypi/pyversions/ellar.svg)](https://pypi.python.org/pypi/ellar)\n\n## Overview\n\nEllar 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.\n\n## ✨ Key Features\n\n- 🚀 **High Performance**: Built on ASGI standards for maximum performance and scalability\n- 💉 **Dependency Injection**: Built-in DI system for clean and maintainable code architecture\n- 🔍 **Type Safety**: First-class support for Python type hints and Pydantic validation\n- 📚 **OpenAPI Integration**: Automatic Swagger/ReDoc documentation generation\n- 🏗️ **Modular Architecture**: Organize code into reusable modules inspired by NestJS\n- 🔐 **Built-in Security**: Comprehensive authentication and authorization system\n- 🎨 **Template Support**: Integrated Jinja2 templating for server-side rendering\n- 🔌 **WebSocket Support**: Real-time bidirectional communication capabilities\n- 🧪 **Testing Utilities**: Comprehensive testing tools for unit and integration tests\n\n## 🚀 Quick Start\n\n### Installation\n\n```bash\npip install ellar\n```\n\n### Basic Example\n\n```python\nfrom ellar.common import get, Controller, ControllerBase\nfrom ellar.app import AppFactory\nimport uvicorn\n\n@Controller()\nclass HomeController(ControllerBase):\n    @get('/')\n    async def index(self):\n        return {'message': 'Welcome to Ellar Framework!'}\n\napp = AppFactory.create_app(controllers=[HomeController])\n\nif __name__ == \"__main__\":\n    uvicorn.run(\"main:app\", port=5000, reload=True)\n```\n\n## 📚 Complete Example\n\n```python\nfrom ellar.common import Body, Controller, ControllerBase, delete, get, post, put, Serializer\nfrom ellar.di import injectable, request_scope\nfrom ellar.app import AppFactory\nfrom pydantic import Field\n\n# Define Data Model\nclass CreateCarSerializer(Serializer):\n    name: str\n    year: int = Field(..., gt=0)\n    model: str\n\n# Define Service\n@injectable(scope=request_scope)\nclass CarService:\n    def __init__(self):\n        self.detail = 'car service'\n\n# Define Controller\n@Controller\nclass CarController(ControllerBase):\n    def __init__(self, service: CarService):\n        self._service = service\n    \n    @post()\n    async def create(self, payload: Body[CreateCarSerializer]):\n        result = payload.dict()\n        result.update(message='Car created successfully')\n        return result\n\n    @get('/{car_id:str}')\n    async def get_one(self, car_id: str):\n        return f\"Retrieved car #{car_id}\"\n\napp = AppFactory.create_app(\n    controllers=[CarController],\n    providers=[CarService]\n)\n```\n\n## 🔧 Requirements\n\n- Python \u003e= 3.8\n- Starlette \u003e= 0.27.0\n- Pydantic \u003e= 2.0\n- Injector \u003e= 0.19.0\n\n## 📖 Documentation\n\n- Complete documentation: [https://python-ellar.github.io/ellar/](https://python-ellar.github.io/ellar/)\n- API Reference: [https://python-ellar.github.io/ellar/references/](https://python-ellar.github.io/ellar/references/)\n\n## 🤝 Contributing\n\nWe welcome contributions! Here's how you can help:\n\n- Create an issue for bugs or feature requests\n- Submit pull requests for improvements\n- Create third-party modules\n- Share your experience with Ellar\n- Build and showcase your applications\n\nSee [CONTRIBUTING.md](https://github.com/python-ellar/ellar/blob/main/docs/contribution.md) for detailed guidelines.\n\n## 📝 License\n\nEllar is [MIT Licensed](LICENSE).\n\n## 👤 Author\n\nEzeudoh Tochukwu [@eadwinCode](https://github.com/eadwinCode)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FeadwinCode%2Fellar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FeadwinCode%2Fellar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FeadwinCode%2Fellar/lists"}