1800Outdoor
A structured directory of outdoor resources built on a 15-table relational taxonomy, with Postgres full-text search, synonym expansion, and editorial publishing rules that prevent thin pages.
- Project
- 1800Outdoor.com
- Role
- Founder & Developer
- Timeline
- 2026
What it is
A curated directory of outdoor resources — brands, blogs, apps, guides, retailers, local businesses, nonprofits, and government and safety organizations — connected through categories, locations and tags.
Directories are an information architecture problem wearing a website costume, which is why this one interested me.
The taxonomy
The schema runs to 15 tables with Postgres enums, modeling listings against categories, locations and tags as real relationships rather than a flat table with a type column. That’s what makes a listing reachable from multiple legitimate paths — by category, by place, by tag, or through a curated “best of” page — without duplicating it.
Content is authored as markdown and imported into the database through a pipeline, so entries are reviewable as files and queryable as data.
Search
Postgres full-text search with synonym expansion, which is the detail that actually matters. Users don’t search the vocabulary a taxonomy uses — someone looking for a “rucksack” needs to find things filed under “backpack.” Expanding query terms against a synonym set is the difference between a directory that answers questions and one that only works if you already know its language.
The same principle as metadata and title work on an enterprise knowledge base: findability is about the searcher’s words, not the author’s.
An editorial rule worth mentioning
City pages don’t publish until they have at least five listings.
That constraint is enforced in code, and it exists because thin local pages are the standard failure mode of directory sites — they get built for SEO, offer nothing, and drag down the credibility of everything around them. Better to have fewer pages that are worth landing on.
Implementation notes
The application is built — 34 pages including per-type detail routes and an admin area for listings, taxonomy, content pages, submissions and claims — but the public domain currently serves a launching-soon page while the directory fills out, so the screenshots here are the application running locally against its seeded catalog. Worth stating plainly: the platform works, the catalog isn’t deep enough to open yet, which is the same editorial judgment as the five-listing rule above applied to the site as a whole. Submission and claim flows let listings be proposed and owned. Dynamic OG images and favicons are generated at the edge, JSON-LD structured data is built per page type, and local development runs against embedded PGlite so there’s no database to provision to work on it. Five migrations, 48 seeded listings, admin protected by HTTP basic auth.
Inside the project
2More designed & built work
-
USA Archery (proposal & working demo)
USA Archery Platform Modernization
A working modernization of a national governing body's WordPress site — 2,900+ articles migrated to Payload CMS, a rebuilt information architecture, role-based editorial workflow, and a governed AI assistant with citation-backed answers.
-
TerraGreetings
TerraGreetings
A subscription platform for printable outdoor-themed greeting cards — built end to end with auth, payments, an admin CMS, and a browser-side duplex PDF print engine.
-
KnowledgePeak.ai
KnowledgePeak.ai
An AI documentation generator that puts enterprise knowledge practice within reach of small teams — guided questionnaires produce structured articles, with provider-agnostic LLM routing and admin-configurable templates.
Questions about this work?
Happy to go deeper on any of it — the decisions, the trade-offs, or what I'd do differently.