# Soleprint

> Cada paso deja huella / Each step leaves a mark

Development workflow and documentation platform. Run, test, and document everything in one place.

## Quick Start

```bash
# Build dev environment
python build.py dev

# Run
cd gen
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python run.py        # Single-port bare-metal dev
# Visit http://localhost:12000
```

## Systems

| | System | What it does |
|---|--------|--------------|
| 👣 | **Soleprint** | Core coordinator, routing, landing page |
| 💉 | **Artery** | Connectors to external services (Jira, Slack, APIs) |
| 🗺️ | **Atlas** | Actionable documentation (BDD, Gherkin, specs) |
| 🎛️ | **Station** | Tools, environments, test runners |

## Structure

```
spr/
├── schema.json        # Model definitions (source of truth)
├── cfg/               # Framework configuration
│   ├── soleprint.config.json
│   └── amar/          # Room-specific configs
│
├── soleprint/         # Core coordinator (versioned)
│   ├── main.py        # Multi-port entry point
│   ├── run.py         # Single-port bare-metal dev
│   └── dataloader/
│
├── artery/            # Connectors (versioned)
├── atlas/             # Documentation (versioned)
├── station/           # Tools (versioned)
│   └── tools/
│       ├── modelgen/  # Generates models from config
│       ├── datagen/   # Test data generation
│       └── tester/    # BDD/contract test runner
│
├── data/              # JSON content
├── gen/               # Runnable instance (symlinks + generated)
│
└── mainroom/          # Orchestration: soleprint ↔ managed room
    ├── ctrl/          # Orchestration commands
    ├── sbwrapper/     # Sidebar wrapper UI
    └── soleprint/     # Docker configs
```

## Components

**Shared:**
- **Room** - Environment configuration
- **Depot** - Data storage

**System-specific:**
- **Vein** (Artery) - Single connector
- **Template** (Atlas) - Doc pattern
- **Tool** (Station) - Utility

**Composed:**
- **Pulse** = Vein + Room + Depot
- **Book** = Template + Depot
- **Desk** = Cabinet + Room + Depots

## Development

### Build and run
```bash
python build.py dev                    # Soleprint only
python build.py dev --cfg amar         # With amar room config

cd gen
.venv/bin/python run.py                # Bare-metal single-port
.venv/bin/python main.py               # Multi-port (production-like)
```

### Run with Docker (via mainroom)
```bash
cd mainroom/soleprint
docker compose up -d
```

## Ports

| Service | Port |
|---------|------|
| Soleprint | 12000 |
| Artery | 12001 |
| Atlas | 12002 |
| Station | 12003 |

## Architecture

```
soleprint/     →  Versioned core files (main.py, run.py, dataloader)
gen/           →  Runnable instance (symlinks to soleprint/ + systems)
gen/models/    →  Generated once per client (like install)
cfg/           →  Configuration (copied to gen/cfg/)

mainroom/      →  Orchestration layer
├── sbwrapper  →  UI overlay for managed apps
└── soleprint  →  Docker for soleprint services
```

## Background

Born from the friction of:
- Testing requiring PRs on small teams
- Documentation scattered across tools
- Quick API connectors taking too long to set up
- No self-contained environment to experiment freely

Soleprint lets you run everything in isolation while building reusable pieces.

## License

TBD

---

*Built for small teams who need to move fast without breaking things.*
