← Back to Blog
Build in Public

I Built a Discord SaaS in 3 Months at 19. Here's What It Actually Took.

AounApril 4, 20267 min read

I'm 19. I build from my bedroom. I have no co-founder, no investors, and no team.

Three months ago I started building Nexcord — a community management platform for Discord servers. Today it's live at nexcord.app, it charges real money via Paddle, and real servers are using it.

This is a build-in-public post. Not a highlight reel — the actual story.


Why Discord?

I've been building Discord bots since I was 16. Backend dev, automation, scraping — JavaScript/Node.js was where I started. I'd watched server admins run the same broken workflows for years: manually copying ticket conversations into Google Docs, DMing users just to verify they're human, no way to search past discussions.

The tooling that existed was either dead (abandoned bots), overpriced (enterprise tools), or so janky that admins gave up. Nobody had built a clean, unified platform that treated community management as a serious product problem.

That felt like the gap.


What Nexcord Actually Does

Nexcord is the platform for Discord communities. Three core features at launch:

Automated transcripts. Every ticket or thread your server handles gets a clean, searchable transcript saved automatically. No copy-pasting. No lost context.

AI summarization. Long threads get summarized by a local Mistral 7B model running on my development machine. One-click. No sending your community's conversations to OpenAI.

Web-based verification. Custom verification flows that your members complete in a browser — no more bot commands or role reactions that half your members don't understand.

Paid plan is $4.99/month with a 14-day free trial. No credit card tricks — Paddle handles it cleanly.


The Stack (and Why I Made These Choices)

I wanted to build something I wouldn't be embarrassed by technically. Here's what I landed on:

Monorepo with Yarn Workspaces — four packages: @app/bot, @app/api, @app/dashboard, @app/shared. This was the right call. Sharing types between the bot and API with zero duplication has saved me hours.

Fastify 4 on Railway — all business logic lives here. The Next.js dashboard is UI only. I treat this as a hard rule. If the dashboard breaks, billing, limits, and feature enforcement still work.

Next.js 16 App Router on Vercel — straightforward. Works.

Supabase — Postgres for everything persistent. I also ended up using Supabase tables to replace BullMQ for my summarization job queue (more on this below).

Upstash Redis — caching and rate limiting only, on pay-as-you-go. Probably 30-50K commands/month. Redis isn't free infrastructure, but I'm not paying meaningfully for it yet.

Ollama running locally — Mistral 7B for text summarization, LLaVA 7B for image understanding. Runs on my RTX 3080 Ti. I set OLLAMA_KEEP_ALIVE=30m in Docker to fix cold start latency. LLaVA gets a 60-second timeout because it's slow to load.

Paddle for billing — I'm an individual developer, not a US company. Paddle is a Merchant of Record, which means they handle VAT, compliance, and chargebacks globally. For a solo founder in Jordan selling to users worldwide, this was the only real option.


The Mistake I Already Fixed

I built the summarization queue wrong the first time.

I used BullMQ — a solid library — backed by Upstash Redis. The problem: Upstash's serverless Redis doesn't support the Lua scripts BullMQ uses internally for atomic job operations. Jobs were failing silently. I was burning Redis commands on broken queue overhead.

The fix was simpler than I expected. I replaced the entire thing with a summarization_jobs table in Supabase and a polling worker. Deduplication, retry, stall recovery — all implemented cleanly in SQL and a few hundred lines of TypeScript. Upstash now only does what it's good at: fast reads, rate limit counters, session caching.

If you're building a job queue and you're not at scale yet: start with Postgres. You probably don't need Redis for this.


What I Haven't Done Yet

I've been documenting the build on TikTok and posting updates on Nexcord's Instagram. Beyond that, no outreach and no ads — just bot directory submissions (top.gg, discord.bots.gg, discordlist.gg, voidbots.net — all pending approval).

Current server count: about 5 servers using the real bot. There's a separate bot running in test servers that powers the "Trusted by 100+ communities" placeholder on the landing page — I'll remove that as the real number grows.

Discord requires bot verification to scale past 100 servers. I'm in that queue.

Lighthouse scores: 91 performance, 92 accessibility, 96 best practices, 100 SEO. The foundation is solid.


What's Coming

I have a Roadmap page at nexcord.app — I update it publicly. The next priorities:

  • Expanding the server count through community outreach
  • PDF export for transcripts (Puppeteer, Pro only, rate-limited — deferred until I have more Pro users to justify the infra cost)
  • More AI features as I learn what admins actually need

Why I'm Building in Public

I'm not writing this because I have a success story to package. I'm writing it because I'm in the middle of building something real and I want to document what that actually looks like.

Most "SaaS launch" posts are written in retrospect, after things worked. This one is written while I'm figuring it out.

If you run a Discord community and you're dealing with any of the problems above — transcripts, verification, losing context — I'd genuinely love you to try Nexcord. The free plan exists. The trial is real.

And if you're building something similar or just want to follow along: I'll keep posting here.


Aoun Abu Hassan is the founder of Nexcord and runs Reflex Sphere Studios LTD, a UK-registered technology company.

Try Nexcord → nexcord.app

Enjoyed this? Add Nexcord to your server.

Start archiving your Discord channels in minutes — free for every server.

Add to Discord — Free