315 lines
13 KiB
HTML
315 lines
13 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Artery - Soleprint</title>
|
|
<link rel="stylesheet" href="../architecture/styles.css" />
|
|
<style>
|
|
.composition {
|
|
background: #1a1a1a;
|
|
border: 2px solid #b91c1c;
|
|
padding: 1rem;
|
|
border-radius: 12px;
|
|
margin-bottom: 1rem;
|
|
}
|
|
.composition h3 {
|
|
margin: 0 0 0.75rem 0;
|
|
font-size: 1.1rem;
|
|
color: #fca5a5;
|
|
}
|
|
.composition > p {
|
|
margin: 0 0 1rem 0;
|
|
font-size: 0.9rem;
|
|
color: #a3a3a3;
|
|
}
|
|
.components {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
|
|
gap: 0.75rem;
|
|
}
|
|
.component {
|
|
background: #0a0a0a;
|
|
border: 1px solid #3f3f3f;
|
|
padding: 0.75rem;
|
|
border-radius: 8px;
|
|
}
|
|
.component h4 {
|
|
margin: 0 0 0.25rem 0;
|
|
font-size: 0.95rem;
|
|
color: #fca5a5;
|
|
}
|
|
.component p {
|
|
margin: 0;
|
|
font-size: 0.85rem;
|
|
color: #a3a3a3;
|
|
}
|
|
.model-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
gap: 1rem;
|
|
}
|
|
</style>
|
|
<script src="../lang-toggle.js"></script>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<div id="lang-toggle"></div>
|
|
<h1>Artery</h1>
|
|
<p class="subtitle">Todo lo vital</p>
|
|
</header>
|
|
|
|
<main>
|
|
<section class="findings-section">
|
|
<h2>
|
|
<span class="lang-en">Model</span
|
|
><span class="lang-es">Modelo</span>
|
|
</h2>
|
|
<div class="model-grid">
|
|
<div class="composition">
|
|
<h3>Pulse</h3>
|
|
<p class="lang-en">
|
|
Composed data flow: a vein configured for a room
|
|
with storage
|
|
</p>
|
|
<p class="lang-es">
|
|
Flujo de datos compuesto: vein configurado para un
|
|
room con almacenamiento
|
|
</p>
|
|
<div class="components">
|
|
<div class="component">
|
|
<h4>Vein</h4>
|
|
<p class="lang-en">API connector</p>
|
|
<p class="lang-es">Conector API</p>
|
|
</div>
|
|
<div class="component">
|
|
<h4>Room</h4>
|
|
<p class="lang-en">Config/env</p>
|
|
<p class="lang-es">Config/entorno</p>
|
|
</div>
|
|
<div class="component">
|
|
<h4>Depot</h4>
|
|
<p class="lang-en">Data storage</p>
|
|
<p class="lang-es">Almacenamiento</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="composition">
|
|
<h3>Shunt</h3>
|
|
<p class="lang-en">
|
|
Mock connector for testing - same interface, fake
|
|
data
|
|
</p>
|
|
<p class="lang-es">
|
|
Conector mock para testing - misma interfaz, datos
|
|
falsos
|
|
</p>
|
|
<div class="components">
|
|
<div class="component">
|
|
<h4>Vein Interface</h4>
|
|
<p class="lang-en">Same API shape</p>
|
|
<p class="lang-es">Misma forma de API</p>
|
|
</div>
|
|
<div class="component">
|
|
<h4>Mock Data</h4>
|
|
<p class="lang-en">Fake responses</p>
|
|
<p class="lang-es">Respuestas falsas</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="composition">
|
|
<h3>Plexus</h3>
|
|
<p class="lang-en">
|
|
Full application when you need more than data flow
|
|
</p>
|
|
<p class="lang-es">
|
|
Aplicacion completa cuando necesitas mas que flujo
|
|
de datos
|
|
</p>
|
|
<div class="components">
|
|
<div class="component">
|
|
<h4>Backend</h4>
|
|
<p>FastAPI server</p>
|
|
</div>
|
|
<div class="component">
|
|
<h4>Frontend</h4>
|
|
<p>Web UI</p>
|
|
</div>
|
|
<div class="component">
|
|
<h4>Infra</h4>
|
|
<p class="lang-en">DB, queues, etc</p>
|
|
<p class="lang-es">DB, colas, etc</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="findings-section">
|
|
<h2>
|
|
<span class="lang-en">Architecture</span
|
|
><span class="lang-es">Arquitectura</span>
|
|
</h2>
|
|
<img
|
|
src="../architecture/02-artery-hierarchy.svg"
|
|
alt="Artery Hierarchy"
|
|
style="
|
|
max-width: 100%;
|
|
background: white;
|
|
border-radius: 8px;
|
|
padding: 1rem;
|
|
"
|
|
/>
|
|
</section>
|
|
|
|
<section class="findings-section">
|
|
<h2>
|
|
<span class="lang-en">Components</span
|
|
><span class="lang-es">Componentes</span>
|
|
</h2>
|
|
<div class="findings-grid">
|
|
<article class="finding-card">
|
|
<h3>Vein</h3>
|
|
<p class="lang-en">
|
|
Stateless API connector. Connects to external
|
|
services like Google Sheets, Jira, Slack. Pure data
|
|
flow - no state, no storage.
|
|
</p>
|
|
<p class="lang-es">
|
|
Conector API sin estado. Conecta a servicios
|
|
externos como Google Sheets, Jira, Slack. Flujo de
|
|
datos puro.
|
|
</p>
|
|
</article>
|
|
<article class="finding-card">
|
|
<h3>Shunt</h3>
|
|
<p class="lang-en">
|
|
Mock connector for testing. Same interface as a vein
|
|
but returns fake data.
|
|
</p>
|
|
<p class="lang-es">
|
|
Conector mock para testing. Misma interfaz que un
|
|
vein pero devuelve datos falsos.
|
|
</p>
|
|
</article>
|
|
<article class="finding-card">
|
|
<h3>Pulse</h3>
|
|
<p class="lang-en">
|
|
Composed data flow. Formula:
|
|
<strong>Vein + Room + Depot</strong>.
|
|
</p>
|
|
<p class="lang-es">
|
|
Flujo de datos compuesto. Formula:
|
|
<strong>Vein + Room + Depot</strong>.
|
|
</p>
|
|
</article>
|
|
<article class="finding-card">
|
|
<h3>Plexus</h3>
|
|
<p class="lang-en">
|
|
Full application with backend, frontend, and
|
|
infrastructure.
|
|
</p>
|
|
<p class="lang-es">
|
|
Aplicacion completa con backend, frontend e
|
|
infraestructura.
|
|
</p>
|
|
</article>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="findings-section">
|
|
<h2>
|
|
<span class="lang-en">Shared Components</span
|
|
><span class="lang-es">Componentes Compartidos</span>
|
|
</h2>
|
|
<div class="findings-grid">
|
|
<article class="finding-card">
|
|
<h3>Room</h3>
|
|
<p class="lang-en">
|
|
Runtime environment configuration. Each room is an
|
|
isolated instance with its own config and
|
|
credentials.
|
|
</p>
|
|
<p class="lang-es">
|
|
Configuracion del entorno. Cada room es una
|
|
instancia aislada con su propia config y
|
|
credenciales.
|
|
</p>
|
|
</article>
|
|
<article class="finding-card">
|
|
<h3>Depot</h3>
|
|
<p class="lang-en">
|
|
Data storage / provisions. JSON files, configs,
|
|
cached responses.
|
|
</p>
|
|
<p class="lang-es">
|
|
Almacenamiento de datos. Archivos JSON, configs,
|
|
respuestas cacheadas.
|
|
</p>
|
|
</article>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="findings-section">
|
|
<h2>
|
|
<span class="lang-en">Available Veins</span
|
|
><span class="lang-es">Veins Disponibles</span>
|
|
</h2>
|
|
<div class="findings-grid">
|
|
<a
|
|
href="../veins/index.html"
|
|
class="finding-card"
|
|
style="text-decoration: none"
|
|
>
|
|
<h3>Google</h3>
|
|
<p class="lang-en">
|
|
Google Sheets API. OAuth authentication, read/write
|
|
spreadsheets.
|
|
</p>
|
|
<p class="lang-es">
|
|
Google Sheets API. Autenticacion OAuth,
|
|
leer/escribir hojas de calculo.
|
|
</p>
|
|
</a>
|
|
<a
|
|
href="../veins/index.html"
|
|
class="finding-card"
|
|
style="text-decoration: none"
|
|
>
|
|
<h3>Jira</h3>
|
|
<p class="lang-en">
|
|
Jira Cloud API. Query issues, projects, sprints.
|
|
</p>
|
|
<p class="lang-es">
|
|
Jira Cloud API. Consultar issues, proyectos,
|
|
sprints.
|
|
</p>
|
|
</a>
|
|
<a
|
|
href="../veins/index.html"
|
|
class="finding-card"
|
|
style="text-decoration: none"
|
|
>
|
|
<h3>Slack</h3>
|
|
<p class="lang-en">
|
|
Slack API. Channels, messages, users.
|
|
</p>
|
|
<p class="lang-es">
|
|
Slack API. Canales, mensajes, usuarios.
|
|
</p>
|
|
</a>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<footer>
|
|
<p>
|
|
<a href="../"
|
|
><span class="lang-en">← Back to index</span
|
|
><span class="lang-es">← Volver al indice</span></a
|
|
>
|
|
</p>
|
|
</footer>
|
|
</body>
|
|
</html>
|