Skip to content
Behind the build4 min read

A homepage that cannot lie to you

Our front page has no curated lists and no admin screen behind it. Every shelf is computed, and a shelf with nothing in it does not render at all. Here is why that rule turned out to matter.

The front page of a directory is usually the most-edited surface on the site and the first one to go stale. Somebody picks eight tools for a "Featured" strip in March, the strip is still there in September, and two of the eight have shut down. Nothing broke. Nobody was told.

So this one has no picks in it. Every shelf on the homepage is the output of a query, and the queries answer questions that have current answers:

  • Featured (highest quality score, with cover art
  • Trending this week), most votes cast in the last seven days
  • New additions (most recently gone live
  • Collections), the sets that have members
  • Categories and Tags, ordered by how many live listings each holds

None of that needs anyone's attention on a Tuesday. The page is current because being current is the only thing it knows how to be.

The rule that does the real work

Each shelf renders only if it has items. Not an empty state, not a "check back soon". The section is absent from the document.

This sounds like a small piece of defensive UI and it is actually the load- bearing part, because it is what makes an unattended homepage safe. A page that degrades to placeholders when its data runs out has to be watched. A page that shortens has not got anything to be wrong about.

Right now the deals shelf is not on the page. We have no live deals, so there is nothing between "Collections" and "Categories" and the page is one section shorter than the code that generates it. The day an editor verifies a discount, the shelf appears. Nobody deploys anything.

Why deals in particular

That shelf is empty for a reason worth stating, because it would be trivially easy to fill.

Our own specification says a published deal carries a verification date and the name of the person who checked it, and the copy on /deals tells the reader what that means: someone took the code through checkout to the payment step and here is the date they did it. That is a good promise. It is also a promise you cannot keep by seeding your database with plausible-looking discounts on companies you have never contacted.

So the shelf stays empty until the work behind it has actually been done. An empty section is a much smaller cost than a page of offers that quietly asserts a human verified something no human looked at.

Trending is recent votes, not total votes

Worth pulling out because it is the easiest shelf to get wrong. Sorting by lifetime upvotes gives you a leaderboard, the same tools, in roughly the same order, indefinitely. We already publish one of those and it is a different page.

"Trending" counts votes cast in the last seven days and nothing else. Products with no recent votes are excluded rather than ranked last, which means a quiet week produces a shorter shelf instead of a full one that has not moved since spring. Same rule as everywhere else: fewer, honest items beat a complete grid.

The one manual lever

There is exactly one, and it is worth naming rather than implying the page is untouched by human hands.

Products carry an is_featured flag. An editor can set it, and a flagged product sorts to the top of the Featured shelf ahead of the quality ordering. It does not affect the leaderboard, it is not for sale, and it changes one shelf on one page.

We added it because a purely computed front page has a real weakness: something genuinely good and brand new has no votes yet, and quality scores take time to accumulate. The flag is the override for that case. It is a lever, it is small, and a post about an automated homepage that failed to mention it would be committing the exact sin it is describing.

What we gave up

Editorial voice, mostly. A hand-picked front page can say "these five, this week, because of this" in a way a query cannot, and the better directories do that well.

We traded it for a page that is true without supervision, and put the editorial energy into collections instead, where a set of nine tools comes with a written note on each one explaining why it is there. That is where a human adding judgement produces something a query cannot, and it does not spoil if nobody looks at it for a month.

All writing