All case studies

DEV3 Technologies · own product

SocialPro: a social, chat and creator platform with anonymous whispers and a double-entry ledger

Our own product: one Next.js + MongoDB platform with ranked feeds, communities, real-time chat and calls, anonymous whispers, AI personas, creator monetisation, a self-serve ads manager and a staff moderation console.

Industry
Social & creator economy

Live project preview

DEV3 Technologies · own product — screenshots
Open live demo
Marketing site with the animated 3D hero

Marketing site with the animated 3D hero

The challenge

A modern social product is several hard systems at once: feeds that rank and fan out, chat that feels instant, money that must never be lost or double-counted, advertising that has to be fair to advertisers, and moderation that keeps up with all of it. Anonymous features raise the stakes further, because a pseudonymous message must stay unlinkable to its author for everyone except the system that enforces safety. We wanted all of it in one self-hostable codebase that runs fully offline in demo mode.

Our solution

We built SocialPro as a Next.js 15 application on MongoDB with two companion processes: a Socket.io sidecar for realtime delivery and a worker that drains the job queue and runs schedules.

Key design decisions

  • Permission nodes with inheritance. 50 colon-style nodes (content:delete:any) held by role documents; Member → Manager → Admin → Super Admin inherit from each other, custom roles can be added, and community roles use their own scoped nodes. Record-level ABAC checks ownership, verified or plan status and device risk.
  • Anonymity by construction. Whisper identities are a fresh pseudonym per thread or post. The link back to the author is stored only as AES-GCM ciphertext, never returned to other users, and whisper records never store client IPs.
  • Money on a double-entry ledger. Coins, tips, unlocks, paid DMs, subscriptions and payouts post balanced journal entries in MongoDB transactions, with Stripe Checkout, Billing and Connect Express — or a full simulated mode without keys.
  • A real ad auction. Second-price eCPM with smoothed CTR, pacing and frequency caps; impressions and clicks are counted from signed tokens, and every campaign passes AI and safety pre-review before staff approval.
  • Realtime that degrades gracefully. Browsers connect to the sidecar with a short-lived token and Next.js publishes through an authenticated internal endpoint; without the sidecar the app polls, and Redis scales it out.
  • AI that is always disclosed. Personas post and reply on schedules through a pluggable provider, carry mandatory AI badges, and stay under staff oversight with held drafts, cost tracking and a purge switch.
  • One guarded mutation path. Every server action goes through a wrapper (session → permission → validation → audit), and a repo check fails if one does not; route handlers use matching user, staff and public wrappers.

Architecture

React Server Components render the member app, the marketing site with its animated 3D hero, and the staff console. Server Actions and route handlers call domain services in lib/services on Mongoose and a MongoDB replica set. The worker handles fan-out, link previews, AI personas, ad settlement, mail retries, digests, payout holds and subscription renewals; on serverless hosts a protected cron endpoint drives the same queue. Integrations are optional: Stripe, Anthropic or OpenAI, SMTP, Web Push, Twilio, Google sign-in, Cloudinary and TURN.

Results

SocialPro ships as a complete, sellable product with a public read-only demo. By the numbers, counted from the source:

  • 50 permission nodes in 9 groups, 4 inheriting system roles and unlimited custom roles
  • 4 feeds, 6 reactions and 5 ad placements
  • 71 pages, 41 API routes and 68 Mongoose models, plus a realtime sidecar and a worker
  • 192 automated test cases in 18 Vitest files, run against a real MongoDB

It runs with Docker Compose, PM2 behind Nginx, or on Vercel with a cron endpoint, and is available on the DEV3 marketplace.

Related case studies