~/projects $ cat omniplex/README.md
Omniplex
Products & platforms·Jul 2026 – Present·● live·21last push October 28, 2026
The successor to Infinity List: a discovery platform for Discord bots and servers, with voting, reviews, curated packs, emojis and templates, plus a public API for bot developers.
Why it exists#
Omniplex is the successor to Infinity List, the Discord bot and server list I founded in 2021 and ran until July 2026. Omniplex keeps the same community and continues the same idea under NodeByte LTD, with a rebuilt frontend and a wider catalog that now covers emojis, stickers, sounds, templates and themes as well as bots and servers.
The rebuild came first. I was tired of the old stack and a website that had grown clunky, and patching it further wasn't worth it. Starting over let me rebuild the frontend on a modern stack and rethink the experience end to end.
The rebrand gave it a fresh start of its own. "Infinity" has been used by plenty of projects since 2014, so it was never going to feel unique or be something we could properly own. Omniplex is a name that's ours, and it can grow into more than a bot list.
What it does#
- Browse and search bots and servers, sorted by votes, views, newest or random
- Voting and reviews, plus certified, premium and staff-picked spotlight listings
- Collections and packs: curated bundles of bots, servers and emojis
- More than bots: emojis, stickers, sounds, server templates and profile themes
- For developers: a public API with webhooks, a command directory and a bot updates feed
How it's built#
The frontend is Next.js 16, TypeScript and Tailwind CSS v4, using SWR on the client and server components for fetching, with Bun and Biome for tooling. It talks to two APIs:
- Popplio: the public REST API and core backend, written in Go. It also hosts Arcadia, the staff panel API and staff bot, which now runs in the same process.
- Infernoplex: the server-listing bot. Its internal API creates invites and checks guild membership, so other services don't need their own Discord gateway connection.
Shared plumbing such as routing, auth, rate limiting, caching and the Discord user cache lives in Keel, a Go module the services import.
What I learned#
Go is a fun and extremely useful language, and in most cases it's the right one. Infinity List grew up across Go, Rust, Svelte, TypeScript, Python and even C. Arcadia and Infernoplex were Rust, the shared helpers were split between a Go library (eureka) and a Rust one (botox), and our permission system had bindings in five languages. Every service worked, but every language came with its own toolchain, its own way of talking to Discord and its own copy of the same glue code.
For Omniplex we moved Arcadia and Infernoplex from Rust to Go. Most of the gains came from no longer running two ecosystems side by side:
- One shared foundation instead of two. Keel replaced both eureka and botox. Some of its packages were extracted straight out of the Arcadia port once it was clear they weren't Arcadia-specific.
- Fewer moving parts. Arcadia used to be a separate service. Now it's a package inside Popplio, sharing its config, database pool and background tasks.
- Builds that just work. Infernoplex needed a C/C++ toolchain on Windows only so a build dependency could compile
libgit2. Popplio is pure Go withCGO_ENABLED=0, sogo buildworks anywhere. - Config that can't drift. Popplio regenerates its sample config from the Go config struct on every start, and validation tags refuse to boot if a required field is missing.
Rust taught us a lot, and it's still a great language. But for a small team running a web platform, one simple language everyone can read beat a faster one that only some of us wanted to touch.
Rebuilding beats endless patching, at some point. The frontend went through Reedwhisker, then Orbiplex, an ambitious rewrite that tried to support Discord, Revolt and Guilded at once, before Omniplex. Narrowing the scope to doing Discord really well is what finally got a rebuild shipped.





