A Site starter for web apps: posts, a contact form and a newsletter, with no sign-in
A web app can now start as a site instead of a Members app: choose Site under Starter on New app, run ib-apps create --starter site, or send starter: "site" to POST /v1/apps. It has a front page led by the latest post, posts written in the dashboard's record editor and served at /blog and as RSS at /feed.xml, a contact form whose messages become lead records and an email to you, a newsletter list with double opt-in and a lasting unsubscribe link, and the metadata, sitemap, robots and Open Graph image a site needs to be found. Visitors have no role: pages read records in server code only, and the forms post to server actions that run the models' actions.
Lead notifications and newsletter confirmations go through your own Resend account (Settings → Integrations) to the address in LEADS_TO. Until Resend is connected, development sends each email to Logs with its links, so both forms can be tried end to end. The starter's own test covers the lead limit, the confirmation link and publishing, and a web-content skill guides a coding agent through the pieces.
Every page opens with a masthead that holds its lead, the latest post on the front page, and the blog lists posts by year with reading times. The Members app is unchanged, and stays the default.
More in The starter files.