SaaS · Directory Platform · Multi-Tenant
Directory One
The operating system for niche directories — one codebase that spawns directories for any vertical.
Why I built this
Every directory site I’ve ever built started with the same three months of plumbing: submission forms, claim flows, review moderation, admin queues, geo search, listing pages, SEO. The interesting part — the actual vertical — only starts after all that scaffolding is done.
Directory One flips that. The plumbing is the product. A new directory — for ceramicists, pilates studios, neighborhood food trucks, whatever — spawns from a template in minutes. The listing noun, the categories, the review criteria, the layout, the optional modules: all driven by config, not code forks.
One codebase, many directories, one release pipeline. The point is that improvements compound: every fix and feature ships to every directory automatically.
The philosophy
Most directory software is either a hosted SaaS (you don’t own the site, the data, or the SEO) or a one-off WordPress build (you own it, but you also own every future upgrade headache). Directory One sits between: you get your own deployed site on your own domain with your own database, but the platform itself is centrally maintained and updated.
The architecture rule that makes this work: nothing in shared code is allowed to know about your vertical. No hardcoded “studios” or “artists” or “agencies” in the core packages. Everything reads from the directory’s config. That discipline is what lets one platform serve a pilates studio directory and an artist residency archive without forking.
Built for any vertical
Small business directories
City guides, chambers of commerce, neighborhood roundups — anywhere the listings are local businesses with hours, location, and reviews.
Artist & creative directories
Portfolio-first listings with galleries, residency dates, and category-first browsing instead of map-first. Built for fine artists, illustrators, and creative communities.
Agency & service directories
Service-focused listings with case studies, industries served, and claim flows tuned for B2B. Optional claim fees for curated rosters.
Niche verticals
Pilates studios, ceramicists, food trucks, podcasters — anything where the listing noun is consistent and people want to browse, filter, and review.
What every directory gets
Listings, reviews, and claims
Submit, moderate, and publish listings with photos and rich metadata. Owners can claim their listing via domain-matched magic link (auto) or admin-reviewed evidence (manual). Optional claim fees with admin-verified payment for curated directories.
AI site scanner
Paste a website URL and Directory One crawls the homepage, about, services, and values pages to auto-fill the listing — logo, banner, gallery, description. UA fallback chain handles WAFs and bot challenges so the scan rarely returns empty.
Jobs and events boards
Optional jobs and events modules per directory. Toggle on for verticals where it makes sense (agencies post jobs, artists post shows), off for ones where it doesn’t.
Geo-aware search
City autocomplete via OpenStreetMap, neighborhood filters, and map-or-grid browsing. Location requirements are config-driven so map-first directories and portfolio-first directories share the same code.
Admin moderation
Approval queues for new listings, claim review, deletion requests, and notification routing. Built for solo admins who don’t want to babysit every submission.
Centralized updates
A single platform release fans out to every spawned directory via GitHub Actions. Every directory stays on the same version automatically — no per-site upgrade work, no version drift.
How it’s built
Directory One is a TypeScript monorepo. Three shared packages (core, ui, app) hold the business logic, components, and routes. Spawning a new directory generates a thin Next.js app that imports those packages and is deployed to its own Vercel project with its own Supabase database.
Releases bump the shared packages, publish to GitHub Packages, and fan out to every spawned directory via a GitHub Actions workflow. Drizzle migrations run automatically on each Vercel build, so schema changes propagate the same way feature changes do.
- One codebase, many directories — spawn a new vertical with `pnpm spawn`
- Next.js 15 monorepo (Turborepo + pnpm workspaces)
- Drizzle ORM on Postgres via Supabase Transaction Pooler
- Tailwind v4 with per-directory theming
- Deployed to Vercel, packages published to GitHub Packages
- GitHub Actions rollout pipeline auto-bumps every spawned directory
- Templates seed the vertical: pilates studio, artist, agency, small business
- Vertical-agnostic core — zero noun hardcoding in shared packages
See it in action
Directories built on the Directory One platform, each running the same shared packages with different config and verticals:
Curated agency directory
Great Work Guild →
Local business directory
Portland Local →
Niche vertical directory
The Look For →
Want a directory of your own?
Directory One is currently spawned and maintained on a per-project basis. If you have a vertical that deserves a real directory — not a Squarespace list — get in touch.
Get in touch