Hey folks — welcome back!
It’s been one of those weeks again… you know the kind — the “Oh No” screen kept popping up like an annoying ghost, and it started haunting me in my sleep 😅. So… I finally did something about it.
I replace it with this one:
I'm giving up, closing down shop and move on 🤣.
Just kidding move it over to a other domain later more about that in this post.
Want to directly go there:
👉 https://land.spl-stats.com
This is a new domain so let me know if you experiencing any problems!
I want to keep these tools free and accessible for everyone — and you can help out without spending a dime:
Every bit of support helps — thank you! 🙏
Not much in this drop (you’ll see why in a sec 🤯), but here’s what’s new:
Added tooltips and breakdowns on the LCE/LPE/LDE page. Thanks for the suggestion @thejedo 👏.
Added a new metric based on Azircon’s excellent write-up:
👉 Land Efficiency: The Good, The Bad, and The Ugly
After crunching all those ratios and ranks, I always had the idea in the back of my mind to eventually build a leaderboard overview… someday. 😅
Well — turns out someday was yesterday evening (for me), when @azircon casually dropped a message asking,
"Hey, can we get a leaderboard?"
And I thought — what the heck, that shouldn’t be too hard, right?
One hour later, it was live on the site! 💪
While testing it, Azircon also noticed a bug in the DEC calculation. Good catch! That’s been fixed too.
Just for the record: taxes were previously applied after the DEC/hr calculation, which could offset the value by up to 10%. That’s now corrected.
So yeah, leaderboard’s up — enjoy! 🚀
You can also compare players easy with the filters:
After fighting with free-tier hell on half the internet, I decided to pack my bags and move the whole thing to a new home:
I gave Supabase, Koyeb, Neon, and Render a fair shot — but each came with limitations: storage, rate limits, or surprise quota bombs. Each one took at least a day to test and… fail. 🥲
So here's where I tried:
To avoid all that, I decided to Dockerize the whole thing. Now anyone can run it locally or deploy it anywhere — from your dusty old laptop to AWS/GCP/Azure.
There are three Docker images:
Docker images are available here:
You’ll need:
Docker Desktop: https://www.docker.com/products/docker-desktop/
3 files: docker-compose.yml, .env, and secrets.toml
Example:
# docker-compose.yml
services:
db:
container_name: db
image: postgres:17
restart: always
environment:
POSTGRES_USER: <define your own user>
POSTGRES_PASSWORD: <define your own password>
POSTGRES_DB: spl
ports:
- "5432:5432"
volumes:
- spl_db_data_local:/var/lib/postgresql/data
spl-next:
container_name: spl-next
image: gamerbeaker/splinter-lands-next:latest
depends_on:
- db
env_file: .env
volumes:
- ./cron.log:/var/log/cron.log
ports:
- "3000:3000"
spl-py:
container_name: spl-py
image: gamerbeaker/splinter-lands:v1.0.0
depends_on:
- db
- spl-next
volumes:
- ./secrets.toml:/app/.streamlit/secrets.toml
ports:
- "8501:8501"
environment:
- PYTHONUNBUFFERED=1
volumes:
spl_db_data_local:
.env:
NODE_ENV=production
DATABASE_URL=postgresql://:@db:5432/spl
secrets.toml:
[database]
url = "postgresql://:@db:5432/spl"
Once ready, run:
docker compose pull
docker compose up -d
Initial data gets injected daily at 1AM UTC, but you can also manually run:
docker ps
docker exec -it spl-next /bin/sh
cd /app
npm run data:inject
Access the app:
So why only a few features?
Because I’ve been deep in the weeds learning new stuff:
Still figuring out things like:
Python? I got that.
JavaScript/TS/React? Still fumbling, but getting there. Learning like this burns brain cells but also feels like a level-up 🧠⚡
Want to peek under the hood?
Feel free to PR, suggest improvements, or even just send me a “WTF is this” reaction — I’m still new to TypeScript, so be gentle 😅
I’d love to keep the tool free for everyone. You can help — totally free:
This is a hobby project — built late at night with ☕ and a half-broken brain. If things break, be chill and ping me. I’ll fix it eventually 😅