{# ── Disclaimer ──────────────────────────────────────────────────────────── #}
Visual showcase only

This page demonstrates visual composition of APEP macros, custom tags and color components. No backend business logic is wired up - forms do not submit, prices are static, downloads are placeholder paths and user data is not persisted. All interactions are for design and layout demonstration purposes only.

Demo only
{# ═══════════════════════════════════════════════════════════════════════════ SHOWCASE 1 - Product Configurator sidebar-layout · radio · checkbox · range_slider · toggle progress_bar · btn · toast · tooltip · infobox · badge · card[data] ═══════════════════════════════════════════════════════════════════════════ #}
Showcase 1 of 5

Product Configurator

A real-world pricing page: choose your plan, add features, set team size and billing cycle. The sticky sidebar reflects the current configuration and validates on submit.

What's combined
{% for c in ["sidebar-layout", "radio", "checkbox", "range_slider", "toggle", "progress_bar", "btn", "toast", "tooltip", "infobox", "badge", "card[data]", "split_group", "eyebrow"] %} {{ c }} {% endfor %}
{# Plan selection #} Step 1

Choose your plan

Most popular: Pro

78% of teams start with Pro and upgrade when they need more seats.

{{ apep.macros.radio("plan", [ {"label": "Starter - up to 3 seats, 5 GB storage", "value": "starter"}, {"label": "Pro - up to 25 seats, 100 GB storage", "value": "pro", "checked": True}, {"label": "Enterprise - unlimited seats, 1 TB storage", "value": "enterprise"} ]) }}
{# Add-ons #} Step 2

Add-ons

Add-ons are billed monthly on top of your base plan. You can change them at any time.

{{ apep.macros.checkbox("addons", [ {"label": "SSL & Custom Domain (+€4 / mo)", "value": "ssl", "checked": True}, {"label": "Global CDN (+€9 / mo)", "value": "cdn"}, {"label": "Daily Backups (+€6 / mo)", "value": "backups", "checked": True}, {"label": "Priority Support (+€19 / mo)", "value": "support"}, {"label": "Advanced Analytics (+€12 / mo)", "value": "analytics"}, {"label": "SSO / SAML Integration (+€29 / mo)", "value": "sso"} ], hidden_name="addons_csv") }}
{# Team size + billing #} Step 3

Usage & billing

{{ apep.macros.range_slider("seats", "Team seats", min=1, max=100, value=8, step=1, unit="seats", hint="Each seat is billed per user per month.") }}
{{ apep.macros.toggle("annual", "Annual billing - save 20%", checked=True, hint="Billed once per year. Cancel anytime with a prorated refund.") }}
{{ apep.macros.toggle("auto_renew", "Auto-renew subscription") }}
Discount progress

Add 2 more add-ons to unlock the 15% volume discount.

{{ apep.macros.progress_bar(67, label="Volume discount", show_value=True, variant="warning") }}
{# Promo code #}

Have a promo code?

{{ apep.macros.input("promo", "Promo code", placeholder="e.g. LAUNCH25") }} {{ apep.macros.btn("Apply", variant="ghost") }}
{# ── RIGHT - Sticky pricing summary ─────────────────────── #}
Your plan
Pro + 2 Add-ons
€58
per month, billed annually
Includes SSL, Daily Backups, 8 seats and 100 GB storage. Saving €174 vs monthly billing.
Pro plan €39 / mo SSL & Domain €4 / mo Daily Backups €6 / mo 8 seats × €0 included
Total / month €58

30-day free trial  ·  No credit card required

After the trial you will be charged the plan rate shown above. Cancel before the trial ends and pay nothing.

SOC 2 Type II GDPR compliant 99.9% uptime SLA
{# ═══════════════════════════════════════════════════════════════════════════ SHOWCASE 2 - Interactive Architecture Diagram image (on_click SVG) · text_block · faq_list · details/summary theme-block · tooltip · badge · eyebrow · card[surface] ═══════════════════════════════════════════════════════════════════════════ #}
Showcase 2 of 5

Interactive Architecture Diagram

Click any component in the SVG diagram to reveal its technical spec sheet. Uses the image macro's on_click hook, native details/summary for collapsible sections, and theme-block to show different context in light vs. dark mode.

What's combined
{% for c in ["image (on_click)", "text_block", "faq_list", "details/summary", "theme-block", "tooltip", "badge", "card[surface]", "split_group", "stack"] %} {{ c }} {% endfor %}
{# JS - wires SVG zone clicks to panel reveal #} {# ── SVG Diagram ──────────────────────────────────────────── #}

Click any component to see its spec sheet below.

{% set _arch_svg %} {# Background #} {# Layer labels #} CLIENT GATEWAY SERVICES STORAGE {# CONNECTION LINES #} {# CLIENT - Browser #} Browser Client APEP · Jinja2 Templates click to explore → {# GATEWAY - API #} API Gateway Rate Limit · Auth · Routing {# SERVICE - Auth #} Auth Service JWT · OAuth2 · Sessions {# SERVICE - Data #} Data Service REST · GraphQL · Cache {# SERVICE - Media #} Media Service Upload · Resize · CDN {# STORAGE - DB #} PostgreSQL + Redis Primary · Replica · Cache {% endset %} {{ apep.macros.image(_arch_svg, protected=False) }} {# ── Detail panels (shown on SVG click) ──────────────────── #}
{# ═══════════════════════════════════════════════════════════════════════════ SHOWCASE 3 - Onboarding Wizard stepper · input · dropdown · checkbox · radio · toggle range_slider · file_upload · date_picker · btn · toast · card · badge ═══════════════════════════════════════════════════════════════════════════ #}
Showcase 3 of 5

Onboarding Wizard

A multi-step onboarding flow. The stepper tracks progress. Validation fires toast notifications. Every step uses a different combination of form components.

What's combined
{% for c in ["stepper", "input", "dropdown", "checkbox", "radio", "toggle", "range_slider", "file_upload", "date_picker", "btn", "toast", "card", "badge"] %} {{ c }} {% endfor %}
{# Wizard state JS #}
{# Stepper #}
{% set _wsteps = [ {"label": "Account", "detail": "Name, email and password."}, {"label": "Preferences", "detail": "Role, interests and notification settings."}, {"label": "Documents", "detail": "Profile photo and contract start date."}, {"label": "Confirm", "detail": "Review and accept the terms."} ] %} {% for s in _wsteps %}
{{ loop.index }}

{{ s.detail }}

{{ s.label }} {% if not loop.last %} {% endif %}
{% endfor %}
{# ── Step 1: Account ──────────────────────────────────────── #}
Step 1 of 4

Create your account

{% set _col_a %}{{ apep.macros.input("first_name", "First name", required=True, placeholder="Jane") }}{% endset %} {% set _col_b %}{{ apep.macros.input("last_name", "Last name", required=True, placeholder="Doe") }}{% endset %} {{ apep.macros.split_group([{"content": _col_a}, {"content": _col_b}], gap="md") }} {{ apep.macros.input("email", "Work email", type="email", required=True, placeholder="jane@company.com") }} {{ apep.macros.input("password", "Password", type="password", required=True, hint="At least 8 characters, one uppercase, one number.") }} {{ apep.macros.dropdown("timezone", "Your timezone", [ {"label": "UTC+0 - London", "value": "utc0"}, {"label": "UTC+1 - Berlin / Paris", "value": "utc1"}, {"label": "UTC+2 - Helsinki", "value": "utc2"}, {"label": "UTC-5 - New York", "value": "utcm5"}, {"label": "UTC-8 - Los Angeles", "value": "utcm8"} ], required=True) }}
{{ apep.macros.btn("Continue", variant="primary", size="lg", url="javascript:wizardGo(2)") }}
{# ── Step 2: Preferences ──────────────────────────────────── #} {# ── Step 3: Documents ────────────────────────────────────── #} {# ── Step 4: Confirm ──────────────────────────────────────── #}
{# ═══════════════════════════════════════════════════════════════════════════ SHOWCASE 4 - Knowledge Hub sidebar-layout · timeline · image_gallery · faq_list · download_btn eyebrow · badge · meta-row · card[sidebar] · card[data] · card[info-row] ═══════════════════════════════════════════════════════════════════════════ #}
Showcase 4 of 5

Knowledge Hub

A documentation or blog layout using sidebar-layout with a sticky navigation sidebar, a timeline of recent updates, a gallery of screenshots and a FAQ section below.

What's combined
{% for c in ["sidebar-layout", "timeline", "image_gallery", "faq_list", "download_btn", "eyebrow", "badge", "meta-row", "card[sidebar]", "card[data]", "card[info-row]"] %} {{ c }} {% endfor %}
{# ── MAIN content ─────────────────────────────────────── #}
{# Hero intro #}
Documentation

Getting started with APEP

Last updated June 2025 Stable v2.4.0 12 min read

APEP is a macro-first component system for Jinja2. It gives you server-rendered building blocks - layout primitives, form controls, display components - that work without a JavaScript framework and load JS only when a feature actually needs it.

{# Release timeline #}

Release history

{{ apep.macros.timeline([ {"title": "v2.4.0", "text": "timeline.js refactored - layout via individual style properties, no more cssText overwrite."}, {"title": "v2.3.0", "text": "image_gallery: SVG inline thumbnails, overlay captions, downloadable SVG support."}, {"title": "v2.2.0", "text": "Color component system: bgcolor, txtcolor, bordercolor attributes on any element."}, {"title": "v2.1.0", "text": "Dark mode: full token set, [data-theme] switching, theme-block custom tag."}, {"title": "v2.0.0", "text": "Major rewrite. ApepLoader replaces manual script tags. All CSS is loaded on demand."}, {"title": "v1.5.0", "text": "sidescroller, review_gallery, logo_scroller added."}, {"title": "v1.2.0", "text": "Forms: range_slider, date_picker, file_upload components."}, {"title": "v1.0.0", "text": "Initial public release. btn, input, checkbox, radio, dropdown, toast, nav."} ], direction="right", same_side=True) }}
{# Screenshot gallery #}

UI screenshots

Click any image to open the full-size overlay.

{{ apep.macros.image_gallery([ {"src": "/apep-static/images/examples/unsplash1.svg", "alt": "Light mode dashboard", "caption": "Light mode - dashboard overview with data cards and sidebar navigation"}, {"src": "/apep-static/images/examples/unsplash2.svg", "alt": "Dark mode dashboard", "caption": "Dark mode - the same dashboard. All colors switch via CSS token overrides."}, {"src": "/apep-static/images/examples/unsplash3.svg", "alt": "Form components", "caption": "Form components - checkbox, radio, range slider, date picker, all in a single view"}, {"src": "/apep-static/images/examples/unsplash4.svg", "alt": "Timeline horizontal", "caption": "Horizontal timeline with alternating cards and scroll navigation"}, {"src": "/apep-static/images/examples/unsplash5.svg", "alt": "Review gallery", "caption": "Review gallery carousel with star ratings and expandable long reviews"}, {"src": "/apep-static/images/examples/unsplash6.svg", "alt": "Macro showcase page", "caption": "Full macro showcase - all components visible on a single documented page"}, {"src": "/apep-static/images/examples/unsplash7.svg", "alt": "Configurator", "caption": "Product configurator - sidebar layout with sticky pricing summary"}, {"src": "/apep-static/images/examples/unsplash8.svg", "alt": "Architecture diagram", "caption": "Interactive SVG architecture diagram with clickable spec panels"}, {"src": "/apep-static/images/examples/unsplash9.svg", "alt": "Onboarding wizard", "caption": "Multi-step onboarding wizard with stepper and toast validation"}, {"src": "/apep-static/images/examples/unsplash1.svg", "alt": "Knowledge hub", "caption": "Knowledge hub - sticky sidebar, timeline, image gallery and FAQ combined"}, {"src": "/apep-static/images/examples/unsplash2.svg", "alt": "Team page", "caption": "Team page - hoverable service cards with tooltip skill stacks"}, {"src": "/apep-static/images/examples/unsplash3.svg", "alt": "Mobile responsive", "caption": "Mobile view - all components collapse gracefully via responsive CSS"} ]) }}
{# FAQ #}

Frequently asked questions

{{ apep.macros.faq_list([ { "question": "Does APEP work without Python / Flask?", "answer": "APEP macros are pure Jinja2 templates. Any server that can render Jinja2 works: Flask, FastAPI (via Jinja2), Django-Jinja, or standalone Jinja2. No Python framework is mandatory." }, { "question": "How do I add APEP to an existing project?", "answer": "Copy the macro files into your templates directory. Add the base CSS files to your layout template. Macros register their own CSS and JS via ApepLoader - no manual import needed per page." }, { "question": "Can I use APEP macros alongside a React or Vue frontend?", "answer": "Yes, but the macros output server-rendered HTML. If your app is a SPA, APEP is best used for server-rendered shells, landing pages or admin panels rather than dynamic client components." }, { "question": "How does the color component system work?", "answer": "Add bgcolor, txtcolor, or bordercolor attributes to any HTML element. base_color_components.css maps these attributes to CSS variables from base_colors.css. No class names needed. Example: div bgcolor='primary' txtcolor='surface'." }, { "question": "Is APEP accessible?", "answer": "All macros include appropriate ARIA attributes, focus rings, and keyboard navigation. Form components use native input elements. The fallback stylesheet ensures sensible defaults for screen readers." } ]) }}
{# ── SIDEBAR (sticky) ─────────────────────────────────── #}
Current version
2.4.0
Released June 2025 · Stable

In this article

Getting started Release history UI screenshots FAQ

Downloads

{{ apep.macros.download_btn("Quick Start Guide", "apep-quickstart.pdf", variant="default") }} {{ apep.macros.download_btn("Full API Reference", "apep-api-reference.docx", variant="default") }} {{ apep.macros.download_btn("Component Check", "apep-component-checklist.xlsx", variant="default") }}

Components

{% for c in ["btn", "input", "checkbox", "radio", "toggle", "range_slider", "date_picker", "dropdown", "file_upload", "image", "image_gallery", "sidescroller", "timeline", "stepper", "faq", "review_card", "review_gallery", "toast", "progress_bar", "text_block", "logo_scroller", "nav", "footer_nav", "download_btn"] %} {{ c }} {% endfor %}
{# ═══════════════════════════════════════════════════════════════════════════ SHOWCASE 5 - Team & Testimonials grid-auto · card[service][hoverable][icon] · shrink · tooltip review_gallery · sidescroller · badge · eyebrow · meta-row · image ═══════════════════════════════════════════════════════════════════════════ #}
Showcase 5 of 5

Team & Testimonials

A complete team page: hoverable service cards with inline tooltips showing each person's skill stack, a shrink animation on the technology strip, and a review gallery of client testimonials below.

What's combined
{% for c in ["grid-auto", "card[service][hoverable][icon]", "shrink", "tooltip", "review_gallery", "sidescroller", "badge", "eyebrow", "meta-row", "image"] %} {{ c }} {% endfor %}
{# ── Section intro #}
The team

Built by engineers, for engineers

Small, focused team. Every person ships code and documentation. Hover a card to see their tech stack.

{# ── Team grid ─────────────────────────────────────────────── #} {# Member 1 #}
🧩

Sofia Reiter

Lead Engineer Berlin

Architect of the macro system and the ApepLoader pipeline. Passionate about zero-runtime UI and server-side rendering done right.

Tech stack
PythonJinja2Flask PostgreSQLCSS
{# Member 2 #}
🎨

Marcus Chen

Design Systems Taipei

Designed the color token architecture, the custom tag system, and every hover state you will ever enjoy. Dark mode is his life's work.

Tech stack
CSSSVGFigma OKLCHa11y
{# Member 3 #}

Lena Vogt

Performance Vienna

Owns the JS layer - ApepLoader, all component scripts, and the timeline engine. Fan of vanilla JS and obsessive about bundle size.

Tech stack
JavaScriptWeb APIsLighthouse Chrome DevTools
{# Member 4 #}
🔒

Daniel Park

Security Seoul

Form validation, CSRF protection, file upload hardening, and making sure no macro ever leaks user data into the DOM.

Tech stack
PythonOWASPJWT CSPOAuth2
{# Member 5 #}
📖

Amélie Dubois

Documentation Lyon

Every example in these showcase files went through Amélie. She also wrote the SKILL.md files and keeps the changelog honest.

Tech stack
MarkdownJinja2Notion Vale linter
{# Member 6 #}
🗄️

Ivan Petrov

Infrastructure Prague

Keeps the CI/CD green, the Postgres replicas in sync, and the Redis cluster from running out of memory at 2 am on a Tuesday.

Tech stack
DockerPostgreSQLRedis GitHub ActionsTerraform
{# ── Technology strip - shrink hover ──────────────────────── #}
Built with

Hover a technology to bring it into focus.

{% for tech in [ ["🐍", "Python 3.12"], ["🧱", "Jinja2"], ["⚗️", "Flask"], ["🐘", "PostgreSQL"], ["🟥", "Redis"], ["🎨", "Custom Tags"], ["🪄", "ApepLoader"], ["📐", "OKLCH Colors"] ] %}
{{ tech[0] }}
{{ tech[1] }}
{% endfor %}
{# ── Project sidescroller ──────────────────────────────────── #}

Recent projects

Click any project to open a full-size overlay with details.

{{ apep.macros.sidescroller([ {"src": "/apep-static/images/examples/unsplash2.svg", "alt": "SaaS dashboard", "overlay": True, "label": "SaaS dashboard", "caption": "Multi-tenant analytics dashboard. Server-rendered charts via progress_bar and data cards."}, {"src": "/apep-static/images/examples/unsplash3.svg", "alt": "Documentation portal", "overlay": True, "label": "Docs portal", "caption": "Knowledge base with sidebar-layout, faq_list and a full-text search powered by the API layer."}, {"src": "/apep-static/images/examples/unsplash4.svg", "alt": "Marketing site", "overlay": True, "label": "Marketing site", "caption": "Landing page with hero_btn, logo_scroller, review_gallery and a newsletter sign-up form."}, {"src": "/apep-static/images/examples/unsplash5.svg", "alt": "Internal tool", "overlay": True, "label": "Internal tool", "caption": "HR onboarding wizard - the same pattern shown in Showcase 3, deployed to production."}, {"src": "/apep-static/images/examples/unsplash6.svg", "alt": "Event platform", "overlay": True, "label": "Events", "caption": "Event booking platform. Date picker, file upload for tickets, timeline of upcoming events."}, {"src": "/apep-static/images/examples/unsplash7.svg", "alt": "Content hub", "overlay": True, "label": "Content hub"}, {"src": "/apep-static/images/examples/unsplash8.svg", "alt": "Admin panel", "overlay": True, "label": "Admin panel", "caption": "Role-based admin panel built entirely with APEP macros and no frontend framework."} ]) }}
{# ── Testimonials ──────────────────────────────────────────── #}

What teams say

{{ apep.macros.review_gallery([ { "text": "We replaced our custom component library with APEP in three weeks. The server-side rendering approach cut our Time to First Byte by 60% and our frontend engineers stopped arguing about state management.", "author": "Fatima Al-Rashid", "role": "VP Engineering, Merkata", "rating": 5, "date": "April 2025", }, { "text": "Das Farbtoken-System ist ehrlich gesagt das beste Developer-Experience, das ich seit Jahren erlebt habe. Die Markenfarbe zu ändern ist eine Zweizeiler-Änderung in base_colors.css und jede Komponente aktualisiert sich automatisch. Kein Tailwind-Purge, kein CSS-in-JS-Recompile.", "author": "Tobias Krenzer", "role": "Frontend Lead, Structura GmbH", "rating": 5, "date": "März 2025", }, { "text": "Onboarding new developers is so much faster. The macro API is self-documenting - if you know Jinja2, you know APEP in an afternoon. We went from six-week ramp-up to two weeks on the frontend.", "author": "Priya Nair", "role": "Engineering Manager, Loopline", "rating": 5, }, { "text": "APEPを使い始めてから、テンプレートの開発速度が劇的に向上しました。マクロのAPIは直感的で、新しいチームメンバーも数時間で使いこなせます。サーバーサイドレンダリングのアプローチにより、クライアント側のJavaScriptを最小限に抑えられます。", "author": "田中 雄一", "role": "シニアエンジニア, Tokyo Digital Works", "rating": 5, "date": "2025年5月", "expand_text": "続きを読む" }, { "text": "Honest four stars because the pagination component is still WIP. Everything else is rock solid. The sidescroller, timeline and review gallery all look great out of the box with zero configuration. We shipped a full marketing site in four days.", "author": "Jonas Eriksen", "role": "Fullstack Engineer, Birch Studio", "rating": 4, "date": "May 2025", "expand_text": "Read more" }, { "text": "نظام APEP غيّر طريقة عملنا بالكامل. القدرة على بناء واجهات مستخدم معقدة باستخدام ماكروز Jinja2 فقط، دون الحاجة إلى أطر عمل JavaScript، أمر رائع. فريق الدعم متجاوب جداً والتوثيق واضح.", "author": "أحمد المنصوري", "role": "مهندس برمجيات أول, Gulf Tech Solutions", "rating": 5, "date": "يونيو 2025", }, { "text": "We evaluated five component systems before choosing APEP. The others either required React, had poor accessibility, or needed a build step. APEP is the only one that works with our Flask stack without any tooling changes.", "author": "Claudia Mancini", "role": "CTO, Fenix Labs", "rating": 5, "date": "June 2025", }, { "text": "我们在生产环境中使用APEP已经六个月了,零回归问题。时间轴组件、侧边滚动器和评论画廊开箱即用,外观专业。颜色令牌系统让我们可以轻松维护多个客户品牌,只需切换CSS变量即可。", "author": "李明", "role": "技术总监, Shanghai Cloud Systems", "rating": 5, "date": "2025年4月", "expand_text": "阅读完整评价" }, { "text": "С момента перехода на APEP наша команда экономит около 20 часов в неделю. Макросы для форм особенно впечатляют: валидация, состояния ошибок и всплывающие уведомления работают сразу из коробки. Рекомендую всем, кто работает с Jinja2.", "author": "Александра Новикова", "role": "Lead Developer, Ural Software House", "rating": 5, "date": "Май 2025", }, { "text": "Le système de composants est remarquablement bien pensé. La séparation entre les macros de mise en page, les composants de formulaire et les éléments d'affichage rend le code très lisible. Nous avons migré depuis Bootstrap en moins d'une semaine.", "author": "Amélie Fontaine", "role": "Développeuse Frontend, Lyon Digital", "rating": 4, "date": "Avril 2025", } ], expand_text="Read full review", collapse_text="Collapse") }}
{{ apep.macros.toast_container(position="bottom-right") }}