Money SMP
The website for Money SMP, a competitive Minecraft SMP. It has live leaderboards, a fantasy league, a merch store, and informational pages.

Money SMP is an ongoing competitive Minecraft SMP, and I am the sole developer of its website. Most of the designs come from the series' designer and I build them.
It started out as just a leaderboard. Since then I have added a fantasy league for fans which increased site traffic by 2100%, a merch and ticket store, and a dashboard that the team uses to run their events.
What I did
- Built the public site, including the live and past leaderboards, player pages and the fantasy league.
- Wrote the scoring for the fantasy league, which reads events from the game every minute.
- Connected a Shopify store, allowing their creators to sell merch, and game designers to sell virtual tickets.
- Built the admin dashboard, with roles, an audit log and a step-by-step flow for starting a new season.
- Wrote the Discord bot and the links page that go with the site.
- Sole developer
- 2025, ongoing
- Myself and the series' designer
- smp.money
Built with
- Next.js
- React
- TypeScript
- tRPC
- Drizzle
- PostgreSQL
- Clerk
- Shopify Storefront API
- Tailwind CSS
- Vitest
- Python
- discord.py
- Astro
- Vercel
Leaderboards
The live leaderboard updates during the current season. Past seasons are kept in an archive that goes back to season one, including the mini events and the rookies event.
I also wrote a small service that renders each player's Minecraft skin. The images are cached for a week and rate limited, so the site isn't relying on other skin services when it gets busy.

Fantasy league
Fans pick a team of real players with a $100 budget, and can join private leagues using an invite code. During a season they can use boosts, swap their team and make substitutions.
The points come straight from the game. Every minute the site reads new events from the Minecraft plugin and scores them, and it checks each one against the events it has already seen so that nothing gets counted twice. The season also locks automatically before the first event starts.

Testing before launch
Before launch, I ran multiple simulated tests which ended up finding five scoring bugs. In the final run it scored 54,612 picks and matched on all of them. I also load tested the site with 600 simulated users at 117 requests a second. There were no errors, and 95% of responses took under half a second.
Store and tickets
The store is a Shopify storefront built into the site, it sells merch and event tickets.
When someone buys a ticket, Shopify tells the site, the site tells the Discord bot, and the bot gives the buyer their role. If the order is refunded, the role is removed. The messages between the site and the bot are signed and timestamped so they can't be faked or sent again.

Moderation
Fans choose their own team names, and these are shown publicly. Every name is checked against a blocked-word list that the team can edit from the dashboard. Names also have to use Latin characters and can't contain links, and there is a limit on how often someone can try.
Admin dashboard
The team can run their events without needing me. Admins can be viewers, editors or owners, and can be limited to certain areas. Everything they do is recorded in an audit log.
If someone edits a player's stats while the game is also updating them, the dashboard shows a conflict and doesn't overwrite the newer value. Ending a season archives everything first, and then only clears the tables it is meant to.
Gallery



Results
Five scoring bugs caught early
Simulating full seasons against the scoring system found them before launch.
Load tested before launch
600 simulated users at 117 requests a second, with no errors and 95% of responses under half a second.
The team runs it themselves
Seasons, players, prices, awards and moderation are all managed from the dashboard, and every change is logged.