Public directory page powered by a Google Sheet


The problem
The directory lived in a spreadsheet. Sharing it meant sending the sheet itself or a raw table that was hard to browse, search, or link to. There was no clean public page where visitors could look through the entries, filter by category, or share a link to a single entry.
What we built
We built a public directory page at the applet root that reads a published Google Sheet CSV. It shows a responsive card grid with title, subtitle, description, website link, Instagram link, and an Open to commissions badge when the value is Yes. Visitors can search across every column as they type, filter by a chosen column (Category in the sample) with counts, and sort by name or newest first. Each entry has a shareable detail view with its own URL, showing every column and previous and next links. On the server, the CSV is fetched from docs.google.com only, parsed with a small parser that handles quoted commas and newlines, and cached for 10 minutes, with a fallback to the last cached copy if a fetch fails. A settings record holds the CSV link, page title, intro, column mapping, and filter column. A built-in sample directory with 42 rows appears with a Sample data note when no sheet is linked. Refresh and CSV download handlers are included. The styling is plain and editorial: white background, one indigo accent, and no stock imagery.
Outcome
They can publish a Google Sheet as a searchable, filterable public directory and share links to individual entries. Updating the sheet updates the page after the cache expires, or right away with the refresh handler. They can also download the current rows as a CSV.