Branding
Change how this branch looks. Pick a preset or customize colors.
Custom colors
Preview
EMBA 25
Twenty-five strong, one cohort.
Calendar
Paste a Google Calendar embed URL. Or leave blank to hide the calendar section.
In Google Calendar → Settings → Calendars → your calendar → Integrate calendar → Public URL to this calendar. Copy the whole URL.
Members
Admins appear as pinned cards at the top of the public members list. Regular members below — email + phone hidden unless you toggle them.
⚠ Pending deletion requests 0
Members who requested their profile be removed. Their entry is hidden from public view until you decide. Options: Dismiss (return to public) · Suppress (retain data, keep permanently hidden) · Delete (permanently remove).
Admins (pinned at top of public list)
These cards appear above regular members and always show the admin's email so people know who to contact. Being listed here doesn't grant access — access is controlled by Cloudflare Access allowlist (managed separately).
Members
0 membersNotes — cohort dispatches
Notes are powered by a shared Google Sheet. Anyone with edit access to the sheet can add or update notes. The public site reads the sheet every ~5 minutes and renders each row as a note card.
This is not the sharing link. It's a special "publish to web" URL — see instructions below.
How to set this up (one-time, ~5 min)
Step 1: Create the sheet.
- Open sheets.new in a new tab (creates a fresh blank Google Sheet).
- Name it something like "EMBA 25 Notes" (rename via the title at the top).
- In row 1, type these column headers exactly:
Datein A1,Titlein B1,Bodyin C1. - Starting in row 2, add your first note. Date format is flexible —
2026-11-15,Nov 15, 2026, or free-text likeNov 15all work. Notes sort newest-first by date.
Step 2: Publish the sheet as CSV.
- In the sheet, go to File → Share → Publish to web.
- In the dialog, under the first dropdown, change "Entire document" to just "Sheet1" (or whichever tab has your notes).
- In the second dropdown, change "Web page" to "Comma-separated values (.csv)".
- Click Publish → confirm.
- Copy the URL that appears — it looks like
https://docs.google.com/spreadsheets/d/e/.../pub?output=csv. - Paste it into the field above → click Save notes URL.
Step 3: Share edit access with the cohort.
- Back in the sheet, click the green Share button (top right).
- Add specific people (their Google/Gmail address) with Editor permission. Or, if you want anyone in the cohort with the link to be able to edit, change General access from "Restricted" to "Anyone with the link" and set the role to Editor.
- Share the sheet's regular URL (not the CSV one) with those cohort members so they can find it and add notes.
That's it. New rows in the sheet appear on the public site within ~5 minutes.
Column format & tips
Columns:
- Date (column A) — any format. Used only for sorting (newest first). Blank = sorts oldest.
- Title (column B) — one line, bold on the public page. Skip if the note doesn't need one.
- Body (column C) — full text. Line breaks in the sheet cell = line breaks on the site. Long text wraps naturally.
Empty rows are skipped — no need to delete them to keep the site clean.
To delete a note: delete the row in the sheet. Change appears on the site within ~5 minutes.
To edit: just edit the cell. Same delay.
Rich formatting (bold, links, colors inside a cell) does not carry over — only plain text. Add a URL as bare text and it'll display as text.
Why a Google Sheet instead of an admin form?
Broader collaboration. Only editors of this admin panel can log in here. But anyone with edit access to the sheet can add a note — no admin panel access needed. This lets the whole cohort contribute updates without concentrating everything on a few admins.
Familiar tool. Everyone knows Google Sheets. No new UI to learn.
Portable. If this site ever goes away, the notes are safe in your Google Drive. Nothing lost.
Photos & Albums
Organize photos into albums. Each album shows on the home page as a tile linking to its own view. Choose grid or carousel display per album.
Albums
How to use this admin
Quick reference for every tab, plus strategies for keeping the calendar and roster alive with more than one contributor.
Overview: how changes propagate
Every save writes to the site's key-value store immediately. The public site fetches those values with a 30-second edge cache, so changes appear within ~30 seconds of saving (sooner if you hard-reload with Cmd+Shift+R).
Photo uploads go to object storage and are served instantly — no cache wait.
You don't touch git, deploy pipelines, or code. Everything happens through this admin UI.
Branding tab
Change the cohort's colors, name, and tagline. Pick a preset palette (recommended — they're guaranteed to look OK together) or open Custom colors for arbitrary hex picks.
Live preview updates as you change values. Nothing is public until you hit Save branding.
If a color choice looks off on the live site, come back and try another preset — no way to break the site.
Calendar tab — how to get a Google Calendar embed URL
Steps to get the embed URL from Google Calendar:
- Open calendar.google.com and sign in with the Google account that owns the cohort's calendar.
- In the left sidebar under My calendars, hover the calendar you want to embed — click the ⋮ (three dots) → Settings and sharing.
- Scroll to Access permissions for events → check "Make available to public". This is required for the embed to work.
- Scroll further to Integrate calendar. Copy the full URL under "Public URL to this calendar" — it starts with
https://calendar.google.com/calendar/embed?src=.... - Paste it into the Embed URL field on the Calendar tab here → Save.
Public URL vs Embed code: both work, but the plain public URL is cleaner. Ignore the <iframe> tag Google offers — we already provide the iframe wrapper.
Calendar tab — strategies for an active shared calendar
The calendar can be as simple or collaborative as you want. Three patterns, ordered by how much collaboration you want:
Pattern 1 — Solo admin owns everything. One person creates the Google Calendar, they add events. Members subscribe to it in their own Apple/Google/Outlook calendar. Simplest, but every event goes through one bottleneck.
Pattern 2 — Shared calendar, many editors, one owner. This is usually the sweet spot for a cohort. In Google Calendar's Settings and sharing → Share with specific people or groups, add other cohort members with permission "Make changes to events". Now they can add, edit, or delete events without needing to log into a shared Google account. The calendar is still owned by the original creator (so it can never be accidentally deleted by anyone else), but anyone with edit permission can populate it.
Pattern 3 — Group calendar under a shared inbox. Create a Google Group like emba25-planners@yourdomain, share the calendar with that group as editors. Members of the group can all edit; adding/removing planners = adding/removing group members. Overkill for <10 planners; useful past that.
Common tip: use event Guests to send auto-invites — anyone added as a guest gets an email invite and can RSVP. That's your "event RSVP" flow for free, no extra tool needed.
Members tab
Add or remove people from the cohort roster. Each row is one person.
Required: Name. Everything else is optional.
Email and phone visibility toggles. Off by default — the member's contact info is stored but only visible to admins. Toggle "show publicly" on if the member has agreed to their contact appearing on the public page.
Notes/bio field: always public if the member is visible. A short blurb about the person, their industry, or a note.
Members render as a grid on the public site. Clicking a card opens a modal with their photo, bio, and any visible contact links.
Members tab — Admins subsection (pinned cards)
Admin cards are separate from regular members. They render at the top of the public members section with a "Cohort Admin" medal, always-visible email, and a prominent "Write to [Name]" button.
Purpose: tell cohort members who to contact for changes, event ideas, or corrections — so they're not always coming to the site admin.
Adding a person to admin cards does NOT grant them edit access. Access to this admin panel is controlled separately via Cloudflare Access allowlist (see the Access management section below). Two independent lists.
Multiple admins render side-by-side on desktop, wrapping to multiple rows past ~3 cards. Stack single-column on mobile.
Photos tab — albums + uploader
Albums are the organizational layer. Create an album (e.g. "Orientation Trip"), then upload photos into it. Each album can display as a grid (default) or carousel.
Uploading: drag-drop or click the upload area. Photos default to "Unfiled" — pick an album in the Upload to dropdown to assign at upload time, or use the dropdown on each tile to reassign later.
Reordering: drag tiles within the grid to reorder. Order persists automatically.
Reviewing: click any tile to open a preview modal with filename, size, and a delete button. Good for reviewing before removing.
The public site's photos section shows album tiles — clicking one navigates to that album's dedicated page.
Access management — adding or removing admin editors
The list of people who can log in to THIS admin panel is managed by the site admin. To add or remove an editor:
Email adam.valine@gmail.com with:
- The editor's email address
- Which cohort branch they should manage (e.g. EMBA 25)
- Whether you're adding or removing them
Adam will usually see the email within 24 hours. Once he adds them, the new editor can sign in immediately at the branch's /admin/ URL — they enter their email, get a 6-digit PIN emailed to them, paste it, done. No invitation link needed.
Notes — powered by a Google Sheet
Notes are fed by a shared Google Sheet. Anyone with edit access to the sheet can add or update notes — no admin panel access needed. This lets the whole cohort contribute updates instead of everything routing through a few admins.
Full step-by-step setup lives on the Notes tab. TL;DR: create a Google Sheet with columns Date | Title | Body, publish it as CSV via File → Share → Publish to web, paste the URL into the Notes tab, done.
The public site fetches the sheet every ~5 minutes. New rows appear within that window.
Something broke or the site looks wrong
Two most common issues:
1. Changes not appearing. Hard-reload the page (Cmd+Shift+R) to bust the browser cache. If it still doesn't show, wait 60 seconds and try again — the CDN edge cache expires within a minute.
2. Something is broken. Email adam.valine@gmail.com with:
- What you were doing when it broke
- Which tab / feature
- A screenshot if visual, or the browser console output if it's a save failure (Cmd+Opt+I → Console tab → screenshot)