The Founder's Break - weekly UF startup pool social at Silver Q, Gainesville. EJS site for foundersbreak.onetouch.studio
Find a file
2026-08-26 15:02:11 -04:00
ops One-tap yes/no from the reminder, and a shorter email for returning regulars 2026-08-26 15:02:11 -04:00
public One-tap yes/no from the reminder, and a shorter email for returning regulars 2026-08-26 15:02:11 -04:00
views Blueprint scroll animation, bigger QR, mobile rhythm pass 2026-08-26 14:55:18 -04:00
README.md Check in the RSVP and reminder function sources, document the whole flow 2026-08-26 14:52:51 -04:00
site.config.js Add a scannable RSVP QR code, print version included 2026-08-26 14:49:55 -04:00

The Founder's Break

Event site for the weekly UF startup pool social at Silver Q, Gainesville. Hosted by OneTouch Studio at https://foundersbreak.onetouch.studio.

Corben EJS site. There is no build step: deploy_site copies this repo verbatim.

site.config.js          all schedule, venue and copy data
views/index.ejs         the single page, including the next-date logic
public/css/style.css    brand tokens lifted from onetouch.studio
public/js/main.js       nav state, scroll reveal, live countdown, RSVP submit
public/assets/          the recurring .ics and the print-resolution QR
public/images/          logo, favicon, RSVP QR

The date is never hard-coded

views/index.ejs computes the next occurrence at render time from weekday + firstEvent in site.config.js. public/js/main.js runs the same rule in the browser, so the countdown ticks and rolls itself over to the following Thursday once the night ends, with no reload and no redeploy.

Cancelling a week

Add the ISO date to cancelled in site.config.js and redeploy:

cancelled: ["2026-11-26"],   // Thanksgiving

The page then skips that Thursday, shows a notice naming the cancelled date, and points at the next one that is actually happening. Two other places do not read this list and need the same date added by hand:

  • public/assets/founders-break.ics is a plain weekly recurrence.
  • the CANCELLED array in the founders-break-reminder Corben function, or it will email everyone about a Break that is not happening.

Deploying

deploy_site  id=4ae63819-3f63-4fea-b0de-eb1e5befe607 repo=gator/founders-break mode=ejs

Nothing redeploys itself. Every edit needs the deploy step.

What happens when somebody RSVPs

The form POSTs to /forms/rsvp. The Corben sites renderer stores it in site_form_submissions and fires a form.submitted event. From there it is all plain JavaScript, deliberately: there is no LLM anywhere in the send path.

Piece Id
Trigger Founder's Break RSVP (form.submitted, form_name=rsvp) e035fb68-2ecd-452b-bf74-a051c2775423
Function founders-break-rsvp 3d3c4bed-c073-40a4-9a32-9ff6944737dd
Function founders-break-reminder cf2a1e4c-43f9-4cf4-8fc5-652c494940ae
Cron Founder's Break weekly reminder (every 6h) 84efd815-5426-4952-af88-2f4ed81efc54
Email list Founder's Break 09429866-0005-4260-bf56-2d520eea4db7

founders-break-rsvp resolves a CRM contact, writes the email address back onto it (create_contact dedupes server-side and can return a record with no address, which would put an unmailable member on the list), adds them to the list, sends the HTML confirmation, and sends an internal note to gatordevin@gmail.com.

founders-break-reminder runs every 6 hours, works out the Eastern weekday itself, and only sends on Wednesday between 09:00 and 20:00 ET. A kv marker keyed to the event date makes any repeat run a no-op, which is what makes it safe to run four times a day.

Both functions authenticate with a scoped email + crm key held by the paused Founders Break agent record (666f7ad0-f546-4fc6-a3c4-14f1384e91a5). That agent runs nothing. It exists only because an API key cannot mint another API key. Deleting it revokes the key and breaks both functions.

The QR code

public/images/rsvp-qr.png and public/assets/rsvp-qr.svg both encode https://foundersbreak.onetouch.studio/#rsvp. Deliberately dark-on-white: inverted QR codes are unreliable on older scanners and these go on flyers. Regenerate with the qrcode npm package if the URL ever changes.