< cd ~/raba.pl

Public products & communities

minecraft.pl

Modernize a sixteen-year-old community platform without treating its history as disposable.

  • live
  • Rebuild: March 2026 - present
  • Owner: product, code, infrastructure

The problem

A fresh interface was only one part of the work. Thousands of old links needed a deliberate destination, the hosting rules had outgrown a platform limit, and the game shop needed reliable purchase handling.

My part

Owner and operator: product, code and infrastructure. Search growth is an observed result across the domain, not a claim that one change caused it.

What this shows

I can take responsibility for an existing product's content, migration, infrastructure and day-to-day reliability, as well as its interface.

Where it started

I own minecraft.pl, a Polish Minecraft portal with an archive dating back to 2011, a server directory and its own game network. The 2026 rebuild covered the website and the infrastructure behind the community.

See it in action

Product walkthrough · 0:52 · 60 FPS · English narration
minecraft.pl interface

English AI narration · Subtitles included · Play with sound, or read the transcript.

Read the video transcript

0:00 Enter a world seed, then explore the generated map. Players can inspect terrain and structures before choosing where to build.

0:13 The portal calculator turns world coordinates into a Nether route. Twelve hundred, minus eight hundred becomes one hundred fifty, minus one hundred.

0:24 The directory turns a huge server list into relevant choices. Type a game mode and the matching servers stay on screen.

0:33 Search connects a player's question to a useful answer. Here, Mending leads straight to a guide on villager trades.

0:43 I rebuilt this sixteen-year-old community around thirty-seven practical tools, searchable knowledge and places to play.

The decisions behind the product

Keep the value of the archive

I rebuilt the content site on Astro and Payload CMS. Legacy WordPress URLs were redirected or deliberately retired, including 1,410 old permalinks folded into one rule when the route table exceeded Vercel's limit.

Make deployment repeatable

I moved hosting to nginx on a self-managed server. The same route table generates the server rules, and releases are activated with smoke checks and rollback on failure.

Connect the site to a working game network

The wider platform includes Java and Bedrock access, four game backends and a paid shop. I moved crate-key grants into a shared MySQL ledger that confirms success only after the purchase transaction commits.

What came out of the work

An audience beyond the rebuild

Google recorded 234,067 search clicks across April to September 2026. September had 54,410 clicks versus 14,807 in April, a 267.5% increase between those two months.

A substantial platform to operate

The game network had 31,948 registered player accounts in the 6 October 2026 snapshot, and the website exposed 19,042 URLs across 12 sitemaps. Registered accounts are a cumulative count, not monthly active players.

  • 16 yearsbuilding a Polish Minecraft communityFounded in 2010 · rebuilt in 2026
  • 37free tools in the main directoryCalculators, command generators and creative tools · checked 9 Oct 2026
  • 31,948registered game-network accountsPlan analytics · Sept 2025 - 6 Oct 2026
  • 51search phrases averaging Google's #1 positionAt least 10 impressions each · 7 Sept - 4 Oct 2026
  • 1,018pageviews referred by AI assistantsGemini, ChatGPT, Perplexity, Copilot and Claude · Apr - Sept 2026
  • 4,533player-name batches generatedRecorded tool actions · PostHog · Apr - Sept 2026
  • 234,067Google search clicks in 6 monthsGoogle Search Console · 1 Apr - 30 Sept 2026
  • +267.5%Monthly search click growthSept 2026 vs Apr 2026

Search metrics use the scope shown with each result. Search position is an average across searches.

Traffic over time

Google Search Console

Google search clicks

+267.5% · Sept vs Apr 2026

Domain property: minecraft.pl (all subdomains)

Latest month
54,4101 Sept - 30 Sept 2026
First month
14,8071 Apr - 30 Apr 2026
Google search clicks per month, 1 Apr to 30 Sept 2026Google Search Console. Domain property: minecraft.pl (all subdomains). Monthly clicks. 1 Apr: 14,807; 1 May: 21,864; 1 Jun: 35,478; 1 Jul: 50,494; 1 Aug: 57,014; 1 Sept: 54,410. Vertical axis starts at zero.030k60k1 Apr - 30 Apr 2026: 14,807 clicks1 May - 31 May 2026: 21,864 clicks1 Jun - 30 Jun 2026: 35,478 clicks1 Jul - 31 Jul 2026: 50,494 clicks1 Aug - 31 Aug 2026: 57,014 clicks1 Sept - 30 Sept 2026: 54,410 clicksAprMayJunJulAugSept
6 complete months · 1 Apr - 30 Sept 2026 · Download chartFirst month Latest month
Source, methodology and monthly data

Open Google Search Console report · Checked 8 Oct 2026

Domain property: minecraft.pl (all subdomains). Provider timezone: America/Los_Angeles.

  • Six complete calendar months: 1 April to 30 September 2026. Current is September; comparison baseline is April. Both comparison months have 30 days. This is not a comparison against the preceding six months.
  • Final web-search data, all countries and devices, America/Los_Angeles reporting timezone. Search clicks are not website visits or unique visitors.
  • Domain properties include all subdomains with property aggregation. Documentation pages retain exact page filters from the preceding evidence collection and measure documentation interest, not adoption.
  • Monthly chart values and the six-month total are reconciled with independently queried totals.
  • The percentage, where shown, compares September 2026 with April 2026, the last and first complete months of this window.
Complete monthly totals
MonthGoogle search clicks
1 Apr - 30 Apr 202614,807
1 May - 31 May 202621,864
1 Jun - 30 Jun 202635,478
1 Jul - 31 Jul 202650,494
1 Aug - 31 Aug 202657,014
1 Sept - 30 Sept 202654,410
PostHog recorded activity140,553 pageviews in 28 days

minecraft.pl and www.minecraft.pl only · UTC

Recorded activity is affected by consent, blockers, tracking gaps and internal traffic.

Recorded totals, separate from search data
Metric7 Sept - 4 Oct 202610 Aug - 6 Sept 2026
Recorded pageviews140,553149,266
Recorded sessions99,414108,922

Inside the implementation

Explore the features, architecture and quality checks

What I built

  • Astro 6 site in a Turborepo, with articles and pages pulled from Payload CMS 3 on PostgreSQL at build time
  • A list of 8,962 Minecraft servers with addresses, filterable by game mode, version, edition and country
  • 1,410 legacy WordPress permalinks folded into one regex redirect, after the route list hit 2,478 against Vercel's 2,048-route cap
  • Hosting moved from Vercel to nginx on a self-managed server: gen-nginx.py turns the same route table into nginx rules in Vercel's first-match order
  • Game network: an XCord (BungeeCord-based) proxy with Geyser and Floodgate for Bedrock, four Canvas (Folia fork) backends on 1.21.11, HuskSync and Plan
  • Crate-key shop moved onto a shared MySQL ledger: one transaction per grant with the player's row locked, and success reported only after commit
  • An in-browser terrain benchmark comparing JavaScript with Rust compiled to WebAssembly

How it works

  1. Payload CMSArticles and pages live in Payload on PostgreSQL.
  2. Astro buildThe site, its Pagefind search index and the old WordPress ID redirects are built from that content.
  3. Route tablegen-config.py writes one route table; gen-nginx.py turns it into nginx rules.
  4. Releasedeploy.sh uploads a release; activate.sh switches it live, smoke-tests it and rolls back on failure.
  5. nginxnginx on the server answers every request, next to a small Node API container.

Quality and reliability

  • parity.py checks every redirect and 410 route of a release against Vercel's first-match rule, and compares sampled pages with the live site through low-rate HEAD requests
  • Shop ledger verified with regression checks and a live acceptance pass on 16 Sep 2026 across all four backends; only test rows changed during the cutover
  • Known gap: shop commands carry no durable ID yet, so a reply lost after commit could still repeat a reward

Technology

  • Astro 6
  • React 19
  • TypeScript
  • Payload CMS 3
  • PostgreSQL
  • Turborepo
  • Pagefind
  • nginx
  • Docker
  • Python
  • Rust
  • WebAssembly
  • BungeeCord (XCord)
  • Geyser
  • Folia (Canvas)
  • HuskSync
  • NATS
  • MySQL
  • Plan
  • Grafana

Explore another problem I worked on

>_ Your next project

Liked what you saw?
Let’s get in touch!

Have an idea, a challenge, or a role in mind? I’d love to hear about it.

Let’s talk

>_ Start a conversation

Liked what you saw?
Let’s get in touch!

Tell me what you’re working on. Let’s see how I can help.

Email mepatryk@raba.pl
Send a message