/ tech-stacks / Best Tech Stack for a Social Media Tool as a Solo Developer
tech-stacks 6 min read

Best Tech Stack for a Social Media Tool as a Solo Developer

The best tech stack for building a social media tool as a solo developer - frameworks, databases, hosting, and tools.

Best Tech Stack for a Social Media Tool as a Solo Developer

Social media tools are a massive market. Buffer, Hootsuite, Later, Publer, Typefully - each started small and grew by solving a specific pain point for content creators and marketers. Whether you're building a scheduler, analytics dashboard, content repurposing tool, or link-in-bio solution, the technical patterns are similar: integrate with platform APIs, handle OAuth across multiple services, process media, and run scheduled tasks reliably.

Here's the stack that handles all of this without overwhelming a solo developer.

Layer Pick
Frontend Next.js (React)
Backend Next.js API routes + separate worker
Database PostgreSQL (via Prisma)
Queue/Scheduler BullMQ + Redis
File Storage Cloudflare R2
Auth NextAuth.js with OAuth providers
Hosting Vercel (web) + Railway (workers)
Payments Stripe

Frontend: Next.js

Social media tools are dashboard-heavy applications. Users manage multiple accounts, create and schedule content, view analytics, and browse content calendars. Next.js with React gives you the component ecosystem to build these interfaces efficiently.

Key UI patterns you'll build:

  • Content calendar - Drag-and-drop grid view of scheduled posts. Use a library like @dnd-kit for drag interactions.
  • Post composer - Rich text editor with media upload, platform previews, and character count limits per platform.
  • Analytics dashboard - Charts showing engagement over time. Use recharts or chart.js.
  • Account management - Connect/disconnect social accounts via OAuth.

Next.js gives you server-side rendering for your marketing pages (important for SEO) while keeping the dashboard fully client-rendered for responsiveness. The app router's layout system is perfect for the sidebar + main content pattern that every SaaS dashboard uses.

Backend: Next.js API Routes + Worker Process

Your backend has two distinct responsibilities:

API Layer (Next.js API routes): Handle user requests - create posts, fetch analytics, manage accounts, process payments. These are synchronous request-response operations that fit the serverless model.

Worker Process (Railway): Handle scheduled jobs - publish posts at their scheduled time, sync analytics data from platforms, refresh OAuth tokens. These need to run on a schedule or from a queue, and they need to be reliable. A missed scheduled post is a broken promise to your user.

For the worker, run a Node.js process with BullMQ (backed by Redis) that processes jobs from a queue. Schedule jobs when users create a post: "Publish this to Twitter at 3pm EST on Tuesday." BullMQ supports delayed jobs natively, making this straightforward.

Database: PostgreSQL + Prisma

Your data model needs to handle multi-platform content elegantly. A single "post" from the user's perspective becomes multiple platform-specific posts with different text limits, media formats, and publishing statuses.

Core schema:

  • users - Account and billing info
  • social_accounts - Connected platforms with OAuth tokens (encrypted)
  • posts - Parent post with content
  • platform_posts - Per-platform versions with platform-specific text, status, published_at
  • media - Uploaded images/videos linked to posts
  • analytics - Engagement metrics synced from platforms

Prisma handles this relational model cleanly with type-safe queries. Host on Neon (serverless Postgres) or Supabase.

Important: Encrypt OAuth tokens at rest. You're storing access to people's social media accounts. Use aes-256-gcm encryption with a key from environment variables. This isn't optional.

Queue and Scheduling: BullMQ + Redis

The scheduling system is the heart of a social media tool. It needs to:

  1. Accept scheduled posts with precise timestamps
  2. Execute at the right time (within seconds of the target)
  3. Handle failures gracefully (retry on API errors, notify on permanent failure)
  4. Scale to thousands of concurrent scheduled jobs

BullMQ handles all of this. When a user schedules a post, create a delayed job with the exact delay until publish time. BullMQ stores it in Redis and triggers the worker when the time arrives. Failed jobs get retried automatically with exponential backoff.

Run Redis on Railway alongside your worker process. Redis is lightweight and the free tier on most platforms covers a small social media tool easily.

File Storage: Cloudflare R2

Social media tools handle a lot of images and videos. Users upload media, you potentially resize/optimize it for different platforms, and you need to serve it back in the composer and calendar views.

Cloudflare R2 with zero egress fees keeps your media storage costs predictable. Use signed URLs for upload (direct to R2 from the browser) and serve media through Cloudflare's CDN.

For image processing (resizing for different platform requirements), use Sharp in your worker process. It's fast and handles all common image formats.

Auth: NextAuth.js with Platform OAuth

NextAuth.js handles both user authentication and social platform connections. Configure it with:

  • Email/password or magic link for user login
  • Twitter, Instagram, Facebook, LinkedIn, TikTok OAuth for platform connections

Each platform's OAuth flow has quirks. Twitter uses OAuth 2.0 with PKCE, Meta requires app review for Instagram permissions, LinkedIn has a separate marketing API scope. Budget time for getting each platform's OAuth right. It's the most tedious part of building a social media tool.

Nice-to-Haves

  • Stripe for subscription billing (per-account or per-seat pricing)
  • Sentry for error tracking (failed publishes need immediate visibility)
  • Upstash for rate limiting (respect platform API rate limits)
  • Resend for email notifications (post published, scheduling failed)
  • OpenAI API for AI caption generation and content suggestions

Monthly Cost Breakdown

Service Cost
Vercel (Pro) $20/month
Railway (worker + Redis) $5-10/month
Neon Postgres (free tier) $0
Cloudflare R2 ~$1-5/month
Sentry (free tier) $0
Stripe 2.9% + 30c per transaction
Domain $1/month
Total ~$27-36/month + Stripe fees

As you scale, the worker process will need more resources (more scheduled posts = more jobs), but this handles hundreds of active users comfortably.

Conclusion

The best stack for a solo developer building a social media tool: Next.js for the dashboard and API, PostgreSQL with Prisma for data, BullMQ with Redis for reliable post scheduling, Cloudflare R2 for media storage, and a split deployment between Vercel (web) and Railway (workers).

The biggest challenge isn't the stack. It's the platform APIs. Each social network has different rate limits, content formats, media requirements, and OAuth flows. Pick one or two platforms to start with (Twitter/X and LinkedIn are the easiest to integrate), nail the scheduling and publishing reliability, and expand to more platforms once your core system is rock solid. Users will forgive a limited platform list, but they won't forgive missed scheduled posts.