Build with AI

How to build a startup directory website with OpenAI Codex

Own the directory instead of renting it by the month. A filterable list of startups, news articles with a page each, a funding rounds tracker whose totals stay right, and an admin where you publish all of it. Describe it one task at a time in plain language and Codex writes the site, showing you each change before it stays.

September 2026 · 46 min read · Updated September 2026

OpenAI Codex

$ Build a startup directory website: a filterable list of companies with their funding stage and total raised, news articles with a page each, a funding rounds tracker whose totals the database keeps, and an admin where startups, rounds, articles, categories and tags are added and published. Nothing is public until an admin publishes it.

  • Publish rule proven first
  • Directory and admin written
  • Ready for your review
You describe it, Codex builds it
Start here

Overview & core architecture

A startup directory is a hand-picked list of companies, equipped with filters to help you find them. It includes news updates to explain recent changes and funding data to show which startups are growing. Instead of letting companies submit their own profiles, everything is carefully managed and edited by admins to ensure quality.

Usually, if you want to build a directory like this, you have to rent a platform. Website builders charge a monthly fee, no-code platforms charge based on how many records or users you have, and database services charge per team member just to read the data. Most other products on the market use one of these restrictive pricing models.

This template is much simpler: it consists of a secure database and a website connected to it. The public website allows anyone to browse published startups, funding rounds, and news articles using handy filters. Meanwhile, a hidden admin panel is where your team can easily manage the companies, tags, categories, and content, and only authorized admins can make changes.

The biggest difference is how you pay. There are no limits on the number of listings, records, or users. Adding your hundredth company costs exactly the same as adding your first. Your only running costs are a database and hosting, which both offer generous free plans to start. The only real limitation is your own time: because this directory focuses on quality, everything is added manually by someone you trust, rather than being automatically pulled from a feed.

Simple database security

Our security setup basically enforces two things: the public can only see published content, and admins can manage everything. Because this security rule lives deep inside the database, a visual bug on the website can never accidentally show a draft to the public. The database simply won’t allow the private data to be loaded.

Curated instead of crowdsourced

Companies cannot automatically add themselves to the list. An admin has to create the profile, assign categories and tags, add funding data, and publish it when it’s perfect. This takes more effort than an open submission form, but it’s exactly what makes a specialized directory trustworthy and valuable to read.

Structured data instead of plain text

Funding details are saved as structured records (like stage, amount, date, and investors) rather than just paragraphs of text. The database automatically updates the company’s total funding whenever a round changes. This organized approach is what allows your visitors to easily filter startups by specific numbers and investment stages.

What you are building

The parts every startup directory is built from

Six core blocks make up the platform. Start by building the main directory first to test your access rules. You can easily prompt any AI coding tool to build these components using simple language.

01

Filterable startup directory

A searchable grid of company cards with filters for category, funding stage, total raised, and location. Visitors can sort listings by newest additions or largest funding rounds and click any card to view full details, links, and history. Only active, published companies are visible.

02

News and articles

A dedicated blog section listing published stories with custom URLs, cover images, categories, and tags. Drafts remain completely hidden from the public until an admin publishes them.

03

Funding rounds tracker

Tracks every funding event with details on stage, amount, date, investors, and company valuation. The database automatically updates a company’s total funding whenever a round is added or changed, allowing visitors to filter by specific funding amounts.

04

Admin CMS for all public content

A central dashboard displaying key platform stats alongside simple management screens. Admins can add, edit, archive, or delete startups and articles, manage categories and tags, and switch user roles between admin and viewer in one click.

05

Secure image storage with limits

Organized storage folders with automatic file-type and size limits (5 MB for logos, 10 MB for covers and article graphics). Built-in security rules check user permissions before any file is saved to prevent unauthorized uploads.

06

Landing page and interactive demo mode

An engaging homepage highlighting key sectors and trends, paired with a safe demo mode. Visitors can explore the admin interface without creating an account because simulated changes are blocked from saving to the live database.

Build vs buy

Own the directory or rent it by the month

Every product below rents you the shelf your directory sits on, and each one meters it differently: per site per month, per item in a content system, per record and app user, or per seat for data you may not republish. A directory you own has none of those meters, which is the thing to hold on to while you read the table.

Build your own

Own the directory outright: the companies, rounds and articles sit in a database you control, the site is a static build you can put on any host, and the only bills are a database plan and hosting that both start free. Your AI coding tool writes the publish rules, the admin and the funding arithmetic from a plain description.

  • No meter on listings, items, records or seats, so the hundredth company costs what the first one did
  • Your own filters, categories and stages, decided by you rather than picked from a builder’s menu
  • Funding rounds as structured rows with totals the database keeps right, not a text field
  • A publish switch enforced in the database, so a draft never leaks through a forgotten filter
  • Your own domain, your own design and no builder badge in the footer
  • The code and the records are yours outright, and can move to any host or any Postgres

Rent the software

Brilliant Directories · eDirectory · Webflow · Softr · Dealroom

Renting buys you a site this afternoon, with somebody else keeping the software patched and the servers up. What it costs is a recurring price that follows the size of the thing you built, and a ceiling you did not choose.

  • Live today, with hosting, updates and support handled by the vendor
  • Member accounts and payment features on the directory builders that this template does not have
  • A monthly price per site, or per item, record or seat, that grows as the directory does
  • Caps on records, items or app users that decide when the next tier is due
  • Your design inside the builder’s theme system, and your data inside its export
  • A data subscription lets you read funding rounds, not publish them as your own directory
Brilliant DirectoriesA "Monthly Plan" at "$ 145" a month, or a "Lifetime Website Plan" at "$ 1,450" as a "One-Time Payment", both to "Manage 100,000 Members" with "100 Instant Business Records" on the monthly plan and "1,000" on the lifetime one

The plainest version of renting the shelf: one directory, one price a month, whatever is in it. The lifetime plan is the closest any row comes to owning something, and it is still a licence to run your directory on somebody else’s software, with the page warning that the lifetime option is being withdrawn. Read this row for what a directory builder with member accounts and payments built in costs, because those are the two things this template does not have.

brilliantdirectories.com · checked September 2026

eDirectory"Professional" at "$99 /month" and "Enterprise" at "$199 /month", both with "Unlimited listings" and "Save 25% on yearly plans", or the source code outright at "$1,499 /one time payment"

The row with the honest comparison in it. eDirectory sells the same software two ways, rented by the month with no cap on listings, or bought once as source you install yourself, and the second is the shape of what this guide builds. The one-time price is roughly what fourteen months of the entry plan cost, which is the arithmetic every rent-or-own decision on this page comes down to.

edirectory.com · checked September 2026

WebflowA free "Starter" site with 50 CMS items, "Basic" at "$ 15 /mo" "billed yearly" with no CMS, and "Premium" at "$ 25 /mo" "billed yearly" with "Webflow CMS" and 20,000 CMS items

A general site builder where every company and every article is one item in its content system, so the meter is the item count and the tier is what raises it. The price is low for a small directory and the ceiling is generous, and what you are renting is the design tool and the host rather than a directory: filters, funding totals and an admin with roles are yours to assemble inside it. Monthly billing exists and shows different figures, which the page renders only once you toggle it.

webflow.com · checked September 2026

Softr"Basic" at "$ 19" "/month" with 5K database records, "Pro" at "$ 99" "/month" with 50K, and "Business" at "$ 329" "/month" with 500K, shown beside a "Monthly | Yearly 2 months off" toggle

A no-code app builder priced by records and by the people who sign in, which is the meter closest to what a directory actually grows by. A real directory lands on Pro rather than Basic, because Basic caps app users and keeps the vendor’s branding on the site. The page does not say in its static text which billing basis those figures are, so read them as the monthly price at most and check the toggle before you budget.

softr.io · checked September 2026

Dealroom"Premium" at "€12,600 /year" with "10,000 export credits per user" and "Premium Plus" at "€17,000 /year", each "Starting from 3 seats", priced in euros only

The other thing a reader might rent instead of building: not the shelf but the data on it. Dealroom sells the funding rounds this template asks you to type in, by the seat and by the year, and what you buy is the right to read and export them, not to publish them as your own directory. Quoted in euros because that is the only currency the page offers. Read it for the scale of what somebody else’s data costs, and for why the funding tracker here is filled by hand.

dealroom.co · checked September 2026

Rule of thumb: if you want a directory this week and do not care whose software it runs on, rent one. Brilliant Directories or eDirectory will have you live before this guide is finished. If the directory is the product, or the thing that brings people to your newsletter, your fund or your community, the shelf is worth owning, because the meters above are exactly where a growing directory pays and a curated list of companies with their rounds is an asset you should be able to move, export and redesign at will. The honest middle case is a directory whose value is somebody else’s data. There the answer is a subscription, because you may read Dealroom’s rounds and you may not republish them.

No dev needed

Why build with Codex

Skip the directory software and the server engineering. Describe the companies, the news and the funding rounds you want to track, say who may edit them, and everything a visitor sees is read from a database you own without you writing server code.

Codex closes that gap by working the way a developer would, just faster. The whole workflow becomes a simple loop:

The build loop
1

Describe

Tell Codex what you want, in plain language.

2

Build

It edits the real project files, backend and auth and UI, rather than replying in a chat.

3

Check

Run the app yourself and confirm the change works.

Repeat

Describe the next change.

Loop back to Describe

None of that loop needs a computer-science background, which is why one person can take an idea to a working app over a handful of focused sessions.

Three hard partshandled for you

The data model, authentication, and access rules are the pieces that make software like this genuinely hard to build alone. Describe them and Codex scaffolds all three, leaving mostly screens to build on top.

Any language is the interface

There’s no code to write, and no requirement to describe it in English. Ask for a new field, a renamed step, or an AI summary in whatever language you think in, and Codex implements it.

Local files it edits directly

Codex works on the project on your own disk rather than a copy somewhere else, so what it changes is exactly what you see when you run the app. Point it at the handful of files that matter and it stays fast and focused.

What it costs

Pay a developer, or do it with AI

Running a directory is practically free on starter tiers (database + host). Your only real investment is the build itself: pay for developer hours or build it faster with AI.

Hire a developer

Custom build, from scratch
Developer
~$9.8k-$39k
Supabase (backend)
Free tier · $25/mo (Pro plan)*
Hosting
$0 free tier
Build time
~195 hrs of their work

~$9.8k-$39k for the build, then from $25/mo once the directory is live

Our ~195-hour estimate, costed against the rate survey linked below, whose bands run from a $45-$75/hr global freelance average up through $100-$150+/hr for senior US developers, before the 20-40% an agency adds, which brackets the range at roughly $50/hr and $200/hr. Most of those hours go on the admin, the publish rules and the funding arithmetic, none of which shows in a screenshot of the directory.

Build it with Codex

From scratch, with Codex
Codex
~$20/month (Plus) to ~$200/month (Pro)
Backend (Supabase)
Free tier · $25/month (Pro plan)*
Hosting
$0 on a free tier
Your time
~93 hrs

~$20-$200/month while you build, then whichever plan you keep using

Codex itself is free to install. The cost sits in the ChatGPT plan behind it, or in API usage if you sign in with a key instead. Plus, around $20/month, covers a template import or a short build. A from-scratch build that runs for weeks usually needs Pro’s top usage-multiplier tier instead, which lands around $100 to $200 a month. The fee doesn’t shrink when you start from a template the way a per-hour developer bill would: the template changes how many of the hours in the estimator above you actually spend, not which ChatGPT plan you’re paying for.

* On this template the free-tier lines to watch are images and the pause. The free plan includes 1 GB of file storage, and a cover or gallery image may be up to 10 MB, so a directory with a few hundred companies and their pictures reaches it. It also pauses a project after a week without activity, and a directory nobody edits for a week is normal. Pro, from $25/mo, lifts storage to 100 GB, ends the pause and keeps a daily backup for 7 days, with spend caps on by default.

Prices and rates from supabase.com, developex.com and learn.chatgpt.com, checked September 2026.

Plan first

Decide before you build

Six key choices to make before you write any code. Two affect your site’s search engine visibility, while another determines whether you manage listings yourself or let companies submit them.

01

Who adds a company, you or the company?

By default, only admins can add startups. This keeps the directory carefully curated, but makes you a bottleneck. Decide early if your initial version needs a public submission form with a review queue, because open submissions require extra screens, database tables, and spam management.

02

Does each company get its own page?

Currently, clicking a company opens a slide-over panel on the main page, meaning individual startups don’t have unique web addresses for search engines to index. Giving each company its own dedicated URL is a major structural change, so decide your SEO strategy before building screens.

03

Which categories, stages and tags?

Funding stages are pre-set in the database, while categories live in an admin table. However, the sidebar filters are currently hardcoded in the layout, so new admin categories won’t appear until you update the code. Decide your taxonomy early and whether filters should pull dynamically from the database.

04

Where does the funding data come from?

In this template, admins enter funding rounds manually and the database calculates totals. Automated data feeds or CSV imports require extra custom development, and paid data feeds usually restrict republication. Decide whether to enter data manually, import it, or leave funding out completely.

05

How much of the news is yours to write?

Articles currently use simple plain text with basic image and tag support, without a built-in newsletter. If publishing is a central focus, decide if you need rich text editing, multi-author permissions, or automated email sends. A regularly updated news section deserves more than a basic text box.

06

How big will the directory get?

Search and filters run directly inside the visitor’s browser. This is extremely fast for hundreds of companies, but fails at scale for tens of thousands. Decide your target size early so you can move filtering logic to the database and set storage limits before performance drops.

Approaches

Comparing your build options

Putting a grid of company cards on a page is fast. The hard part is everything behind it: a publish rule the database enforces, funding totals that stay right when a round changes, an admin that can add, archive and delete without leaving orphans, and images that are checked before they are stored. Here are three ways to build the exact same site.

~195 hrsBuilding by hand

The card grid goes up in a day. The weeks go on the parts nobody sees in a screenshot: a publish switch the database enforces rather than the screen, a total that stays right when a round is edited or deleted, an admin that can archive and delete a company without orphaning its rounds and tags, and image uploads that reject the wrong file before it costs you storage.

~145 hrsGeneric UI starter kit

A kit gives you a card grid, a filter sidebar and an admin table. It has never heard of a published state, a funding round or a role, so the rules that decide what a stranger can see, the totals, and the back office that keeps the two in step start from nothing.

~93 hrsAI-powered development with OpenAI Codex

You hand Codex one task at a time and it edits the real files, the tables, the access rules, the screens and the admin, and shows you the change before it stays. The check that matters: edit a funding round in the admin and confirm the company’s total on its card moved with it.

Interactive calculator

Estimate your exact build timeframe

Select the components you need to calculate your development timeline. Disabling unused features (like news or funding tracking) provides a faster, tailored estimate.

What your startup directory needs

Your estimate

93 hrs

start to finish

Based on the 7 of 7 features you’ve selected, plus ~21h of groundwork. Toggle any on the left to watch the number move, and open the groundwork row to untick what you have already, such as a database that is already running or going live if you are only building a mock-up for now.

A rough estimate, not a quote. Real time depends on how much you customize and how clean your data is.

Setting up your workspace

Let’s set up the tools you need

Before step 01, four things go on your computer. It takes about 15 minutes in total, and none of it is coding. Three are ordinary installers, and the fourth is a ChatGPT plan with Codex access switched on. After that, you build by describing what you want in plain language.

1

OpenAI Codex

Cost: Free to install · needs a paid plan to build with

Your main AI assistant. The app itself costs nothing and installs with a single command from OpenAI, then runs in your Terminal. What it costs to use is the next card: every request spends the usage allowance on your ChatGPT plan, and the free plan’s allowance is small enough that a build of this size stops early. Codex is also built into an extension for popular code editors and into the ChatGPT desktop app, which can hand a longer task off to Codex cloud to keep running in an isolated environment while you do something else.

Install Codex CLI
2

ChatGPT plan

Cost: ~$20/month (Plus) or from ~$100/month (Pro)

Codex is technically included on the free ChatGPT plan too, but Free’s usage is the tightest of any tier. OpenAI doesn’t publish Free’s own cap, only that every paid tier gets a larger multiple of it, so treat Free as a way to try Codex rather than to build with it. ChatGPT Plus, around $20/month, is the realistic starting point, and a long, from-scratch build tends to need the top ChatGPT Pro tier, priced by usage multiplier at roughly $100 to $200/month. Codex can also run on pay-as-you-go API billing instead of a ChatGPT plan, if you’d rather pay per token than hold a subscription.

Compare ChatGPT plans
3

Node.js engine

Cost: Free

The engine that runs your app on your own computer. You never have to learn how it works: download the version marked LTS (the most stable one), install it, and forget about it.

Download Node.js (LTS)
4

Supabase (database)

Cost: Free to start

Where your project keeps its data. Install it, then sign in once by running supabase login. Words like migrations and row-level security turn up later in the guide, and Codex writes those parts for you.

Install Supabase CLI

Nothing here is worth memorizing. These four just need to exist on your machine. From step 01 on, you say what you want and Codex runs the commands.

Step by step

Build your startup directory, one Codex task at a time

You describe a task, Codex writes the files and runs the commands, and you read what changed. Two things shape the order: the publish rule lands in the database before any screen exists, and the schema is read before it runs, because every later task reads these tables.

  1. 01

    Write AGENTS.md before anything is scaffolded

    Codex loads AGENTS.md at the start of every task, so the two rules that matter most on this build (drafts are hidden by the database, only admins write) are loaded before any code exists to break them.

    PromptSet up the project
    Start by writing an AGENTS.md at the project root: the stack is React 18, Vite, TypeScript, Tailwind and the Supabase JS client, and this project is a startup directory with news and a funding tracker. Fix the vocabulary (startups, funding rounds, categories, tags, articles, admins) and record two standing constraints: nothing is public until its status is published and the database enforces that rather than the screen, and only an admin may add, change or delete anything. You load that file automatically at the start of every later task. Then scaffold the project: a typed Supabase client under src/lib reading VITE_SUPABASE_URL and the publishable key (the sb_publishable_… key that replaced the older anon key) from .env, with .env confirmed present in .gitignore.

    The two constraints are the ones worth writing down. Filtering drafts in the component and letting any signed-in user edit are both reasonable-sounding shortcuts, and both leak on the first day a stranger tries.

  2. 02

    Have Codex write the schema and the public rules, and read the SQL before it runs

    Ten tables and a trigger, then the half of the access rules that decides what a stranger sees. Everything later reads these tables, which is exactly why they are worth reading rather than approving on trust.

    PromptWrite the data model and the public rules
    Write the migrations for this site and show me the SQL before running it. Categories and tags with a name and slug. Startups with name, slug, short and long descriptions, a category, a funding stage from a fixed list (Seed, Series A through Series E+, IPO, Grant, Acquisition), a published or unpublished status defaulting to unpublished, an archived flag, logo and cover addresses, a gallery, team size, city and country, external links, and total_funding and funding_amount_latest columns. A startup_tags join table and a startup_social_links table. Funding rounds with stage, amount, date, lead investor, co-investors, valuations and notes, and a trigger that recalculates the startup’s total and latest raise on insert, update and delete. Articles with title, slug, body, featured image, category, author, status and published date, and a news_tags join table. Enable row-level security everywhere and write the public half: anyone may read categories and tags, a startup and its rounds and links when published and not archived, and a published article. Seed three companies with a round each, one unpublished, and show me an anonymous query returning two.

    Reading the SQL here costs ten minutes. Finding a draft on the public site after a hundred companies are in costs a support conversation with every founder who saw it.

  3. 03

    Narrow permissions, then add sign-in, roles and the admin gate

    This task touches authentication and the rules that let an admin write, which is exactly the kind of change worth scoping Codex down for rather than leaving whatever settings you use for routine edits.

    PromptAdd auth, roles and the admin rules
    This task touches authentication, so narrow your permissions to just this one. Wire in Supabase Auth with email and password: a sign-in screen, logout, a persisted session and a useUser hook, and no public sign-up screen. Add a user_roles table with admin and viewer roles, a security-definer has_role function, and a trigger that gives every new account a profile row and the viewer role. Write the admin half of every access rule so an admin may read, add, change and delete every row in every table, drafts included. Build an admin layout that redirects anyone without the admin role to sign-in. Give me the one SQL statement that promotes my account, and show me that a viewer sees exactly what an anonymous visitor sees.

    Two roles, and the viewer can do nothing the public cannot. One clean line between the public and the admins beats three roles with a gap.

  4. 04

    Give the directory its own task, and the funding page the next one

    The public side is the screen visitors live on and the funding page is a second view of the same rows. Keep them as two tasks so each change is small enough to read.

    PromptBuild the directory
    Build the public directory page: a grid of company cards with the logo, name, one-line description, category, stage and total raised, a filter sidebar with search over name and description, categories, funding stages, a minimum and maximum amount raised and a location field, a sort menu (newest, oldest, most funded, least funded, A to Z, Z to A), and a live result count with a clear-all button. A card opens a detail view with the full description, links and the rounds in date order, at an address of its own so it can be shared. Read only published, unarchived companies. Walk me through the component structure before you build it.
    PromptBuild the funding page
    Build the funding page: every round with its company, stage, amount, date and investors, filterable by stage and by a maximum amount, sorted by amount by default, reading only rounds whose company is published and not archived. Add a link from each row to the company’s own address.

    Ask for the address per company in the first task. The template opens a panel instead, and it is the second decision above for a reason.

  5. 05

    Build the news section and the admin, two tasks again

    Articles with a page each, then the back office: one screen per table, four buckets with limits, and the one function that checks a logo before it is stored.

    PromptBuild the news section
    Build the news section: a list of published articles with the featured image, title, category and date, and a page per article at /news/its-slug showing the featured image and the body with its line breaks kept, reading only published rows.
    PromptBuild the admin and the image storage
    Build the admin behind the admin layout: a dashboard with counts of startups, articles and accounts, a startups screen with add and edit dialogs, add a funding round, publish or unpublish, archive, and delete a company together with its rounds, links and tags, then articles, categories, tags, and a users screen where a role is switched between admin and viewer. Create four storage buckets (logos up to 5 MB, covers, gallery and article images up to 10 MB, image types only), readable by anyone and writable only by admins. Write an upload-logo edge function that verifies the caller’s session and admin role, checks the startup exists and the file is under 5 MB, uploads with the service key and writes the logo address to the startup. Other images upload directly under the bucket rules.

    Read the delete. A company that leaves the directory must take its rounds, tags and links with it, and it is one line in the schema to get wrong.

  6. 06
    Destination

    Hand the landing page and the meta to a cloud run, then test it yourself

    The marketing page, the titles and share cards, and demo mode are self-contained and well specified, a reasonable set to hand to a cloud run while you do something else, provided you read the change before it merges.

    PromptAdd the landing page, demo mode, and test
    Three remaining pieces. A marketing landing page with a hero, a sector section, a funding section, a trends section and a closing call to action, written as copy I can edit rather than pulled from the database. A title and description and a share card for every public page. A demo mode switch on the sign-in screen that opens the admin with every write intercepted in the browser and a banner saying changes are not saved. When they are in, run the site and take it end to end yourself as a stranger: confirm the unpublished company from step 02 is nowhere, confirm an article address opens directly, confirm the admin redirects to sign-in, then sign in, publish that company, and confirm it appears, and fix whatever does not hold up.
Authentication & security

Protecting your site: sign-in rules and secret keys

A directory has fewer security risks than complex web apps, but three key areas still require protection: admin credentials, draft content visibility, and database access keys. Here are the security rules to apply before going live.

Use your backend’s built-in authentication

Sign-in comes from the authentication service attached to your database, with a trigger that gives every new account a profile and the viewer role. The template ships a sign-in screen and no sign-up screen, so you create the first admin in the Supabase dashboard and promote it with one SQL statement. Visitors never need an account at all.

Public access restricted to published records

Database security rules dictate that unauthenticated visitors can only read categories, tags, published articles, and active startups with their funding rounds. Admins retain full access. Even if a webpage forgets to filter content, drafts won’t leak because the database refuses to return them.

Roles managed in a dedicated table

Admin status is stored in a separate roles table rather than on user profile records. A database function checks the role before the security policies run. New accounts default to a viewer role with basic public permissions, making role upgrades or downgrades simple single-row database updates.

Logo uploads checked on the server

The logo upload goes through a server-side function that confirms the caller is signed in and is an admin, checks the company exists and the file is under 5 MB, and only then uses the service key to store the image and write its address to the company. Cover, gallery and article images upload directly under the same admin-only storage rules.

Interactive demo mode without authentication

Demo mode lets visitors explore admin screens without logging in. The browser intercepts write requests locally, giving the illusion of changes without sending data to the server (where security rules would reject it anyway). Remove this feature if you prefer to keep admin screens completely private.

Remove default migrations and environment keys

The starter template includes default migration files and environment keys pointing to the original project. Delete default password reset migrations before initializing your database, replace all environment variables with your own secrets, and never hardcode credentials inside migration files.

Enable daily backups before the catalogue is worth anything

The free tier keeps no backups, so while you fill the directory your database is the only copy of every listing and round you typed in. Daily backups kept for seven days start on Supabase Pro at $25/mo. Move to it before the directory is a week of work you would not want to redo.

PromptCheck who can see what
Review the access rules (row-level security policies) on every table. For each one, tell me in simple terms who can view, add, edit, and delete records, confirm that people can only reach their own data while the right roles can reach more, and flag anything left open that shouldn’t be.

Paste this before launch so Codex checks nobody can see data they shouldn’t.

One rule outranks everything above it: your database service key belongs on the server only, never in the app a visitor downloads and never in a repository. The publishable key is meant to be public and the access rules are what protect the data behind it, so if the service key escapes, treat it as compromised and replace it the same day.

Workflow rules

What speeds the build, and what slows it

Speeds the build

  • An AGENTS.md file at your project root: Codex reads it automatically before every task, so you never have to remind it
  • Setting Codex’s permissions once for the session, instead of approving every small edit by hand
  • Handing a long, well-scoped task to Codex cloud, so it keeps working in an isolated environment while you do something else
  • Reviewing a diff in the IDE extension, next to the code it touched, before you keep it

Slows the build

  • Leaving permissions wide open for a sensitive change instead of narrowing them for that one task
  • Skipping the AGENTS.md file, so Codex starts each new task without your conventions loaded
  • Handing Codex cloud a vague, open-ended task, where you can’t steer it mid-run the way you can in a live terminal session
  • Merging a cloud task’s changes back in without reading the diff first
Version control

Git: what it is, and why you need it

Before you build anything, meet the one tool that makes building safe. You need no coding background for it: Git remembers every version of your project, so you can try things, break things, and get back to a working state in seconds.

What Git actually is

Git is a quiet recorder that runs alongside your project. Each time you save your work it keeps a full snapshot, so the entire history of your project lives on your computer, not just whatever the files look like right now.

Why you need it

Codex asks before it edits files or runs commands, unless you widen its permissions for the session. Once you do, Git is what makes that safe: there’s always a working version to return to, so you can hand it a bigger task without the fear of losing what already works.

A commit is a save point

Each commit is a snapshot with a short note, like “added the home page”. Make one after every working step and you can jump back to any of them later.

GitHub’s beginner guide to Git

Undo anything, safely

If a change breaks something, you roll back to the last good commit instead of unpicking it by hand. It’s the safety net that keeps a Codex session low-risk even once you’ve widened its permissions.

GitHub is also where Codex can start from

Git lives on your computer. GitHub is a free, private cloud copy of the same project. Keep it private, and never commit secret keys or passwords. Once your project is pushed there, Codex cloud can pick up a task straight from a GitHub issue or repo, without you opening a terminal at all.

Create a free GitHub account

You rarely type git commands

There’s little to memorize. Ask Codex to “commit this” or “undo the last change” and it runs the git steps for you, inside whatever permission boundary you’ve set. Prefer clicking to typing? The Codex extension for your editor shows each change next to the code it touched before you keep it, and GitHub Desktop gives you plain buttons for saving and rolling back.

Get Codex
Going live

Where to host your application

Hosting gives your app a home on the internet so anyone can open it via a web link. Choose a service below to make your site live. (Your database, logins, and business records are stored separately in Supabase, covered below).

HostBest forNotesFree tier
VercelOne-click deploysConnect the repository and every push publishes. The template already includes the routing file Vercel needs, so a shared article address opens the article rather than the home page. Hobby is for personal use only, and a directory that runs ads, sells listings or belongs to a fund is commercial, so it belongs on Pro at $20/user/mo.Pro from $20/user/mo (Hobby is non-commercial)
NetlifyDrag-and-drop or GitDrop the built folder onto the page, or link the repository, and the site is live in a minute. Accept the redirect rule Netlify offers, because without it an article link from a search result opens a not-found page.Free tier
Cloudflare PagesReaders in many countriesServes the site from wherever the visitor is, which suits a directory whose readers are spread across the countries its startups are in. The front end is a small static folder, and the listings arrive from your database behind it.Generous free tier
GitHub PagesNot this siteFree hosting straight from a GitHub project, listed here to rule it out: the free tier requires a public repository, and the environment file naming your database sits in this project beside the code.Free from a public repo only
Firebase HostingTeams already on GoogleOne command per release after a short setup, and its own config file is where the routing rewrite goes. It suits a team whose analytics and accounts already live with Google, and offers a directory nothing the others do not.Free Spark tier
AWS Amplify HostingTeams already on AWSDeploys from the AWS console and wants the routing rewrite before an article address resolves. Choose it when the rest of your billing already lives on AWS, since a static folder does not care where it is served from.Free tier (build + hosting)
SurgePublish from the terminalOne command from the terminal and the built folder is online, with no repository involved. Fine for showing a client the directory before launch, wrong for the address you print in a newsletter.Free, unlimited publishing
DigitalOcean App PlatformDigitalOcean usersFor a team already on DigitalOcean, one supplier fewer: the static folder builds and serves from the same account, beside whatever else you run there.Free: 3 static sites, 1 GB/mo transfer

Two things decide this, and speed is not one of them. Does the plan allow commercial use, since a directory that runs ads, sells listings or belongs to a fund is a business and Vercel’s Hobby tier is not for one. And does a link to a single article open that article for someone arriving cold, because every host here needs one routing rule for that and the template ships the Vercel version. The host serves one small static folder. Every listing comes from your database.

An empty database shows nine fictional startups, and everything you add is hidden until you publish it. The directory falls back to a built-in sample list when it finds no published companies, and every new startup and article starts unpublished, so a fresh deployment with your first ten companies typed in shows the sample companies rather than yours. Before you launch, remove the sample fallback as the README describes, publish what should be public, and open the directory in a private window to see what a stranger sees.

Database & backend

Keep your data in Supabase

Startups, rounds, categories, tags and articles in Postgres, four image buckets, accounts for the people who edit, and the one function that checks a logo upload before the service key touches storage.

ServiceBest forNotesFree tier
SupabaseData, auth, images and the logo checkTen tables in Postgres with the publish rule written into their access policies, accounts from its auth service, four public-read storage buckets with a size limit each, and one edge function for logos. Create a free project, hand over the URL and publishable key, push the migrations and deploy the function, and it is connected. The line to watch is file storage: 1 GB on the free plan, and a single cover image may be 10 MB.Free tier, then usage-based
AI workflows

Add AI capabilities in one simple step

Securely route your AI API keys through a lightweight serverless function. Use simple prompts to automatically draft a company profile from its website, turn a funding announcement into an article and a round, tag new listings, and write the weekly digest.

Add the one function everything else goes through

The template has no AI in it and no key anywhere, which is the right starting point: one server-side function, admin-only, with the key in its secrets and a log of what each call cost. Build this first, and every prompt below is a call to it.

PromptAdd the one function everything else goes through
Add a server-side function called ai that calls my AI provider with the key held in function secrets, never in the browser. It accepts a task name and the text or fields for that task, refuses any caller who is not a signed-in admin, records every call in an ai_calls table (who, which task, tokens in and out, a cost estimate, success or failure), and returns the model’s answer as structured fields the admin screens can fill in. Add a small usage panel to the admin dashboard showing calls and estimated spend this month.

Draft a company profile from its website

Adding a startup means typing a description, picking a category and tags, and finding the location and links. Paste the website instead and let the admin correct a draft rather than write one.

PromptDraft a company profile from its website
In the add-startup dialog, add a “Draft from website” button that sends the company’s homepage text to the ai function and gets back a one-line and a paragraph description, a suggested category from my categories table, up to five tags, the city and country, and any social links it found. Fill the form with the results for the admin to edit, and never publish anything automatically.

Turn a funding announcement into an article and a round

A press release is an article and a funding round in one. Pasting it once and confirming two prefilled forms is the difference between a directory that is current and one that is a month behind.

PromptTurn a funding announcement into an article and a round
Add a “From announcement” action on the news screen that sends pasted text to the ai function and gets back a draft article (title, slug, body) and, if the text describes a raise, a funding round (stage from my stage list, amount, date, lead investor, co-investors). Show both as prefilled forms for the admin to confirm, match the article to a startup by name with a confirmation step, and leave both unpublished until the admin publishes them.

Tag and categorize listings automatically

A directory is only as filterable as its tagging is consistent, and consistency slips after the fiftieth company. Let the model suggest, and keep the admin as the one who decides.

PromptTag and categorize listings automatically
When an admin saves a startup or an article without tags, call the ai function with the description and get back a suggested category from my table and up to five tags, preferring tags that already exist. Show them as chips the admin accepts or removes before saving, and add a “Suggest tags” button on existing records so the back catalogue can be tidied a page at a time.

Write the weekly digest

The template sends no email, so the digest lands as a draft article or a block of text you paste into whatever you send with. What it saves is the hour of gathering what happened this week.

PromptWrite the weekly digest
Add a “Weekly digest” button on the admin dashboard that gathers the startups, rounds and articles published in the last seven days and asks the ai function for a short digest with a headline, one paragraph, and a bullet per raise with the amount and stage. Save it as an unpublished article and offer a copy-as-text button, since this site does not send email.

Each prompt above should pick whichever model tier fits the job: a fast, lower-cost model for high-volume work, and a stronger reasoning model for anything that weighs tradeoffs against each other. Codex’s model names change faster than this page does, so check OpenAI’s current model line-up (linked in the references below) before you build, rather than copying a name you saw once. Keep all of it behind that same ai function, so one key and one rule set covers every feature you add.

Ready-made option

Get a head start with our template

None of the steps above is compulsory, because the same directory already exists, built: the filters work, the articles publish, the rounds total up and the admin runs it. Your time goes on the companies, the categories and the name on the site.

Startup Tracker

The exact startup directory this guide builds, packaged so you can open it, point it at your own backend, and make it yours from there. A directory and news site for tracking startups, the stories about them, and the funding they raise. Visitors browse and filter companies while you manage everything from an admin panel.

React 18ViteTypeScriptTailwind CSSSupabase
Out of the box

The key benefits of starting with a template

The directory, the news section, the funding tracker and the admin already work, with the publish rule enforced in the database. Read the security section above before you go live, because two things in the download are there to be deleted.

Building the core from scratch

~93 hrs

Opening the template, already built

~1 hr

Pay Once, Own Forever. Build exactly what your team needs without renting a monthly SaaS subscription, paying per-seat fees, or dealing with platform lock-in.

A directory that filters, already wired

Cards, search, category, stage, funding and location filters, a sort menu and the result count, all read from your database, and a company opens in a side panel with its funding history. A page per company is the decision above, and it is the one change of shape the template leaves to you.

News with a page per story

Published articles listed, and each one at its own address with a featured image, a category and tags, with drafts hidden until an admin publishes them. Bodies are plain text with their line breaks kept, so rich text is an addition rather than a given.

Funding rounds with totals the database keeps

Rounds with stage, amount, date, investors and valuations, a trigger that recalculates the company’s total and latest raise on every change, and a funding page filterable by stage and amount.

An admin with roles and 36 access policies

Startups, rounds, tags, categories, articles and users each on their own admin screen, publish and archive as switches, a dashboard with counts, admin and viewer roles in their own table, and a server-side check on every logo upload.

Two things to remove before launch

The directory falls back to nine fictional companies when your database is empty, and one migration resets the seller’s own password to a known value. Both are in the README and both are deletions rather than builds. Do them before the first stranger opens the site.

Customer story

From founders who build on our templates

Finally, a template that gives you full data ownership without subscription bloat. Its clean setup makes prompting any AI tool effortless. It saved me 100+ hours of backend setup and got my directory live in several days.
Jeevan ThomasJeevan ThomasFounder & CEO, Hado.ai
Got questions?

Common questions

Not as shipped. Only an admin can add a company, which is what keeps the directory curated. A public submission form with a queue an admin approves from is the first decision above, and it is a real build: a table for submissions, a screen to review them, and something that stops the form filling with spam.

No. A company opens in a side panel over the directory, so no company has an address you could share or a search engine could list. If people will search for the companies by name, give each one a page, and do it before the directory fills, because it changes how the site is shaped.

From whoever runs the admin. A round is typed in with its stage, amount, date and investors, and the database recalculates the company’s total. Nothing arrives from a feed, and the data subscriptions that sell rounds do not let you republish them, so a directory built on this is filled by hand or by an import you build.

No. The template sends no email of its own, only the sign-in emails the authentication service sends, and it keeps no subscriber list. The digest prompt in the AI section drafts the week’s news as an article or a block of text, and you send it with whatever you already use.

No. You describe the tables, the publish rule, the accounts and the upload check in plain language, and your AI coding tool writes all of it. Your own job is creating a free Supabase project for it to point at, so the records and the images end up somewhere you own.

A database plan and a host, both starting free. Supabase Pro at $25/mo is worth it once the directory is a week of work you would not want to lose, because it adds daily backups, ends the free tier’s pause after a week without activity, and lifts file storage from 1 GB to 100 GB, which a few hundred companies with covers will need.

Only an admin. The database refuses to hand a draft to anyone else, whatever the screen asks for, and a startup also disappears from the public the moment it is archived. The viewer role a new account gets sees exactly what a visitor without an account sees.

Create the user in the Supabase dashboard, sign in with it once so the trigger gives it a profile and the viewer role, then promote it to admin with the one-line SQL statement in the README. Every admin after that is either created the same way or promoted from the users screen once they exist.

Yes, through demo mode. A visitor who switches it on can open the admin screens and click through them, and every save is intercepted in the browser and pretends to succeed. Nothing reaches the database. Turn it off, or remove it, if you would rather the back office stayed out of sight.

Because the template falls back to nine fictional startups when your database returns none, so the demo is never empty. Real published companies always win, and the fallback only shows when the database has none. Remove it before launch, following the README, so an empty directory shows an honest empty state.

Nothing here is proprietary. Startups, rounds, categories, tags and articles are ordinary PostgreSQL rows, and one standard dump moves all of them to any Postgres host, while the images are ordinary files in storage buckets you can download.

Yes. Each host in the table connects a domain you own and issues the certificate in a few clicks. Do it before you announce the directory, because the address is the thing people will bookmark and share.

No, though you will type the occasional command: installing Codex, starting the app, applying a database change. The setup section above lists what you need, with a link for each, and once it’s on your machine Codex runs most of those commands for you.

A regular ChatGPT chat can sketch ideas and write snippets, but it isn’t working on your actual project. Codex reads and edits the real files on your computer. The app you get out of it is one you can run and publish, not a preview.

On a ChatGPT plan, Codex’s usage resets on a rolling window rather than billing per token, so a heavy day of building can bump into a limit. You either wait for it to reset, move up a plan, or switch to pay-as-you-go API billing for the rest of the session. Nothing you’ve already built is lost either way, so the work only pauses.

References

Sources checked September 2026
  1. 01Pricing (monthly and lifetime plans), Brilliant Directories. brilliantdirectories.com
  2. 02Pricing (cloud plans and source licence), eDirectory. edirectory.com
  3. 03Pricing (site plans and CMS item limits), Webflow. webflow.com
  4. 04Pricing (record and app user limits), Softr. softr.io
  5. 05Pricing (Premium and Premium Plus, per seat), Dealroom. dealroom.co
  6. 06Pricing (Pro plan, pause, file storage, backups), Supabase. supabase.com
  7. 07Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
  8. 08Row Level Security, Supabase docs. supabase.com
  9. 09Pricing (plans, usage limits), ChatGPT docs. learn.chatgpt.com
  10. 10Codex CLI, ChatGPT docs. learn.chatgpt.com
  11. 11API pricing (models), OpenAI for developers. developers.openai.com
  12. 12IDE extension, ChatGPT docs. learn.chatgpt.com
  13. 13ChatGPT desktop app, ChatGPT docs. learn.chatgpt.com
  14. 14Codex cloud, ChatGPT docs. learn.chatgpt.com
  15. 15AGENTS.md, ChatGPT docs. learn.chatgpt.com

This guide is general information. Third-party prices, plan limits and market rates are quoted from the sources above and were last checked on the date shown. Vendors change them without notice, so confirm before you budget. Build hours and the cost estimates derived from them are our own estimates, not quotes. Codex, ChatGPT, and the OpenAI API are products of OpenAI. Verify current capabilities and pricing before relying on them.