Frontmatter

Frontmatter Solo — Symfony

Build in Astro.
Ship Twig templates.

Solo reads your Astro project and generates Twig templates structured for Symfony — partials, layouts, a variable manifest, and an integration guide.

Twig output · Symfony-ready · $49 one-time

Frontmatter Solo generates templates and a variable contract from your Astro project. Backend integration (data fetching, routing, CMS wiring) remains your responsibility.

Your Astro frontend is done.

The Symfony developer needs Twig templates.

Every component has to be rewritten by hand.

Solo generates the template structure and variable contract.

Input — Astro component
<!-- Astro component -->
<ProductCard
  name="Running Shoes"
  price={89.99}
  imageUrl="/images/shoes.jpg"
  badge="New"
/>
Output — Twig partial
{# partials/product-card.twig — generated by FM Solo #}
<article class="product-card">
  {% if fm.props.badge %}
    <span class="badge">{{ fm.props.badge }}</span>
  {% endif %}
  <img src="{{ fm.props.imageUrl }}" alt="{{ fm.props.name }}" />
  <h2>{{ fm.props.name }}</h2>
  <p class="price">{{ fm.props.price }}</p>
</article>
Symfony integration — page template
{# templates/product/index.twig — generated by FM Solo #}
{% extends 'layouts/base.twig' %}

{% block content %}
  {% for item in fm.data.products %}
    {% include 'partials/product-card.twig' with {
      fm: { props: item }
    } %}
  {% endfor %}
{% endblock %}

Native Twig syntax

Feels like you wrote it

The output follows Symfony Twig conventions — {% extends %}, {% include %}, {% block %}. No surprises for your backend team.

Structure

Matches Symfony's template folder

Generated output maps directly to templates/: pages, partials, layouts. Copy into templates/ and connect your controller data.

Variable contract

Manifest + integration doc

manifest.json and INTEGRATION.md list every Twig variable per template. Your Symfony developer knows exactly what the controller needs to pass.

Drupal too

Works anywhere Twig runs

The Twig output is framework-agnostic. Symfony, Drupal, Craft CMS, standalone Twig — same templates, same variables.

What gets generated

output/
├─ pages/
│  └─ index.twig
├─ layouts/
│  └─ base.twig
├─ partials/
│  ├─ hero.twig
│  ├─ product-card.twig
│  └─ footer.twig
├─ manifest.json
└─ INTEGRATION.md

Copy to templates/ in your Symfony project. The manifest tells your controllers exactly what variables each template expects.

Frequently asked questions

Does Solo generate Symfony-compatible Twig templates?

Yes. The output uses standard Twig

{% extends %}, {% include %}, {% block %}

and maps to the templates/ directory structure.

Variable access follows the fm.props contract.

What is the fm namespace?

Solo uses a fixed data contract: partials read fm.props, pages and layouts read fm.site, fm.page, and fm.data. Your Symfony controller populates these values and passes them to render(). INTEGRATION.md documents what each template expects.

Which Symfony versions are supported?

Compatible with any Symfony version that supports Twig 3.x — Symfony 5, 6, and 7. No Symfony-specific PHP dependencies in the output.

Does it work with Drupal?

Yes. The generated .twig files work with Drupal's theme layer. You may need to adapt include paths and map fm.props to Drupal's template data model.

Does Solo require a specific Astro project structure?

Yes. Solo requires a constrained project: one layout per page, literal props only (string, number, boolean, or null), global CSS, and static images from public/. Run npx @withfrontmatter/solo-check (free) to check compatibility before purchasing.

How do I know if my project is compatible?

Run npx @withfrontmatter/solo-check — it's free and open source. It validates your Astro project against the Solo contract and reports any incompatible patterns before you buy.

Free · Open source

Check compatibility before you buy.

solo-check is a free CLI validator. It scans your Astro project against the Solo contract and tells you exactly what is and isn't compatible before you purchase anything. Use --help-ai if you want the packaged AI workflow.

npx @withfrontmatter/solo-check

Command copied

Example output

✓ src/pages/index.astro — OK
✓ src/layouts/Base.astro — OK
E201 src/pages/contact.astro:13 Non-literal props used in component Hero.
  Fix: Use only string, number, boolean, or null props in Solo v1.

──────────────────────────────────────────
1 error · 0 warnings

Tip: use the AI workflow to fix these errors automatically.
     npx @withfrontmatter/solo-check --help-ai
──────────────────────────────────────────

Exit 0 means your project is ready for Solo. Use npx @withfrontmatter/solo-check --help-ai if you want the packaged AI fixing workflow. View on GitHub ↗

$49

One-time purchase. No subscription.

  • CLI — macOS, Linux, Windows (Node)
  • Desktop app — macOS 12+ · Apple Silicon
  • Twig output — Symfony-ready
  • Plain PHP output included
  • Starter reference project included
  • INTEGRATION.md auto-generated
Buy Frontmatter Solo

Provided as-is. No guarantee of compatibility with all Astro projects or Symfony versions. Support is best-effort.

Also works with

  • Drupal (Twig-based themes)
  • Craft CMS
  • Standalone Twig projects
  • Any PHP framework with a Twig integration