test: trigger pipeline

This commit is contained in:
buenosairesam
2026-01-02 19:05:57 -03:00
parent 9e5cbbad1f
commit 56f720ca92
41 changed files with 78 additions and 3252 deletions

282
CLAUDE.md
View File

@@ -4,7 +4,7 @@
Soleprint is a **development workflow platform** - a self-contained environment where you can run, test, and document everything in isolation. Born from the friction of working on small teams where testing required PRs, documentation was scattered, and quick API connectors took too long to set up.
**Core idea:** BDD Gherkin Backend/Frontend Tests, with reusable connectors and tools that work across projects.
**Core idea:** BDD -> Gherkin -> Backend/Frontend Tests, with reusable connectors and tools that work across projects.
**Name:** Soleprint - "Cada paso deja huella" / "Each step leaves a mark"
@@ -15,91 +15,53 @@ spr/
├── CLAUDE.md # You are here
├── README.md # User-facing docs
├── schema.json # Source of truth for models
├── build.py # Build tool (dev/deploy)
├── build.py # Build tool
├── cfg/ # Room configurations
│ ├── soleprint.config.json # Framework model definitions
│ ├── standalone/ # Base soleprint config
│ │ ├── config.json # Framework branding/terminology
│ │ └── data/ # Data files (veins.json, shunts.json, etc.)
│ └── amar/ # AMAR room config
│ ├── .env
│ ├── config.json # Can rebrand (e.g., "pawprint")
│ ├── data/ # Room-specific data files
│ ├── .env.example
│ ├── docker-compose.yml
│ ├── Dockerfile.backend
│ ├── Dockerfile.frontend
│ ├── ctrl/ # Room-specific scripts
│ ├── databrowse/depot/ # AMAR schema for databrowse
── tester/tests/ # AMAR-specific tests
│ ├── monitors/turnos/ # AMAR-specific monitors
│ ├── models/ # AMAR models (pydantic, django, prisma)
│ └── link/ # Databrowse adapter
│ ├── soleprint/ # Soleprint Docker config for this room
│ ├── databrowse/depot/
│ ├── tester/tests/
│ ├── monitors/
── models/
├── ctrl/ # Soleprint standalone ctrl (Docker)
│ ├── build.sh # python build.py dev --cfg <room>
│ ├── start.sh # docker compose up
│ ├── stop.sh
│ └── logs.sh
├── ctrl/ # Build/run scripts
│ ├── build.sh # ./build.sh [room]
│ ├── start.sh # ./start.sh [room] [-d]
│ ├── stop.sh # ./stop.sh [room]
│ └── logs.sh # ./logs.sh [room]
├── artery/ # Vital connections
│ ├── veins/ # Stateless API connectors
│ │ ├── jira/
│ │ ├── slack/
│ │ ├── google/
│ │ ├── base.py
│ │ ├── oauth.py
│ │ └── PATTERNS.md
│ ├── veins/ # Stateless API connectors (jira, slack, google)
│ ├── shunts/ # Fake connectors for testing
│ │ └── example/
│ ├── pulses/ # Composed: Vein + Room + Depot
── plexuses/ # Full apps: backend + frontend + DB
│ └── room/ # Base room templates
── plexus/ # Full apps: backend + frontend + DB
├── atlas/ # Documentation system
── book/ # Gherkin samples, feature docs, arch diagrams
│ ├── static/ # Prism syntax highlighting
│ ├── main.py
│ └── index.html
── books/ # Soleprint docs (external via depots)
├── station/ # Tools & execution
│ ├── tools/
│ ├── modelgen/ # Model generation
│ │ ├── datagen/ # Test data generation
│ │ ├── tester/ # BDD/playwright test runner
│ │ ├── graphgen/ # Graph generation
│ │ └── ...
│ └── monitors/
│ └── databrowse/ # SQL data browser (generic)
├── data/ # JSON content files
│ ├── rooms.json
│ ├── depots.json
│ ├── veins.json
│ └── ...
│ ├── tools/ # modelgen, datagen, tester, sbwrapper
└── monitors/ # databrowse
├── soleprint/ # Core entry points (versioned)
│ ├── main.py # Multi-port entry
│ ├── run.py # Single-port dev server
│ ├── main.py
│ ├── run.py
│ ├── index.html
│ ├── requirements.txt
│ ├── Dockerfile
│ └── dataloader/
── gen/ # Built instance (gitignored)
├── ... (copies from soleprint/, artery/, atlas/, station/)
── models/ # Generated by modelgen
│ └── docker-compose.yml # For standalone Docker
└── mainroom/ # Orchestration: soleprint + managed room
├── amar -> ../cfg/amar # Symlink to room config
├── soleprint/ # Soleprint Docker config
│ ├── docker-compose.yml
│ └── docker-compose.nginx.yml
├── sbwrapper/ # Sidebar wrapper UI
│ ├── config.json
│ ├── sidebar.js
│ └── sidebar.css
└── ctrl/ # Orchestration scripts
├── start.sh # Start amar + soleprint
├── stop.sh
├── deploy.sh # Deploy to AWS
└── server/ # AWS setup scripts
── gen/ # Built instances (gitignored)
├── standalone/ # python build.py dev
── amar/ # python build.py dev --cfg amar
```
## The Four Systems
@@ -117,82 +79,71 @@ spr/
Vein ──────► Pulse ──────► Plexus
│ │ │
│ │ └── Full app: backend + frontend + DB
│ │ (e.g., WhatsApp with chat UI)
│ │
│ └── Composed: Vein + Room + Depot
│ (e.g., Jira vein for specific project)
└── Stateless API connector
(e.g., Jira, Slack, Google)
Shunt ─── Fake connector for testing
(e.g., mercadopago mock with UI to set responses)
```
| Type | State | Frontend | Deploy |
|------|-------|----------|--------|
| Vein | None (or OAuth) | Optional test UI | With soleprint |
| Shunt | Configurable responses | Config UI | With soleprint |
| Pulse | Vein + config | Uses vein's | With soleprint |
| Plexus | Full app state | Required | Self-contained |
| Shunt | Configurable responses | Config UI | With soleprint |
## Key Concepts
## Room Configuration
### Rooms
A **Room** is an environment config with:
- `ctrl/` folder with commands for that room
- `.env` with paths and settings
- Room-specific configs (databrowse depot, tester tests, monitors, models)
Each room in `cfg/` has:
- `config.json` - Framework branding/terminology (can rebrand soleprint)
- `data/` - Data files (veins.json, shunts.json, depots.json, etc.)
- Room-specific: databrowse depot, tester tests, monitors, models
### Mainroom
Orchestrates soleprint + managed room together:
- `mainroom/amar` → symlink to `cfg/amar`
- `mainroom/soleprint/` → soleprint Docker config
- `mainroom/sbwrapper/` → sidebar overlay for quick login, Jira info
- `mainroom/ctrl/` → start/stop/deploy scripts
Managed rooms (like amar) also have:
- `docker-compose.yml` - Room's own services
- `soleprint/` - Soleprint Docker config for this room
- `.env.example` - Environment template
### Build & Gen
- `soleprint/` = Versioned source
- `gen/` = Built instance (gitignored, Docker-ready)
- `python build.py dev --cfg amar` copies everything + room config
## Build & Run
## Development Workflow
### Soleprint Standalone (no managed room)
### Commands
```bash
# Build
cd spr/
python build.py dev
python build.py dev # -> gen/standalone/
python build.py dev --cfg amar # -> gen/amar/
python build.py dev --all # -> both
# Run with Docker
./ctrl/start.sh
# Using ctrl scripts
./ctrl/build.sh # Build standalone
./ctrl/build.sh amar # Build amar
./ctrl/build.sh --all # Build all
# Or bare-metal
cd gen && .venv/bin/python run.py
./ctrl/start.sh # Start standalone
./ctrl/start.sh amar # Start amar
./ctrl/start.sh amar -d # Detached
./ctrl/stop.sh amar # Stop
./ctrl/logs.sh amar # View logs
# Bare-metal dev
cd gen/standalone && .venv/bin/python run.py
```
### Soleprint + Amar (with managed room)
### Adding a New Managed Room
```bash
# Build soleprint with amar config
cd spr/
python build.py dev --cfg amar
# 1. Create room config
mkdir -p cfg/clientx/data
# Create shared network
docker network create soleprint_network
# 2. Copy base config
cp cfg/standalone/config.json cfg/clientx/
cp -r cfg/standalone/data/* cfg/clientx/data/
# Start everything
cd mainroom/ctrl
./start.sh -d # Detached
./start.sh # Foreground (logs)
./stop.sh # Stop all
```
# 3. Customize as needed (shunts, depots, branding)
### Deploy to AWS
```bash
cd mainroom/ctrl
./deploy.sh --dry-run # Preview
./deploy.sh # Deploy
# 4. Build and run
python build.py dev --cfg clientx
./ctrl/start.sh clientx
```
## Ports
@@ -200,110 +151,34 @@ cd mainroom/ctrl
| Service | Port |
|---------|------|
| Soleprint | 12000 |
| Artery | 12001 |
| Atlas | 12002 |
| Station | 12003 |
| Amar Backend | 8000 |
| Amar Frontend | 3000 |
## Tools
| Tool | Location | Status |
|------|----------|--------|
| modelgen | station/tools/modelgen | Working |
| datagen | station/tools/datagen | Working |
| tester | station/tools/tester | Advanced |
| graphgen | station/tools/graphgen | WIP |
## Monitors
| Monitor | Location | Notes |
|---------|----------|-------|
| databrowse | station/monitors/databrowse | Generic SQL browser |
| turnos | cfg/amar/monitors/turnos | AMAR-specific |
## Veins
| Vein | Location | Auth |
|------|----------|------|
| jira | artery/veins/jira | Token |
| slack | artery/veins/slack | Token |
| google | artery/veins/google | OAuth2 |
## Quick Reference
```bash
# === Build ===
python build.py dev # Soleprint only
python build.py dev --cfg amar # With amar config
python build.py deploy --output /path/ # Production build
# === Standalone (soleprint only) ===
./ctrl/build.sh amar # Build with amar
./ctrl/start.sh # Docker start
./ctrl/stop.sh # Docker stop
# === With Managed Room (mainroom) ===
cd mainroom/ctrl
./start.sh -d # Start detached
./start.sh amar # Start only amar
./start.sh soleprint # Start only soleprint
./stop.sh # Stop all
./deploy.sh # Deploy to AWS
# === Bare-metal Dev ===
cd gen
.venv/bin/python run.py # Single-port dev server
# === Health Checks ===
curl localhost:12000/health # Soleprint
curl localhost:8000/health # Amar backend
```
| Tool | Location | Purpose |
|------|----------|---------|
| modelgen | station/tools/modelgen | Model generation |
| datagen | station/tools/datagen | Test data generation |
| tester | station/tools/tester | BDD/playwright test runner |
| sbwrapper | station/tools/sbwrapper | Sidebar wrapper UI |
| databrowse | station/monitors/databrowse | SQL data browser |
## Integration with ppl/ (Infrastructure)
The `ppl/` repo manages infrastructure alongside spr:
```
wdir/
├── spr/ # This repo (soleprint)
├── ppl/ # Pipelines & infrastructure
│ ├── ctrl/
│ ├── deploy-gen.sh # Build spr + deploy via mainroom
│ └── dns.sh # Route53 DNS management
│ ├── ci/ # Woodpecker CI configs
│ ├── gateway/ # Nginx/Caddy configs
│ └── pipelines/ # CI/CD pipelines
│ ├── pipelines/spr-standalone/ # CI/CD for standalone
│ ├── pipelines/spr-managed/ # Manual deploy for rooms
│ └── gateway/ # Nginx configs
└── ama/ # Amar source code
├── amar_django_back/
└── amar_frontend/
```
### Deploy from ppl/
```bash
cd ppl/ctrl
./deploy-gen.sh # Build spr + deploy to AWS
./deploy-gen.sh --dry-run # Preview
./dns.sh add soleprint # Add soleprint.mcrn.ar DNS
```
### Server Structure (mcrn.ar)
```
~/mainroom/ # Deployed mainroom
├── amar/ # Amar Docker services
├── soleprint/ # Soleprint Docker services
└── ctrl/ # Server-side scripts
# Services run on:
soleprint.mcrn.ar:12000 # Soleprint
amar.mcrn.ar # Amar (nginx proxied)
```
### Adding New Services
1. Add DNS: `ppl/ctrl/dns.sh add <service>`
2. Add nginx config in `ppl/gateway/`
3. Add docker-compose in `mainroom/<service>/`
4. Update `mainroom/ctrl/start.sh` if needed
### Pipeline (standalone only)
- git push -> woodpecker -> build gen/standalone/ -> docker push -> deploy
- Managed rooms deploy manually (no pipeline for client code)
## External Paths
@@ -311,7 +186,6 @@ amar.mcrn.ar # Amar (nginx proxied)
|------|------|
| Amar Backend | /home/mariano/wdir/ama/amar_django_back |
| Amar Frontend | /home/mariano/wdir/ama/amar_frontend |
| Venv | /home/mariano/wdir/venv/spr |
| Pipelines | /home/mariano/wdir/ppl |
## Files Ignored