Skip to content

Start building your next app or website — with AI, right in your browser.

Visit devdojo.com
Docs
Starter Templates

Sites 09 / 13

Starter Templates

A gallery of complete starter sites — agencies, portfolios, studios, and more — each one also a hands-on lesson in how Sites works.

Starter Templates

Templates are the explicit-start option: when you want a known design rather than a site generated from a prompt, click start from a template under the dashboard's prompt box (or browse the full gallery on the Templates page) and pick one. Every template in the gallery is a real, finished site — not a lorem-ipsum shell. The gallery keeps growing (agencies, portfolios, studios, wellness, fitness, blogs…), and it all rests on the three foundations below. Pick one, poke at it, make it yours.

Previewing before you commit

Click any card in the template gallery to open the full-screen preview — browse the template's real pages at phone, tablet, or desktop width, or pop it out into its own tab. Every preview also lives at its own URL (/template/preview/{slug}), so you can reload it or share the link.

Every preview shows the template exactly as it will look in your new site — hit Use template and you get exactly what you previewed. Some templates ship their own resources/design.md — the design system document that explains their palette and type choices — and any template can be restyled afterward the same way every site is: edit resources/design.md and the @theme tokens in resources/css/site.css from the builder's Code mode.

Choosing a template in the new-site modal

Each template is also a lesson. The files are commented to explain what's happening — the fastest way to learn DevDojo Sites is to create a site and read (or click) your way through it. Every template is built in the Blade syntax these docs describe.

The three below are the foundations — the clearest teachers of the grammar. Everything else in the gallery builds on the same patterns with more sections, more pages, and more motion.

Blank 📄

The minimal starting point — with the good habits already in place.

Don't let the name fool you: Blank isn't empty. It's the skeleton every site wants, so you never start from a truly blank file:

  • components/layouts/main.blade.php — a layout with @vite, a {{ $title }} prop, and <x-nav/> / <x-footer/>
  • components/nav.blade.php + components/footer.blade.php — your first reusable components, each with a companion .yml
  • components/sections/hero.blade.php — a section component wired to the Visual inspector
  • pages/index.blade.php — a clean centered hero, composed of section tags
  • resources/css/site.css — example custom CSS (theme tokens for fonts and colors, a styled text selection, a dot-grid background utility)

Teaches: layouts and {{ $slot }}, components with @props, companion .yml fields, and how custom CSS flows through @vite.

Pick it when: you know what you want to build and just need the scaffolding.

Lumen 🌤️

A complete product landing page for a fictional consultancy.

This is the kitchen-sink template — hero, numbered services, big stats, a case-study spotlight, process steps, team, FAQ, a Writings journal, and an about page:

  • The services grid loops over resources/data/collections/services.json with @foreach ($services as $service) — edit the JSON, the cards update, and {{ $loop->iteration }} drives the 01–04 labels.
  • Process steps, team, and FAQ come from their own collections, rendered the same way.
  • Sections are components — the homepage composes <x-sections.…> tags, each passing its own copy through attributes and its data through bound attributes (:items="$services").
  • The layout passes both title and description into the <head> — a good SEO habit to steal.
  • The Writings journal pairs a collection with a dynamic pagepages/writings/[writings.slug].blade.php serves every article from writings.json, so publishing a new one is just adding an entry.

Teaches: collections, @foreach, $loop, component props, bound attributes, dynamic detail pages, and a multi-page site structure.

Pick it when: you're launching a product, or you want the full guided tour of what Sites can do.

Aria 🪶

A personal portfolio and blog with a clean, editorial feel.

Home, sites, posts, and about pages for a fictional developer, powered by small JSON collections:

  • The homepage shows the top three sites; the sites page lists them all from the very same resources/data/collections/sites.json — same data, two views:
@foreach ($items as $site)
    <!-- one site card -->
    @break($loop->iteration == 3)
@endforeach

The homepage caps the loop with @break; the sites page drops it and shows every site.

  • The blog does the same trick with a reusable component: <x-posts-loop :items="$items" count="3"/> on the homepage, a bigger count on the posts page — the cap is just a prop.
  • Every blog post is a dynamic page: one file, pages/post/[post.slug].blade.php, serves /post/{slug} for every entry in collections/post.json — the post's meta and its body HTML (content) live in the collection, and publishing a new post is just adding an entry.
  • Even the nav is data — the layout declares menu in its @props and each page hands it menu.json with a bound attribute (:menu="$menu").

Teaches: one collection powering multiple pages, dynamic detail pages, @break for "first N", $loop, and — since a collection is readable directly in any component by default — when a bound attribute is still the right call: genuine per-instance reuse, like the same posts-loop component capped differently on two pages.

Pick it when: you're building a portfolio, or any site where a list of things (sites, posts, talks…) is the star.

Poke around — that's the lesson

However you like to learn, your new site will teach you:

Click around the canvas — every section lights up with a name chip, and the sidebar's Sections | Layout | Page tabs show how each page is put together. Select a section and the inspector shows exactly which pieces of it are editable.

Flip to Code and read the files — they're commented to explain what's happening. Start at resources/views/pages/index.blade.php, then follow the tags outward to their files:

<x-layouts.main title="Home">
    <x-sections.hero heading="Hi there" />
</x-layouts.main>

After you pick

A template is a starting point, not a cage — every file is yours to edit, rename, or delete. Swap in sections from the library, rewrite the copy, and make it yours.

© 2026 DevDojo Edit this page