- collect.py copies each repo's built site contents directly to a top-level <repo>/ dir (was libs|apis|wiki/<repo>/site nesting) - nginx uses `index index.html lib/index.html api/index.html` so /dagpipe/ -> lib/index.html, /auth-server/ -> api/index.html are served internally with no redirects - _index regenerates links against the flat layout (/dagpipe/lib/, /auth-server/api/, /mongo-ops/, /blog/...) - config.yml static entries point at vendored blog/ + media-manager/ - Dockerfile copies per-repo dirs flat into the nginx html root - removed stale libs/, apis/, wiki/, tutorials/ category trees
151 lines
5.4 KiB
HTML
151 lines
5.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Aetoskia Developer Documentation</title>
|
|
<style>
|
|
:root {
|
|
--bg: #0d1117;
|
|
--card: #161b22;
|
|
--text: #e6edf3;
|
|
--muted: #8b949e;
|
|
--accent: #2dd4bf;
|
|
--accent-dim: #1e9184;
|
|
--border: #30363d;
|
|
--font-main: 'Inter', 'Roboto', sans-serif;
|
|
--font-code: 'JetBrains Mono', monospace;
|
|
}
|
|
* { margin:0; padding:0; box-sizing:border-box; }
|
|
body {
|
|
background:var(--bg); color:var(--text); font-family:var(--font-main);
|
|
min-height:100vh; display:flex; flex-direction:column;
|
|
align-items:center; justify-content:flex-start; padding:3rem 1.5rem;
|
|
}
|
|
header { text-align:center; margin-bottom:3rem; }
|
|
h1 { font-size:2.5rem; color:var(--accent); letter-spacing:0.5px; margin-bottom:0.5rem; }
|
|
.subtitle { color:var(--muted); font-size:1rem; }
|
|
.badge {
|
|
display:inline-block; margin-top:0.8rem; background:#30363d; color:#fff;
|
|
padding:3px 8px; border-radius:6px; font-size:0.85rem; font-weight:600;
|
|
border:1px solid #484f58;
|
|
}
|
|
.section { width:100%; max-width:900px; margin-bottom:2.5rem; }
|
|
.section h2 {
|
|
font-size:1.2rem; color:var(--muted); text-transform:uppercase;
|
|
letter-spacing:1.5px; margin-bottom:1rem; border-bottom:1px solid var(--border);
|
|
padding-bottom:0.4rem;
|
|
}
|
|
.grid {
|
|
display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
|
|
gap:1.5rem; width:100%;
|
|
}
|
|
.card {
|
|
background:var(--card); border:1px solid var(--border); border-radius:12px;
|
|
padding:1.8rem; text-align:left;
|
|
transition:transform 0.15s ease,box-shadow 0.15s ease;
|
|
}
|
|
.card:hover {
|
|
transform:translateY(-4px); box-shadow:0 0 20px rgba(45,212,191,0.2);
|
|
border-color:var(--accent);
|
|
}
|
|
.card h3 { color:var(--accent); font-size:1.4rem; margin-bottom:0.4rem; }
|
|
.card p { color:var(--muted); font-size:0.95rem; line-height:1.6; }
|
|
.card a {
|
|
color:var(--accent); text-decoration:none; display:inline-block;
|
|
margin-top:0.8rem; font-weight:500;
|
|
}
|
|
.card a:hover { color:var(--accent-dim); text-decoration:underline; }
|
|
footer { margin-top:4rem; text-align:center; color:var(--muted); font-size:0.9rem; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<h1>Aetoskia Developer Docs</h1>
|
|
<p class="subtitle">Central documentation hub for Aetoskia projects</p>
|
|
</header>
|
|
|
|
<section class="section">
|
|
<h2>Libraries</h2>
|
|
<div class="grid">
|
|
<div class="card">
|
|
<h3>OpenAPI First</h3>
|
|
<p>Design-first API development toolkit enforcing OpenAPI contracts as the single source of truth.</p>
|
|
<a href="/openapi-first/lib/" target="_blank">View Documentation →</a>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Doc Forge</h3>
|
|
<p>Renderer-agnostic Python documentation compiler powering MkDocs and MCP generation across Aetoskia projects.</p>
|
|
<a href="/doc-forge/lib/" target="_blank">View Documentation →</a>
|
|
</div>
|
|
<div class="card">
|
|
<h3>DAG Pipe</h3>
|
|
<p>Deterministic pipeline framework for executing state transformations through a directed acyclic graph (DAG).</p>
|
|
<a href="/dagpipe/lib/" target="_blank">View Documentation →</a>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Mail Intake</h3>
|
|
<p>High-performance email ingestion and processing framework with pluggable adapters and automation workflows.</p>
|
|
<a href="/mail-intake/lib/" target="_blank">View Documentation →</a>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Omniread</h3>
|
|
<p>Unified ingestion and normalization layer for structured and unstructured data sources.</p>
|
|
<a href="/omniread/lib/" target="_blank">View Documentation →</a>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Py JWT</h3>
|
|
<p>Lightweight, explicit JWT utilities for Python services with strong validation and minimal magic.</p>
|
|
<a href="/py-jwt/lib/" target="_blank">View Documentation →</a>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Hexa</h3>
|
|
<p>Hexagonal architecture framework and toolbox for Python services.</p>
|
|
<a href="/hexa/lib/" target="_blank">View Documentation →</a>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section">
|
|
<h2>APIs</h2>
|
|
<div class="grid">
|
|
<div class="card">
|
|
<h3>Auth Server</h3>
|
|
<p>Aetoskia authentication service. OpenAPI-driven, FastAPI backend for auth flows.</p>
|
|
<a href="/auth-server/api/" target="_blank">View Documentation →</a>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Blog API</h3>
|
|
<p>A modular, async Blog API backend for FastAPI microservices. Provides streamlined CRUD operations for articles and authors.</p>
|
|
<a href="/blog/" target="_blank">View Documentation →</a>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section">
|
|
<h2>Wiki</h2>
|
|
<div class="grid">
|
|
<div class="card">
|
|
<h3>Mongo Ops</h3>
|
|
<p>A modular, async MongoDB operations layer for FastAPI microservices. Simplifies CRUD, transactions, and model management.</p>
|
|
<a href="/mongo-ops/" target="_blank">View Documentation →</a>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section">
|
|
<h2>Tutorials</h2>
|
|
<div class="grid">
|
|
<div class="card">
|
|
<h3>Media Manager Tutorial</h3>
|
|
<p>Step-by-step guide to the Media Manager architecture, ingestion pipeline, automation workflows, and integrations.</p>
|
|
<a href="/media-manager/" target="_blank">View Tutorial →</a>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<footer>
|
|
© 2025 Aetoskia Developer Network
|
|
</footer>
|
|
</body>
|
|
</html> |