Low Tide Festival: a music festival site with a lineup, schedule grid and venue map
The website for a fictional three-day music festival: a lineup you can filter by day, stage and genre, a schedule grid for every stage, a...
A website for a Grateful Dead tribute band: tour dates that move to past shows on their own, a setlist archive with a song filter, live song stats counted in Liquid, band pages, media, and booking inquiries saved as private drafts through a Raytha Function, built on Raytha by an AI agent with the CLI in about 45 minutes.

A short, silent tour of the finished site, recorded from the real pages.
10 screens from the finished site, on desktop and on a phone. Use the arrow keys, swipe, or open any screen full size.
For each Raytha use case we take a realistic brief, hand it to an AI agent with the raytha CLI, and publish what
comes out: the site, the files behind it, and a kit you can use to rebuild it yourself. This one is a website for
a Grateful Dead tribute band: tour dates, a setlist from every show, song statistics, the band, photos and
recordings, and a way for venues to get in touch.
The agent built it on a fresh Raytha 2.0.1 instance. Nobody opened the admin. Every template, content type, show, setlist, page, form handler and menu went in through the CLI, from files in a directory.
Lantern Ramblers are a fictional six-piece from Asheville, North Carolina, who play the songs of the Grateful Dead. Their site has:
/songs.json.The design is psychedelic but tasteful: a deep plum night, warm cream type and a sunset gradient from amber through rose to violet, with soft colour blobs that drift behind the headers, a slowly turning colour wheel for a logo, a scrolling ticker and wavy dividers. All the motion stops for visitors who ask their system for reduced motion. Headlines are set in Fraunces, a soft, rounded serif with a lively italic, the text is Instrument Sans and dates and labels use DM Mono. The posters and portraits are abstract artwork drawn by a script, so every image is license-free and no real people are shown. The band is a fan tribute, so the site uses no Grateful Dead logos or artwork. On a 390px phone the menu folds away, show rows stack and the stats sit two to a row.
There is no stats table and nothing to recalculate. Each setlist is three plain text fields, one song per line,
with a > at the end of a line when the song runs into the next. The song stats page is a second list view over the
same setlists, with its own Liquid template. As the page renders, the template walks every setlist and adds each
song to one long string as a |Song| token. Counting a song is then just splitting that string on its token, and
sorting the counts gives the top ten. Openers are the first line of set one, and encores come from the encore field.
Drums and Space are left out of the counts.
So when the band adds tonight's setlist in the admin, the stats, the home page chart and the archive all update on
the next page view. A Raytha Function at songs.json does the same sums in JavaScript for anyone who wants the raw
numbers, and ?song= returns every date a single song was played.
Raytha does not have a form builder, but it does have Raytha Functions: small JavaScript programs that answer HTTP
requests at a path you choose. The booking page is an ordinary HTML form that posts to a function at
forms/booking. The function:
| Feature | How it is built |
|---|---|
| Shows, setlists, band, media and booking requests | Five content types from one schema document. Shows use a date, a dropdown for the ticket status and an attachment for the poster; setlists use a one-to-one relationship to their show and long text for each set; members have a color for their accent. |
| 64 seed items | Content import from JSON Lines, with posters, portraits and photos uploaded during the import and each setlist linked to its show by name. |
| Upcoming and past shows | One list view sorted by date, with a Liquid template that compares each date with today. |
| Setlist archive and song filter | A list view whose template reads ?year= and ?song= and follows the relationship to show the venue. |
| Song stats | A second list view over the same setlists, with a template that counts songs in Liquid, plus a widget that does the same for the home page chart. |
| Stats as JSON | A Raytha Function at songs.json that reads the setlists through API_V1.GetContentItems. |
| Booking inquiries | A plain HTML form that posts to a Raytha Function, which checks the fields and calls API_V1.CreateContentItem to save a draft. The booking requests list view is not published. |
| Show, setlist, member and media pages | Detail templates for each content type. A past show's page looks up its setlist through the relationship. |
| Home, Booking and Thank you | Site pages built from 11 custom widget templates (hero with the next show, next shows, top songs, band strip, latest setlist, media strip, call to action, page header, booking info, booking form, thank-you). |
| Navigation | Two menus: the main menu and a footer menu. |
This is the brief, as given to the agent.
Build a website for a Grateful Dead cover band on a fresh Raytha instance with the
raythaCLI. No clicking around the admin. Use a fictional band name, and no Grateful Dead logos or trademarks beyond describing it as a Grateful Dead tribute.
Look and feel
Content and pages
Done means
raytha check passes with no broken routes.About 45 minutes of agent time, from an empty install to raytha check passing on every route, including the
visual design, the generated artwork, 18 setlists, the two functions and writing all of the content.
The theme, schema, seed content, the artwork script, page definitions, functions and menus are in the
raytha-examples repository,
with a build.sh that rebuilds the whole site into any Raytha 2.x instance. Point it at your site with
RAYTHA_URL and RAYTHA_API_KEY and run it.
Free, open source and ready to deploy in minutes. Bring a brief and an AI agent.