Glenhouse Foundation Events
The Glenhouse Foundation's site runs its events as well as describing them. Behind the public pages is an event system: admins create events and import guest lists, guests register and RSVP on each event's own page, and the foundation emails its guests from the same place, with a log of every send.

At a glance
- Type
- Platform
- Industry
- Nonprofit
- Live site
- glenhousefoundation.org
- Built with
- Next.js 16, React 19, NextAuth, Postgres on Neon, Cloudinary, Resend
- Codebase
- About 15,800 lines of TypeScript, 26 pages and 25 route handlers
- Hosting move
- DreamHost to Vercel on October 7, 2026
Events, guests and email
Admins sign in to create and edit events, upload images to Cloudinary and import guest lists from a CSV file. Guests register or RSVP from the event's own page and can change their answer later.
Guest emails go out through Resend, from a template or written by hand, with replies directed to the foundation's inbox, and every send is logged.
Security and the move to Vercel
A security audit's fixes put an admin check in front of every route that manages events, guest lists and files, and validated file names wherever files are read or deleted.
During the move, event responses stopped carrying the guest list unless a signed-in admin asks, and the email log became admin-only.
Vercel's file system is read-only, so events, RSVPs and the email log moved from JSON files into Postgres. Each stored document, such as the full events list, carries a version number, and a save only lands if nothing changed in between, otherwise it re-reads and tries again, so two guests RSVPing at once can't overwrite each other. Local development still runs from the JSON files, which also seed a fresh database.
The same app serves the foundation's public pages, such as Grants.
Highlights
- Version-checked saves with retry, so simultaneous RSVPs never overwrite each other.
- Event responses carry no guest list unless a signed-in admin asks.
- Admin checks on every route that manages events, guest lists or files.
Let's talk.
Tell me what you're building. I read every message myself and usually reply within one business day.

