- Full implementation of runs, recipes, cache routers with templates - Auth and storage routers fully migrated - Jinja2 templates for all L1 pages - Service layer for auth and storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
56 lines
2.1 KiB
HTML
56 lines
2.1 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}Recipes - Art-DAG L1{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="max-w-6xl mx-auto">
|
|
<div class="flex items-center justify-between mb-6">
|
|
<h1 class="text-3xl font-bold">Recipes</h1>
|
|
</div>
|
|
|
|
<p class="text-gray-400 mb-8">
|
|
Recipes define processing pipelines for audio and media. Each recipe is a DAG of effects.
|
|
</p>
|
|
|
|
{% if recipes %}
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
{% for recipe in recipes %}
|
|
<a href="/recipe/{{ recipe.id }}"
|
|
class="bg-gray-800 border border-gray-700 rounded-lg p-4 hover:border-gray-600 transition-colors">
|
|
<div class="flex items-center justify-between mb-2">
|
|
<span class="font-medium text-white">{{ recipe.name }}</span>
|
|
{% if recipe.version %}
|
|
<span class="text-gray-500 text-sm">v{{ recipe.version }}</span>
|
|
{% endif %}
|
|
</div>
|
|
|
|
{% if recipe.description %}
|
|
<p class="text-gray-400 text-sm mb-3 line-clamp-2">{{ recipe.description }}</p>
|
|
{% endif %}
|
|
|
|
<div class="flex items-center justify-between text-sm">
|
|
<span class="text-gray-500">{{ recipe.step_count or 0 }} steps</span>
|
|
{% if recipe.last_run %}
|
|
<span class="text-gray-500">Last run: {{ recipe.last_run }}</span>
|
|
{% endif %}
|
|
</div>
|
|
|
|
{% if recipe.tags %}
|
|
<div class="mt-2 flex flex-wrap gap-1">
|
|
{% for tag in recipe.tags %}
|
|
<span class="bg-gray-700 text-gray-300 px-2 py-0.5 rounded text-xs">{{ tag }}</span>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
</a>
|
|
{% endfor %}
|
|
</div>
|
|
{% else %}
|
|
<div class="bg-gray-800 border border-gray-700 rounded-lg p-12 text-center">
|
|
<p class="text-gray-500 mb-4">No recipes available.</p>
|
|
<p class="text-gray-600 text-sm">Recipes are defined in YAML format and submitted via API.</p>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endblock %}
|