# Orcha 🧠
**Orcha** is a lightweight orchestrator for managing pure-functional service state and interactions in Elixir. It promotes decoupled, composable systems by encapsulating state transitions and inter-service communication in a central context called the `realm`.
Designed for functional purity, testability, and introspection, Orcha is perfect for orchestrating stateless services with explicit state management and chaining.
> ⚠️ **Note:** This is a **proof-of-concept** and **experimental project**. While the architecture is robust for functional state management, Orcha is not production-hardened yet. Use it to explore clean system design, service orchestration, and functional state modeling.
---
## ✨ Concept
- Centralized state management
- Functional purity: no mutation or side effects
- Deterministic service interactions
- Easy mocking and testing
- Clear flow of state, time, and messages
---
## 📂 Playground
To try Orcha interactively and see a complete working example, launch IEx with: `iex -S mix`.
The project includes a .iex.exs file that sets up the environment, services, and interactions described above.
- 💡 Tip: Use the .iex.exs playground to test custom services, tweak logic, and explore how pure-functional systems behave with state orchestration.
---
## 🔧 Installation
Add `:orcha` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:orcha, "~> 0.1.0"}
]
end