Shipped No Code

Building a Directory App With a Database in ChatGPT

Learn the database and hosting setup before ChatGPT writes a single line.

Columnist · · 11 min read
Cover illustration for “Building a Directory App With a Database in ChatGPT”
App Building Tutorials · September 5, 2026 · 11 min read · 2,479 words

A directory app looks like a list on screen. Underneath, it's a database with a front door, and that's the part most people building one with ChatGPT get backwards: they treat the interface as the hard part and the data layer as an afterthought. Building a directory with ChatGPT is genuinely within reach for a non-technical founder in 2026, but only if the conversation covers three things before a single feature gets built: how the data is structured, where it actually lives after the chat window closes, and how strangers reach it at a real URL. Skip any one of those and what gets built is a demo. The gap between "ChatGPT wrote me some code" and "my directory is live and taking submissions" is still where most people stall out, and it's almost never a prompting problem.

What "building with ChatGPT" actually means in 2025–2026

Two different activities get called the same thing, and mixing them up is where most confusion starts.

One is using ChatGPT as a conversational code generator: describe an app, get files back, deploy them yourself somewhere else. The other is building something that runs inside ChatGPT's own ecosystem, on infrastructure OpenAI now calls Apps. These are not interchangeable paths. A founder needs to know which one a given tool is actually offering before writing a single prompt.

OpenAI launched its App Directory in December 2025, making apps discoverable directly inside ChatGPT and marking a clear shift away from the older GPT Store model. On December 17, 2025, OpenAI renamed "Connectors" to "Apps" outright and moved the system onto MCP, the Model Context Protocol.

MCP is the piece that actually makes a directory possible, so it's worth understanding in plain terms. Anthropic introduced it in late 2024 as an open standard, and it's best pictured as USB-C for AI: one universal plug so an assistant can talk to outside databases, tools, and services instead of every integration being a custom, one-off job. By January 2026, ChatGPT and Claude had jointly announced support for MCP Apps, so the standard isn't locked to one company's assistant.

Here's the constraint that shapes everything downstream: ChatGPT only talks to remote HTTPS endpoints. Local servers, the kind some coding tools spin up on their own, are off the table entirely. That single fact rules out certain build paths before a founder even starts, and it's worth knowing on day one instead of discovering it after an afternoon of wasted prompting.

What your directory's database schema needs to cover before you write a prompt

Schema design sounds like a developer's term, but really, it's just answering: what does one entry in this directory look like, and what does it carry?

Before typing a prompt, a founder needs answers to a few questions. What counts as one listing: a restaurant, a freelancer, a local plumber, a SaaS tool? What information does each one need: name, category, location, a short description, contact info, maybe an image URL or a price range? Which of those fields will people actually search or filter by, because those fields need to be indexed, not just stored somewhere. And there's a bigger structural fork underneath all of it: will listings come from the founder only, or from the public, and does the directory need user accounts at all.

A starter schema for a local business directory might look like this: business_name, category, address, phone, website, description, an approved boolean, and created_at. That approved field does more work than it looks like. Without it, anything a stranger submits goes live the second they hit send, and that's rarely what a founder actually wants, no matter how much they trust their audience on day one.

None of this matters if the data doesn't survive past the conversation, and this is the persistence problem, which wrecks more first-time builds than any schema mistake: if the tool generating the app doesn't include a real, standing database, the schema only exists inside that chat session. Close the tab, and the entries are gone.

There's a sizing decision hiding in here too. A spreadsheet-style database like Airtable is intuitive and fast to set up, but it caps at 50,000 records on its Pro plan. A relational database like Postgres, often paired with something like Supabase, handles volumes in the millions without blinking. Pick based on how big the founder actually expects this to get, not how big it feels right now.

How to prompt ChatGPT to build a directory app, step by step

ChatGPT builds better apps when the prompt describes the outcome wanted, not the code to write. Founders who try to sketch pseudo-code in their prompts usually get worse results than founders who just describe, in plain language, what the thing should do. That's counterintuitive to anyone who assumes more technical phrasing means a better result.

Start by describing the app in one sentence, then list the schema right after it: "Build me a directory app for local coffee shops. Each listing should have: name, neighborhood, description, website, and a category (café, roastery, or drive-through)." That specificity matters more than it looks like it should. ChatGPT has no way to guess which categories matter to a founder's particular niche, and spelling them out up front saves three rounds of back-and-forth later.

From there, list the user-facing features directly: a search bar for name or keyword, a filter by category or location, individual pages for each listing at their own clean URL, and, if listings will be user-submitted, a submission form plus some kind of admin view.

Persistence needs to be named outright, never assumed. A line like "the listings should be stored in a database so they persist between sessions and are accessible at a public URL" forces the issue. If the platform has a database built in, name it. If it's unclear, ask directly what storage method is in use and confirm it isn't sitting in memory, because in-memory storage vanishes the moment the session ends.

Last, ask for a shareable link, not a preview, since there's a real difference between something that renders inside the builder's own window and something anyone with the URL can open on their phone. That difference is the actual deliverable.

Iteration from there is straightforward: change the layout, add a field, make a filter bar sticky, all through follow-up prompts instead of starting over. When something breaks, describing what's visibly wrong on screen gets better results than trying to diagnose the underlying code. The founder's job is to report symptoms, not prescribe fixes.

The infrastructure gap: why code generation alone doesn't give you a live directory

Generating an app produces files, logic, a schema on paper. A live app needs a server actually running that code, a database holding real data, a domain people can type in, and authentication if any login is involved. Those are not the same deliverable, and this is exactly where non-technical builders get stuck after doing everything right up to this point.

The self-managed route means taking generated code and deploying it to a hosting provider, wiring up a database, configuring environment variables by hand. Each step demands a technical judgment call, usually its own separate subscription. The AI did its job, but the infrastructure is still a blank page, and nobody warned the founder that this second job existed.

"All-in-one," in practice, means four things bundled together instead of assembled piece by piece: backend logic that handles submissions and filtering, a database that persists and scales, hosting that serves the app at a working URL without manual deployment, and authentication that controls who can submit or edit listings.

Writing code isn't the bottleneck anymore, but deploying it and keeping it running is, and that's the part almost nobody budgets time for.

All-in-one platforms vs. stitched tools for a directory: what the tradeoffs actually look like

Stitching tools together is a legitimate path, though it's also, for most directory founders, the wrong default, and it's worth saying that plainly instead of pretending both routes are equally sound.

A common combination: Airtable for the data, Webflow for the front end, a sync tool like Whalesync connecting the two in real time. Webflow gives pixel-level control over layout. Airtable makes structured data feel familiar, like a spreadsheet. Together they support strong programmatic SEO. Still, Airtable's 50,000-record ceiling on its Pro plan is a hard wall for any directory expecting real volume, and running three separate subscriptions means three separate points of failure. If the sync between Airtable and Webflow breaks, listings can disappear from the live site without any obvious signal to the founder. This path only makes sense for founders who want deep design control and are willing to babysit several moving parts at once.

The all-in-one approach folds database, backend, hosting, and auth into one place, provisioned automatically instead of assembled by hand, platforms like Floot, a Y Combinator-backed MCP connector that works inside Claude and ChatGPT, take this route. Base44, acquired by Wix for $80 million in 2025, is a working example of the all-in-one category: the platform bundles database, authentication, and hosting into a single environment rather than requiring them to be assembled separately. There's a real cost to that convenience, though, since the backend runs on proprietary infrastructure, so moving it elsewhere later means real rework, not a clean export.

For a directory built conversationally through ChatGPT or Claude, the right all-in-one platform needs three things as defaults, not add-ons: an actual persistent database, one-click deployment to a shareable URL, and built-in user management. Anything missing one of those three isn't really all-in-one, whatever the marketing says.

This is where MCP-connected builders earn their place. Plug an MCP connector into ChatGPT or Claude, and the conversation itself can drive the entire build, front end, back end, database, integrations, without ever leaving the chat window. That collapses the infrastructure gap almost entirely: the builder handles deployment, the founder handles the idea. Platforms in the MCP connector category exist specifically for this, built for founders who need production-quality infrastructure rather than a toy that only works in a demo.

If the directory is expected to grow past a few hundred listings, needs open submissions, or has to be live at a real URL from day one, stitching tools together is the slower, more expensive path. The all-in-one or MCP-connected route wins that comparison almost every time, and treating it as a coin flip does founders a disservice.

Making directory listings discoverable: search, filtering, and slug-based URLs

A directory has exactly two jobs: help the person looking for something find it fast, and get found by search engines in the first place. Miss either one and the directory just sits there, unused, no matter how clean the design is.

Search and filtering need to be spelled out in the prompt, not assumed: search by name and keyword, filter by category, sort by newest or alphabetical. Filters that actually work in the interface depend on those fields being indexed in the database, and that's worth stating outright rather than hoping the AI infers it.

Each listing needs its own page at a clean, readable URL, something like /listings/blue-bottle-coffee, not a popup modal and not a messy query string tacked onto the homepage address. This isn't a cosmetic preference. Individual pages can rank for specific searches, "best coffee in Oakland" being the obvious example, while a single page that loads everything through JavaScript often can't be indexed the same way at all. Say it directly in the prompt: "each listing should have its own page at a unique URL that search engines can crawl."

Get this right across hundreds of listings, and a niche directory has one of the fastest realistic paths to organic search traffic available to it. That only holds, though, if the underlying infrastructure supports server-side rendering or static generation. Client-side JavaScript alone won't cut it for search engines trying to crawl the pages, and this is exactly where a lot of AI-generated directories quietly fail without anyone noticing until traffic never shows up.

One more thing that gets skipped constantly: meta title and description fields belong in the schema from the start, not bolted on after the directory is already live.

Handling user submissions and admin controls without writing backend logic

There are really only two models for how content gets into a directory. Admin-only means the founder adds every listing by hand: simple, no authentication needed from anyone submitting, but it caps out at whatever one person can manage. User-submitted means the public can add listings, subject to review, and that scales the content without demanding more of the founder's time.

Technically, user submissions need a public form, a pending-or-approved status field in the database (this is exactly why that boolean from the schema section matters), and an admin view where the founder can see what's waiting and approve or reject it.

The prompt for this can be direct: "Add a submission form that saves new listings with a status of 'pending.' Build an admin panel where I can approve or reject submissions before they appear publicly."

Authentication is its own decision branch: does a submitter need an account, or is anonymous submission fine for this directory? If accounts make sense, the prompt should ask for registration, login, and the ability for users to edit listings they've already submitted. Google OAuth login cuts friction for submitters substantially, and it's worth naming by name if the platform supports it, rather than settling for whatever default login flow gets generated.

Once accounts and submissions work, there's a natural next move: a paid "featured listing" tier, or a submission fee handled through Stripe. The same infrastructure that manages authentication usually handles payments too, if the platform includes it, which makes it the next prompt, not a whole new project.

From working app to live product: deployment, ownership, and what happens next

The last mile is getting a shareable URL that belongs to the founder, not one buried three folders deep in the builder's own preview domain.

A few things need confirming before calling any of this done. Listings need to persist after the browser closes and the session ends, not just while the tab stays open. The URL needs to work for someone who has never touched the builder and has no account there. The submission form needs to actually write to the real, persistent database, not a temporary holding pen that resets on the next deploy.

None of this is exotic. It's the difference between a demo that impresses in a chat window and a directory that strangers can find, use, and submit to at two in the morning without the founder anywhere nearby. That's the actual bar. Schema, persistence, discoverability, submissions: every piece covered here exists to clear it, and skipping any one of them is how a working demo dies quietly instead of becoming a product.

Sources

  1. marsbased.com

More in App Building Tutorials