DEV Community

Base31.org
Base31.org

Posted on

I Changed My Side Project’s Domain. Then I Changed What It Was For.

Changing a domain is easy.

Changing the idea underneath it is the part where you open seventeen tabs and quietly question your previous decisions.

My project used to be base31. Now it lives at benlaunches.icu, and the idea has changed too.

The new direction is Boring Internet: a quiet directory of launched sites.

Not a giant platform. Not a feed that requires your full attention. Just a place to discover things people actually shipped.

The name is Boring Internet.

Ideally, the websites are not.

A launch should have somewhere to land

There is something satisfying about a project that has made it past the “I should build this” stage.

Someone picked a name. Wrote the code. Dealt with the weird layout problem. Changed the button color six times. Deployed it.

Now it has a URL.

That doesn’t necessarily mean the project is huge, polished, or profitable. It means you can open it.

That’s the part I want this version of the directory to focus on: launched sites with enough context to help someone decide whether to visit.

Each listing gets its own page with its description, category, tags, launch date, votes, rank, and the collections it belongs to.

If a listing has extra details—like pricing, a tagline, or an FAQ—those can appear there too.

The goal is to help people understand what they’re clicking before sending them somewhere else.

A radical concept, I know.

“This week” actually means this week

One feature I wanted was a small “Launches this week” ticker.

Instead of maintaining a separate list by hand, it uses the launch dates already attached to the sites.

It selects the newest listings launched in the last seven days, shows up to five, and rotates through them.

That sounds like a tiny feature, and it is.

But it’s also the sort of thing I like building: enter the information once, then let the interface use it in a few useful places.

If a site is older, it can still belong in the directory. It just doesn’t get to pretend it launched this morning.

Browsing doesn’t have to be one endless list

The new site has a few different ways to explore:

  • Categories for when you know roughly what you want
  • Collections that group related sites together
  • Featured picks and editor recommendations
  • A trending page driven by votes
  • A “Very Interesting” section for selected listings

I don’t think one ranking should explain the whole directory.

Something can be worth opening without being the most-voted thing on the page. A small, specific tool might be exactly right for you and completely irrelevant to someone else.

Collections and editorial picks give those projects another way to be discovered.

The number next to a site is useful information. It isn’t its entire personality.

I also added a tiny website showdown

There’s a page called /this-or-that.

It presents two random listings side by side. You choose whichever one you prefer, the winner gets a vote toward the same trending system, and another pair appears.

That’s it.

No bracket ceremony. No ninety-minute awards stream.

Just:

“Which of these would you rather open?”

I like it because it gives visitors a reason to look at something they might otherwise scroll past.

It also makes voting feel like part of browsing rather than a separate task.

The content lives in JSON, not a CMS

The site’s content and settings live in a handful of JSON files.

There are separate files for branding, listings, categories, trending settings, homepage sections and collections, blog posts, and the launch ticker heading.

For example, adding a site means adding an entry to config/sites.json:


json
{
  "name": "Tiny Useful Thing",
  "slug": "tiny-useful-thing",
  "url": "https://example.com",
  "description": "A small tool that does one useful job.",
  "category": "Utilities",
  "tags": ["browser", "tool"],
  "trending": 0,
  "launched": "2026-10-09"
}
The slug stays stable because votes are stored under it.

If I want the listing in a collection or an editorial section, I add its slug to the relevant configuration.

Then I redeploy.

No CMS login. No content API fetched at build time. No separate publishing system to maintain.

That also means content edits require a redeploy. It’s a tradeoff, not magic.

For this project, I like having the directory’s content in files I can read, change, and keep alongside the code.

The backend has a small job too
The interactive parts use a Cloudflare Worker with Workers KV.

It handles:

Reading vote counts
Adding and removing votes
Saving pending site submissions
Letting me review those submissions through a password-protected admin flow
Submissions go into a review queue rather than directly into the public directory.

The directory itself stays configuration-driven. The Worker handles the parts that need to change without a redeploy.

There are still rough edges here.

Votes and submissions aren’t rate-limited yet, so the current voting system isn’t something I’d present as a tamper-proof competition. KV updates can also take time to appear across locations.

For now, trending is a discovery feature—not an audited election for Supreme Website.

I’m keeping unfinished features honest
There’s an advertising page, but its placement and verification prices are proposals. Checkout isn’t connected, so those aren’t offers people can purchase yet.

I’d rather say that clearly than put a convincing-looking button in front of something that doesn’t work.

The same applies to the rest of the project.

This is a working site that I’m still developing, not a finished platform pretending it has no limitations.

Part of this change in direction is deciding what deserves to be built next—and what can stay simple.

Same builder, different job
base31 was a broader idea.

This version has a more specific focus: give launched sites a place to be found, understood, compared, and visited.

That gives me a clearer question when I’m considering a feature:

Does this help someone discover a launched project?

If it does, it might belong.

If it mostly gives me another settings page to maintain, perhaps it can enjoy a peaceful life in my notes app.

You can explore the new site here: benlaunches.icu

And the source code is here:

GitHub logo NOTAM-bobk / benlaunches.icu

launch you site, here

Boring Internet

A quiet directory of launched sites. Everything on the page comes out of editable files in config/. There are two server-side pieces: a small Cloudflare Worker that counts trending votes, and three Vercel functions in api/ that take card payments through PayPal (see Payments).

Editing the site: the config/ folder

Everything on the site comes from the JSON files in config/. Edit them and redeploy — there is no CMS and nothing is fetched at build time.


























File What it controls
config/site.json Brand name, tagline, description, canonical URL, keywords, social links
config/sites.json Every site: name, slug, url, description, category, tags, trending (starting score), launched, plus any extra detail fields
config/categories.json Categories used by the filters, the side navigation, and the counts
config/trending.json
topLimit for the trending page (0 ranks every listed site), plus a boost map and
…




What makes you click?
When you find a directory of new projects, what actually makes you open one?

A clear description? A recent launch date? A category you care about? Someone else recommending it?

Or are you like me and occasionally willing to click something because the name sounds mildly suspicious?

Tell me in the comments. And if you’ve launched a site, share what it does—I’m building this for projects that made it out of the local development server.

Enter fullscreen mode Exit fullscreen mode

Top comments (0)