49 lines
1.9 KiB
HTML
49 lines
1.9 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Artifex</title>
|
|
<style>
|
|
body { font-family: system-ui, sans-serif; margin: 2rem; color: #172033; background: #f7f4ed; }
|
|
header { display: flex; justify-content: space-between; align-items: center; }
|
|
.card { background: white; border: 1px solid #ddd4c6; border-radius: 12px; padding: 1rem; margin: 1rem 0; }
|
|
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; }
|
|
.status { font-size: .8rem; letter-spacing: .08em; color: #6f4e37; }
|
|
a, button { color: #172033; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<div>
|
|
<h1>ARTIFEX</h1>
|
|
<p>Deterministic control plane for autonomous engineering.</p>
|
|
</div>
|
|
<a href="/admin/">Admin</a>
|
|
</header>
|
|
<section class="grid">
|
|
<div class="card"><strong>{{ summary.project_count }}</strong><br>Projects</div>
|
|
<div class="card"><strong>{{ summary.ready_tasks }}</strong><br>Ready tasks</div>
|
|
<div class="card"><strong>{{ summary.blocked_tasks }}</strong><br>Blocked tasks</div>
|
|
</section>
|
|
<section>
|
|
<h2>Projects</h2>
|
|
{% for project in projects %}
|
|
<article class="card">
|
|
<div class="status">{{ project.project_type }} / {{ project.status }}</div>
|
|
<h3>{{ project.name }}</h3>
|
|
<p>{{ project.goal }}</p>
|
|
</article>
|
|
{% empty %}
|
|
<div class="card">No projects yet. Create one in the admin to begin M1 validation.</div>
|
|
{% endfor %}
|
|
</section>
|
|
<section>
|
|
<h2>Activity</h2>
|
|
{% for event in recent_events %}
|
|
<div class="card"><span class="status">{{ event.created_at }} / {{ event.event_type }}</span><br>{{ event.actor }}</div>
|
|
{% empty %}
|
|
<div class="card">No events yet.</div>
|
|
{% endfor %}
|
|
</section>
|
|
</body>
|
|
</html>
|