A Lean, Declarative Excel Automation Engine for Modern Business
Transform fragmented Excel workflows into structured, versionable, and scalable assets. DataWeaver replaces fragile VBA macros with a high-density, parametric Rule Engine built on FastAPI and Pandas.
English | Español
Standard automation projects often suffer from "Complexity Bloat". DataWeaver is built on Density Principles:
- Super-Skills: Instead of 50 different tools, we use parametric rules (e.g.,
aggregatehandles sum, mean, count). - Super-Params: Global parameters like
target_sheetallow any transformation to materialize results directly. - Lean Architecture: Consolidated API and Logic layers for maximum developer velocity and minimal maintenance overhead.
graph TD
UI[React/Dashboard] -->|REST API| API[Consolidated API Layer]
API --> DB[(PostgreSQL)]
API -->|Dispatch| Worker[The Weaver: Generalist Orchestrator]
Worker -->|Execute| Logic[Parametric Rule Engine]
Logic -->|IO| Files[Excel Materializer]
| Layer | Path | Responsibility |
|---|---|---|
| Core | app/core/ |
Auth, DB, Models & Schemas (The Backbone) |
| Logic | app/engine/logic.py |
Consolidated Rules & Super-Skills |
| Orchestrator | app/engine/engine.py |
Context Management & Step Execution |
| Gateway | app/api/ |
Modular REST Endpoints & Routers |
git clone https://github.com/Medalcode/DataWeaver.git
cd DataWeaver
docker-compose up -d# 1. Install & Setup
pip install -r requirements.txt
cp .env.example .env
# 2. Start Infrastructure
docker-compose up -d postgres redis
# 3. Start Engines
uvicorn app.main:app --reload
celery -A app.tasks.celery_app worker --loglevel=info
celery -A app.tasks.celery_app beat --loglevel=infoDataWeaver uses Declarative Steps. Every step can materialize its result by simply adding the target_sheet parameter.
Filters the current working dataset.
- Params:
column,operator,value - Materialization:
target_sheet(Optional)
Powerful data summarization.
- Params:
group_by,field,op(sum,mean,count,max,min) - Required:
target_sheet
Simple materialization wrapper for the current dataset.
We believe in bulletproof automation.
# Set path and run suite
$env:PYTHONPATH = "backend"
pytest -vWe prioritize Density over Fragmentation. Before adding a new file, ask: "Can this be a parameter in an existing skill?"
- Fork the repo.
- Build your feature in
logic.py. - Document it in
skills.md. - Submit your PR.
Built with ❤️ for those who want to automate without the legacy baggage.