Platform CLI Use cases
Learn
Developer docs User guide Quickstart CLI and AI agents Blog
Company
Services About Contact Links Get started
Awards and competitions

Halftone Awards: an awards site with entries, nominations and past winners

The website for a fictional international creative awards program: categories with live deadline countdowns, an entry gallery, past winners, and entry and nomination forms that save drafts through Raytha Functions, built on Raytha by an AI agent with the CLI in about 45 minutes.

Build time
About 45 minutes
Built with
Raytha 2.0.1 and the raytha CLI 0.1.1
Industry
Awards and competitions
Rebuild
One script, from GitHub
Halftone Awards: an awards site with entries, nominations and past winners
Walkthrough

See it in action

A short, silent tour of the finished site, recorded from the real pages.

Silent walkthrough, 1080pOpen the MP4
The site

Take the tour

10 screens from the finished site, on desktop and on a phone. Use the arrow keys, swipe, or open any screen full size.

01 / 10Home page with the entry button, key numbers and a stack of this year's entries
The write-up

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 the website for an international creative awards program: the categories and their deadlines, a gallery of this year's entries, every past winner, and the forms people use to enter their work or nominate someone else.

The agent built it on a fresh Raytha 2.0.1 instance. Nobody opened the admin. Every template, content type, entry, page, form handler and menu went in through the CLI, from files in a directory.

What was built

The Halftone Awards are a fictional prize for illustration, poster and editorial design, photography and type. The site has:

  • A home page with the six categories and a live countdown to each deadline, a strip of this year's entries, the key dates from opening to the ceremony, last year's Grand Prix with a quote from the jury, the six judges and a call to enter.
  • A page for each category with the brief the judges work from, the deadline, fee and accepted formats, this year's entries in that category and its past winners.
  • An entry gallery you can filter by category, and a page for every entry with the artwork, the entrant, the medium, a statement and links to the previous and next entry.
  • Past winners grouped by year, with the Grand Prix shown large and Gold, Silver and Merit awards below it.
  • An entry form and a nomination form that really work. Submissions are checked on the server and saved as drafts, so nothing is published until someone on the team has reviewed it.
  • A jury page that explains how judging works, rules written in plain language, and a thank-you page.

A short script reads each deadline and shows how many days are left, switches to "Closing soon" in the last 30 days and to "Closed" afterwards, so nobody has to remember to update the site when a deadline passes.

The design is a dark gallery: near-black walls, warm off-white text and a vermilion accent, so the artwork is the brightest thing on every page. Headlines are set in Instrument Serif, a narrow display serif, with Inter for text and JetBrains Mono for labels and dates. The artwork is generated halftone dot patterns in SVG, which fits the name and keeps every image license-free. On a 390px phone the gallery drops to one column, the menu folds away and the Enter button stays at the top.

How the forms work

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 entry and nomination pages are ordinary HTML forms that post to two functions, forms/apply and forms/nominate. Each function:

  1. Ignores the submission if a hidden "website" field is filled in. People never see that field; spam bots fill it.
  2. Trims every value to a sensible length, checks that the required fields are there, that the email address looks right, that links start with http:// or https://, and that the category is one of the real categories.
  3. Saves the submission as a draft content item, in an Applications or Nominations content type that has no public pages.
  4. Redirects to the thank-you page, or back to the form with a short explanation of what to fix.

The team reviews submissions in the Raytha admin like any other content. Entry fees are never taken on the website: the rules say entrants are sent a payment link after their entry is confirmed.

Features, and the Raytha features behind them

Feature How it is built
Categories, entries, applications and nominations Four content types from one schema document. Entries use a relationship field to their category, a number for the year, a dropdown for the award, an attachment for the artwork and a checkbox for featured work. Categories have a date field for the deadline.
30 seed items Content import from JSON Lines. Entries point at their category by name, and the artwork is uploaded during the import.
Entry gallery and past winners Two list views on the same content type: /entries shows 2026 entries, /winners shows earlier years. The Liquid template reads ?category=, checks it against the real categories and builds a filter for get_content_items.
Deadline countdowns The templates write each deadline into the page as a date, and a few lines of script turn it into "69 days left", "Closing soon" or "Closed".
Entry and nomination forms Plain HTML forms that post to two Raytha Functions. Each one checks the fields and calls API_V1.CreateContentItem to save a draft.
Private submissions The Applications and Nominations list views are not published, and drafts have no public page.
Home, Enter, Nominate, Jury, Rules and Thank you Site pages built from 11 custom widget templates (hero with artwork stack, category cards, entries strip, key dates, Grand Prix, judges, call to action, page header, form, rules, thank-you).
Navigation Two menus: the main menu and a footer menu. The footer also lists the categories straight from the content.

The brief

This is the brief, as given to the agent.

Build a website for an awards program on a fresh Raytha instance with the raytha CLI. No clicking around the admin.

Look and feel

  • Visually impressive, with a design of its own: a dark gallery that lets the work stand out. Display type that is well proportioned, not overly wide.
  • Responsive. It has to look good on a phone as well as a desktop.

Content and pages

  • Award categories with deadlines, a gallery of entries and past winners.
  • Working forms to enter work and to nominate someone, with spam protection. Submissions must not be published automatically.

Done means

  • raytha check passes with no broken routes.
  • Screenshots of the result on desktop and mobile.
  • A kit in the examples repository that rebuilds the site on a fresh install.

How long it took

About 45 minutes of agent time, from an empty install to raytha check passing on every route, including the visual design, the generated artwork, the two form handlers and writing the categories, entries and rules.

Rebuild it yourself

The theme, schema, seed content and artwork, page definitions, form handlers 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.

Share Post LinkedIn

Build yours on Raytha

Free, open source and ready to deploy in minutes. Bring a brief and an AI agent.