Metadata-Version: 2.4
Name: moonchild
Version: 0.2.0
Summary: Declarative workflow automation framework with a built-in UI
Project-URL: Homepage, https://github.com/umutalacam/moonchild
Project-URL: Issues, https://github.com/umutalacam/moonchild/issues
Author-email: Umut Alacam <umutcanalacam@gmail.com>
License: MIT
Keywords: automation,orchestration,ui,workflow
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.11
Requires-Dist: croniter>=2.0
Requires-Dist: fastapi>=0.111
Requires-Dist: httpx>=0.27
Requires-Dist: tinydb>=4.8
Requires-Dist: uvicorn[standard]>=0.29
Provides-Extra: dev
Requires-Dist: build; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: twine; extra == 'dev'
Description-Content-Type: text/markdown

# Moonchild

Declarative workflow automation framework with a built-in UI.

## Install

```bash
pip install moonchild
```

## Usage

```python
from moonchild import Moonchild, workflow, Action, Result, ManualTrigger

class FetchData(Action):
    def execute(self, ctx):
        ctx["data"] = "hello"
        return Result.next()

workflow("my-pipeline") \
    .when(ManualTrigger()) \
    .step(FetchData(), name="fetch") \
    .finish()

Moonchild.start()   # starts the server at http://localhost:8000
```

## Features

- Declarative workflow builder: `.when().step().and_().or_().if_().finish()`
- Parallel branches: `.and_()` (all must complete) / `.or_()` (first wins)
- Conditional branching: `.if_(condition).then_(a).else_(b).end_if()`
- Human-in-the-loop wait actions with a built-in UI
- Cron triggers
- Real-time UI over WebSocket
- TinyDB persistence (zero setup)
