diff --git a/README.md b/README.md index 91294fe..2bcf8a1 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,14 @@ Both functions authenticate with a scoped `email + crm` key held by the paused 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 printable flyer + +`public/assets/founders-break-flyer.pdf` is a one-page US Letter flyer, linked +from the footer and from the confirmation someone sees right after they RSVP, +which is the moment they might think about bringing people. The source that +generates it lives in `design/` with regeneration instructions; edit that, do not +re-design the PDF. + ## The QR code `public/images/rsvp-qr.png` and `public/assets/rsvp-qr.svg` both encode diff --git a/design/README.md b/design/README.md new file mode 100644 index 0000000..743d6d9 --- /dev/null +++ b/design/README.md @@ -0,0 +1,25 @@ +# Flyer source + +`flyer.html` is the source for `public/assets/founders-break-flyer.pdf`. It is +not served by the site; it lives here so the flyer can be regenerated rather +than re-designed when a detail changes. + +US Letter, one page, printed on white on purpose: a full-bleed dark flyer drinks +toner and collapses to a solid block on the mono laser printers in most campus +libraries. The blueprint line art carries the brand and survives a black-and-white +print intact. + +Regenerate after editing (needs Chrome and playwright): + +```js +const { chromium } = require('playwright'); +const b = await chromium.launch({ executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' }); +const p = await b.newPage({ viewport: { width: 816, height: 1056 }, deviceScaleFactor: 2 }); +await p.goto('file:///abs/path/design/flyer.html', { waitUntil: 'networkidle' }); +await p.evaluate(() => document.fonts.ready); +await p.pdf({ path: '../public/assets/founders-break-flyer.pdf', width: '8.5in', height: '11in', + printBackground: true, margin: { top: '0', right: '0', bottom: '0', left: '0' } }); +``` + +Check `document.body.scrollHeight - 1056 === 0` before shipping: anything over +spills onto a second page, and the QR is the first thing to fall off. diff --git a/design/flyer-diagram.png b/design/flyer-diagram.png new file mode 100644 index 0000000..0c0bf08 Binary files /dev/null and b/design/flyer-diagram.png differ diff --git a/design/flyer.html b/design/flyer.html new file mode 100644 index 0000000..d7f4d8b --- /dev/null +++ b/design/flyer.html @@ -0,0 +1,167 @@ + + +
+ +UF Startup Pool Social
+Engineers, designers, business minds and anyone building something from the ground up. Same bar, same tables, every week.
+ +
+ We are building Gainesville’s startup culture, one terrible pool shot at a time.
+✓Zero pool skills required. Most of us are not good at this.
+✓No pitches, no entry fee, no name tags. Grab a cue and talk shop.
+✓Meet your next co-founder. Technical, design and business people in one room.
+
+ Scan to RSVP
+foundersbreak.onetouch.studio
+<%= isTonight ? "Tonight" : nextLong %> at <%= V.name %>, <%= V.street %>, <%= site.startTime %>. A confirmation is on its way to your inbox.
Add the whole series to your calendar +Bringing people? Printable flyer (PDF)
@@ -343,6 +344,7 @@