Inspiration
Most Discord servers end up running five or six separate bots: one for tickets, one for economy, one for music, one for leveling, one for moderation. Each has its own dashboard, its own permissions and its own bugs. I wanted one bot that does all of it, configured from one place, with the quality of a paid product.
What it does
Flamey is an all-in-one Discord bot. It runs in 171 servers with 260k+ users.
- Tickets: thread-based and forum-based tickets, claim mechanics, transcripts, and AI triage that sorts incoming tickets.
- Economy and games: a full server economy with games.
- Music: playback through Lavalink.
- Leveling: XP and levels, with an importer for moving data over from other bots.
- Giveaways: templates, modal-based setup, and duplicate-entry protection.
- AutoMod: rules that create real Discord AutoMod rules. A trigger punishes the user and opens a case, the same as a manual moderation action.
- Welcomer: visual welcome cards.
- Web dashboard: every module is configurable from dashboard.flamey.lol, and changes apply to the bot in real time.
How I built it
I wrote everything in Discord.js v14 with no framework on top, so I control the whole command lifecycle. I built it solo, using AI coding tools heavily along the way.
- Bot: Node.js, managed with PM2.
- Command layer: a custom
CommandGuardhandles per-subcommand permissions and cooldowns. A custom schema builder defines subcommands. - Database: PostgreSQL with a fully relational schema of 164 tables. I use typed columns and normalized tables everywhere and avoid JSONB.
- Dashboard: React + Vite on the frontend and an Express API on the backend.
- Real-time sync: the bot and dashboard stay in sync through PostgreSQL
pg_notify/LISTEN, so a setting changed in the dashboard takes effect immediately without polling. - AI: a Groq-hosted model (gpt-oss-120b) powers ticket triage and the dashboard assistant.
- Infra: Nginx, Certbot SSL, Cloudflare (R2 for image storage, email routing), and Paddle and Cryptomus for payments.
Challenges I ran into
- Keeping 164 tables clean. Resisting JSONB was slower up front, but queries, migrations and dashboard forms are far easier to reason about now.
- AutoMod and Discord state drifting apart. Rules weren't created in Discord unless an action was selected, and disabling a config in the dashboard didn't delete the Discord rule. I had to treat Discord as a second source of truth and reconcile both directions.
- Bot and dashboard consistency. Two processes editing the same config needed a reliable sync path, which is why I went with
pg_notify. - Datacenter IP blocking in music. YouTube bot-detection broke artist avatar fetching, so I moved that to the YouTube Data API v3.
- Discord's newer features. Components v2, guild tags, Linked Roles and user-installable apps all changed how interactions are built.
- Building solo. Design, backend, frontend, infrastructure and support were all on me.
Accomplishments that I'm proud of
- Reaching 171 servers and 260k+ users as a solo developer.
- A dashboard that edits live bot behavior in real time.
- A production-grade moderation and ticket system, not a demo.
- A clean relational schema at the scale of 164 tables.
- A custom permissions and cooldown layer that every command shares.
What I learned
- Design the schema first. Everything downstream gets easier when the data model is honest.
- A permissions and cooldown layer built once, centrally, saves you from repeating checks in every command.
- Real-time sync is more about picking one source of truth than about the transport.
- Stability beats new features once real servers depend on you.
What's next for Flamey
- Finishing the welcomer module and its card designs.
- Moving the landing page to Next.js for better SEO and Discord link previews.
- The mascot-led brand and launch video.
- More dashboard-configurable modules and further AI features.
- Continued focus on stability, plus the Discord privileged intent verification.
Double-check the numbers and drop any module that isn't live before you submit.
Built With
- javascript
- next.js
- react

Log in or sign up for Devpost to join the conversation.