# arquitectura::capas

como se conecta el paquete conspectus con el resto de terra universalis.

```
┌────────────────────────────────────────────────────────────────┐
│  capa a - hub react (::::conspectus::universalis::::)          │
│  ui del catalogo · genera este paquete via /export             │
└──────────────────────────┬─────────────────────────────────────┘
                           │
┌──────────────────────────▼─────────────────────────────────────┐
│  capa b - paquete distribuido (este .zip)                      │
│  datos + streamlit + docker + api python                       │
└──────────────────────────┬─────────────────────────────────────┘
                           │
┌──────────────────────────▼─────────────────────────────────────┐
│  capa c - consumidores                                         │
│  streamlit :8501 · python scripts · sqlite · docs · ci         │
└────────────────────────────────────────────────────────────────┘
```

## flujos

### desplegar streamlit local
1. descomprimir zip
2. `pip install -r requirements.txt`
3. `streamlit run streamlit_app.py`
4. abrir http://localhost:8501

### desplegar streamlit cloud / render / fly
1. subir carpeta descomprimida a repo git
2. apuntar el servicio a `streamlit_app.py`
3. deps: `requirements.txt`

### usar como fuente en otro sistema
1. `from conspectus_loader import load`
2. `sistemas = load()`
3. filtrar/procesar en tu pipeline

### backup en sqlite
1. `make sqlite` (o `python -c "from conspectus_loader import build_sqlite; build_sqlite()"`)
2. queries en `sqlite3 conspectus.db`

## reglas

- **facta::non::ficta**: nunca inventes datos. si falta, deja `null` o `pendiente`.
- la piel bastion es fuente de verdad. **no** mezclar con otros design systems.
- todo lowercase. namespacing `::` en identificadores institucionales.
- mono (ibm plex mono) solo para hechos-maquina (ids, versiones, timestamps).
