<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[LootQuery Dev Blog]]></title><description><![CDATA[LootQuery Dev Blog]]></description><link>https://lootquery.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>LootQuery Dev Blog</title><link>https://lootquery.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 04:08:23 GMT</lastBuildDate><atom:link href="https://lootquery.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Three infrastructure decisions I made building a gaming Q&A site alone]]></title><description><![CDATA[Decision 1: Server-render everything, because search engines are the users
For a Q&A site, organic search isn’t a marketing channel — it is the product’s distribution. Nobody wakes up wanting to visit]]></description><link>https://lootquery.hashnode.dev/three-infrastructure-decisions-i-made-building-a-gaming-q-a-site-alone</link><guid isPermaLink="true">https://lootquery.hashnode.dev/three-infrastructure-decisions-i-made-building-a-gaming-q-a-site-alone</guid><category><![CDATA[Next.js]]></category><category><![CDATA[self hosting]]></category><category><![CDATA[side project]]></category><category><![CDATA[webdev]]></category><dc:creator><![CDATA[Эрдем Сонмез]]></dc:creator><pubDate>Sun, 12 Jul 2026 04:22:09 GMT</pubDate><content:encoded><![CDATA[<p>Decision 1: Server-render everything, because search engines are the users</p>
<p>For a Q&amp;A site, organic search isn’t a marketing channel — it is the product’s distribution. Nobody wakes up wanting to visit a Q&amp;A site; they hit a game crash, paste the error into Google, and land on whatever page answers it. If that page isn’t indexable, it doesn’t exist.</p>
<p>That decided the framework. Next.js with the App Router server-renders each question page, so the moment a question is posted it can be crawled and ranked. No client-side hydration gap, no “wait for JS” for the content that matters. Prisma sits on top of PostgreSQL to keep the data layer sane as the schema grows. None of this is trendy — that’s the point. Boring, indexable, and I never have to think about it.</p>
<p>Decision 2: Spend the complexity budget on search, and only search</p>
<p>Here’s the trap with a Q&amp;A site: if people can’t find an existing answer, they post a duplicate, and now you have two half-answered threads competing instead of one good one. Search quality directly controls content quality.</p>
<p>Postgres full-text search is genuinely decent and got me most of the way. But the last stretch — tolerating typos, ranking results as you type, feeling instant — is where a dedicated engine pays off. I added Meilisearch, index questions as they’re written, and query it from an API route. It was maybe half a day of work. It’s also the only piece of infrastructure I let myself add beyond the boring core, precisely because search was the one thing that couldn’t be mediocre.</p>
<p>Decision 3: Self-host, so a good day can’t become a big bill</p>
<p>A lot of side projects die not from failure but from a surprise invoice after one post goes viral. I wanted the opposite problem. The entire app — Next.js, Postgres, Meilisearch — runs as a Docker Compose stack on a single VPS, with Caddy in front handling HTTPS automatically (it provisions and renews certificates with basically no config).</p>
<p>The tradeoff is real: I own the ops. If the box goes down, that’s me. But in exchange I get a flat, predictable cost and no per-request pricing that punishes me for a traffic spike. For something that might get a sudden rush from one popular answer, that peace of mind was worth the extra responsibility.</p>
<p>The pattern underneath all three</p>
<p>Every decision was the same shape: keep everything boring except the one thing that defines the product. Indexability and cost predictability got the safe, dull choice. Search — the thing that makes or breaks a Q&amp;A site — got the specialized tool. That framing is the only reason a single person can run this without drowning in maintenance.</p>
<p>The site’s live at lootquery.com if you want to see how the decisions played out. Always happy to talk shop in the comments.</p>
]]></content:encoded></item></channel></rss>