# waku

<p align="left">
    <sup><i>waku</i> [<b>枠</b>] <i>means framework in Japanese.</i></sup>
    <br/>
</p>

<div align="center">

[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
[![Python version](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff/)
[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)

[![PyPI](https://img.shields.io/pypi/v/waku.svg)](https://pypi.python.org/pypi/waku)
[![Downloads](https://static.pepy.tech/badge/waku/month)](https://pepy.tech/projects/waku)

</div>

`waku` *is a microframework for building modular and loosely coupled applications.*

## Features
- Building blocks for creating modular monoliths and loosely coupled applications
- Built-in extensible plugin system
- Ability to manage application and module lifecycle via **lifespans** and **extensions**
- Framework-agnostic DI implementation with ability to use almost any custom DI framework
- Dependency graph validation
- Built-in extension for implementing CQRS
- ...and many more (in future)

## Installation
Install using your preferred package manager.
```sh
# pip
pip install waku
# UV
uv add waku
```

## Example
TODO

## [Contributing guide](./CONTRIBUTING.md)
