Inspiration
Every company, creator, and brand needs a community space — but the options are painful. Discord is chaotic and off-brand. Slack charges per seat. Circle.so and Mighty Networks cost $200–500/month and run on generic infrastructure with no multi-region guarantees.
We wanted to build the community platform we wished existed: white-label, instant setup, and powered by a database that literally cannot go down — even during a regional AWS outage.
When we discovered Aurora DSQL's active-active multi-region architecture, the idea locked in immediately. No other community platform in the world runs on DSQL. That became our differentiator.
What it does
CommuniQ is a white-label community platform. Any brand, company, or creator launches their own fully branded community at /t/their-name in under 2 minutes — no infrastructure, no DevOps, no credit card.
Each community gets:
- Spaces — organized channels like #general, #help, #announcements
- Posts — discussions with upvotes, comments, and relative timestamps
- Live upvote toggle — count updates instantly without page refresh
- Member join via invite link — public URL, one-click join
- Admin dashboard — member list with AWS regions, post stats, copy invite link
- Auto-search — debounced search with instant dropdown results
- Region detection — every member's home AWS region is stored on join
Two live demo communities show the white-label capability:
- Saathi at
/t/saathi— indigo branding, AI & community focus - Builders Club at
/t/buildersclub— green branding, indie hackers
How we built it
Frontend: Next.js 16 (App Router, Turbopack) + Tailwind CSS, deployed on Vercel
Database: Amazon Aurora DSQL — serverless distributed SQL, PostgreSQL-compatible. We use the DsqlSigner from @aws-sdk/dsql-signer to generate short-lived IAM auth tokens instead of static passwords. Zero credentials stored anywhere.
ORM: Prisma 7 with the Driver Adapter pattern (@prisma/adapter-pg) — required because Aurora DSQL doesn't support connection pooling the traditional way.
Auth: NextAuth.js v5 with a split config — proxy.ts (Edge-safe, no DB imports) handles route protection, while auth.ts (Node.js) handles session resolution. This is critical for Next.js 16's proxy convention.
Multi-tenant isolation: Every table has a tenantId foreign key. The app resolves the tenant from the URL slug on every request before hitting the database.
Deployment: Vercel (primary) + AWS Amplify (backup). On Amplify, the AmplifySSRCommuniqRole IAM execution role handles DSQL auth automatically. On Vercel, explicit credentials are passed via env vars — the same db.ts handles both paths.
Challenges we ran into
Aurora DSQL's Driver Adapter requirement — Prisma 7 required a completely different instantiation pattern. Standard PrismaClient initialization doesn't work; you need PrismaPg(pool) with a lazy getDb() singleton to avoid serverless cold-start issues.
IAM token expiry — DSQL auth tokens expire in 15 minutes. In a serverless environment, the cached _client can outlive the token. We solved this with the lazy singleton pattern that re-creates the client when needed.
Next.js 16 breaking changes — middleware.ts is deprecated and renamed to proxy.ts. The TypeScript type for DsqlSignerConfig couldn't be cast from Record<string, unknown> — it required a direct import. Both issues only surfaced during Vercel's strict TypeScript build.
Multi-tenant auth flow — NextAuth's authorized callback runs on the Edge (no DB access). The session JWT must carry tenantSlug and memberId, set during sign-in in the Node.js auth.ts config. Getting these two configs to stay in sync without circular imports took significant debugging.
Accomplishments that we're proud of
- First community platform on Aurora DSQL — as far as we know, no production app has shipped this stack before
- Zero-credential database auth — IAM token-based auth means no passwords in environment variables on Amplify
- Two live tenants proving white-label — Saathi and Builders Club run on the same DSQL cluster, completely isolated, with different branding
- Full submission in 10 days — onboarding, spaces, posts, comments, upvotes, search, invite links, admin, region detection, landing page — all shipped
What we learned
- Aurora DSQL is genuinely production-ready for Next.js serverless apps, but requires the Driver Adapter pattern — standard Prisma won't work
- The IAM token auth model is actually more secure than connection strings; worth the extra setup
- Next.js 16 is a significant breaking change from 15 — always read
node_modules/next/dist/docs/before writing code - Multi-tenant architecture is best enforced at the URL layer (slug → tenantId) rather than at the auth layer — simpler and more predictable
What's next for CommuniQ
- AWS Marketplace listing — packaging as a SaaS offering for AWS-native companies
- Second DSQL region — add eu-west-1 peer cluster for true active-active multi-region demo
- Real-time notifications — Server-Sent Events for live comment/upvote alerts
- Custom domains — each community on their own domain (e.g.
community.acme.com) - AI moderation — Claude API to auto-flag spam and summarize top discussions weekly nspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for CommuniQ
Built With
- amazon-aurora-dsql
- aws-amplify
- aws-iam
- next.js-16
- nextauth.js-v5
- node.js
- postgresql
- prisma-7
- tailwind-css
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.