This release is a pre-release and may not be stable for production use.
Tiferet – Domain-Driven Design, beautifully balanced
Tiferet is a Python framework that brings Domain-Driven Design into focus with elegance and clarity.
Inspired by the Kabbalistic principle of harmony and beauty in balance, Tiferet helps you turn complex business logic into maintainable, configuration-driven applications — where purpose, structure, and execution feel naturally aligned.
At a glance
- Blueprints-first app entry point via
build_app(exported asApp) - Domain events as the core unit of behavior
- YAML for features, workflows, dependency injection, errors, CLI commands
- Clean layering: domain objects • aggregates • transfer objects • services
- Structured, multilingual errors built-in
- Easy to extend to CLI, web, scripts, TUI, … Current status: 2.0.0 (stable release)
Quick Start – Add two numbers in ~3 minutes
# 1. Set up environment
python3 -m venv tiferet-demo && source tiferet-demo/bin/activate
pip install tiferet
Create these files in your project folder:
demo.py
from tiferet import App
app = App(
'basic_calc',
app_config='config.yml',
) # App is the build_app alias
result = app.run(
feature_id='calc.add',
data={'a': 19, 'b': 23},
)
print(f"19 + 23 = {result}") # → 42
config.yml
interfaces:
basic_calc:
name: Basic Calculator
description: Basic calculator interface
services:
add_number_event:
module_path: app.events.calc
class_name: AddNumber
features:
calc:
add:
name: Add Numbers
commands:
- service_id: add_number_event
app/events/calc.py
(the domain event itself – very minimal)
from tiferet.events import DomainEvent
class AddNumber(DomainEvent):
def execute(self, a: int, b: int, **kwargs) -> int:
return a + b
Run:
python demo.py
You should see:
19 + 23 = 42
→ Want a full calculator (add, subtract, multiply, divide, sqrt, …) with CLI, validation and proper error handling?
→ See the working example → or follow the step-by-step Tutorial →
Why Tiferet?
- Configuration as code — features, DI, errors, CLI all live in YAML
- Domain logic stays pure — focused events & aggregates
- Infrastructure is injectable — file/db/utils behind clean service contracts
- Built for evolution — today CLI, tomorrow FastAPI or TUI
- Strong testability — events are easy to invoke in isolation
Documentation & Guides
Core architecture
- Code Style & Artifact Comments
- Blueprints (build_app)
- Domain Objects
- Domain Events
- Aggregates & Transfer Objects (Mappers)
- Service Interfaces
- Dependency Injection (ServiceResolver)
- Repositories
- Utilities (File/Yaml/Json/Csv/Sqlite)
Practical Guides
Domain Guides
- Application Management
- Dependency Injection
- Feature Workflows
- Error Handling
- CLI Integration
- Logging
Event Guides
- Application Events
- Dependency Injection Events
- Feature Events
- Error Events
- CLI Integration Events
- Logging Events
- SQLite Events
Utility Guides
Other Component Guides
Tutorial
→ Build a complete Calculator (events + CLI + configs)
Contributing
We welcome bug reports, documentation improvements, feature ideas, and early adopters.
See CONTRIBUTING.md for the workflow (issues → TRD → feature branch → PR).
Questions, feedback, or just want to say hi?
Open an issue or reach out via email: andrew@greatstrength.me
Let's build software that feels as good as it works.
Metadata
Release files for tiferet 2.2.0b3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tiferet-2.2.0b3.tar.gz | 216.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tiferet-2.2.0b3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 484.2 kB
Release files / tiferet-2.2.0b3.tar.gz
| Download URL | tiferet-2.2.0b3.tar.gz |
|---|---|
| Size | 216.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d31dc2a706feabcc6e136c0a6d35bd70605f98cc90c93abb770bd11bc9f9b62b
|
|
BLAKE2b-256 checksum How to use checksums |
8417ad83de3d2e331ba5995818bc72172fbc3ce9ca588bf2047e337e27f45ac8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / tiferet-2.2.0b3-py3-none-any.whl
| Download URL | tiferet-2.2.0b3-py3-none-any.whl |
|---|---|
| Size | 267.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
035ab1c93d6070c2b5c7e676024893afb56ca662ebc5ab390d95086098f92549
|
|
BLAKE2b-256 checksum How to use checksums |
c122786e76796b65c9b70b7514307626107af81adcc27b29e5c47cbdc7e59f86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency log