Our own SaaS, designed and built in house

Building a Social Media SaaS and Its WordPress Site:
PostRoost

PostRoost is a social media scheduler for agencies and the brands they manage, and it is ours. MAK Digital designed and built the application, the WordPress marketing site that sells it, the billing that connects the two, and the search content that brings people in. This is how we put it together and what we would do the same way for a client.

7
Social networks it publishes to
6
Plans, from Free to Enterprise
99+
Mobile Lighthouse score, live pages
The PostRoost calendar on a laptop and the approvals list on a phone, with demo data for a coffee shop client
Product
PostRoost, social media scheduling, approvals and analytics
Owner
MAK Digital (our own product, not a client project)
Built for
Agencies, freelancers, small businesses, creators and online stores
Application
Next.js 16, React 19, PostgreSQL with Prisma, Stripe, the Anthropic API
Marketing site
WordPress with a custom theme and three custom plugins
Timeline
First commit October 15, 2026; public in early November 2026

PostRoost is MAK Digital's own product. We designed, built and run it, so this case study describes our own work on our own software.

Published .

The brief

One Product, Two Systems, and No Room for Slow Pages

Agencies that post for several clients juggle separate logins, separate calendars and approvals scattered across email threads. We wanted a scheduler built around the client instead of around the social account: each brand with its own connected accounts, calendar, brand voice, time zone and approval rule.

A SaaS product needs two very different things. The application has to be secure, reliable and quick to work in every day. The marketing site has to rank, explain six plans clearly and hand a new customer to checkout without friction. Most SaaS teams build both in the same JavaScript framework. We split them on purpose: the application in Next.js, and the public site on WordPress, so content can be written and published like any blog while the product moves at its own pace.

The rule for both: no page builder, no invented statistics, and every claim on the site checked against what the software actually does. That is the same standard we apply in our web development work for clients.

PostRoost calendar for a coffee shop client: the first weeks of October 2026 with several posts a day, each showing time, image, target networks and status

Step 1 of 7

A Scheduler Built Around Clients

Every client gets its own calendar, posts, approvals, analytics and account settings. A post moves from draft to pending approval to scheduled to published, and the calendar shows each one with its time, image, networks and status.

PostRoost publishes to Facebook Pages, Instagram professional accounts, LinkedIn, X, TikTok, YouTube and Pinterest. Each network has its own adapter for sign-in, publishing, token refresh and metrics, so a change at one network stays contained in one file.

PostRoost post composer for a demo coffee shop client with the writing assistant open beside the Instagram caption and live Facebook and Instagram previews

Step 2 of 7

A Composer With Per-Network Captions and an AI Assistant

The caption is written once and each network tab starts from it, with character counts and live previews. Media can be uploaded or linked, reordered and given alt text, and a first comment can go out right after the post on Instagram, Facebook and X.

The writing assistant drafts a caption from a brief and offers one-click fixes: hashtags, tone, grammar, shorter copy and a risk check. It runs on the Anthropic API and only ever suggests text inside the composer. Nothing is posted without a person pressing the button.

PostRoost approvals list showing four posts waiting for review, each with image, caption, author, target networks and Approve, Request changes and Reject buttons

Step 3 of 7

Client Approvals That Work on a Phone

Turn on approval for a client and every post waits for sign-off. The approver can approve, request changes with a note, or reject, and the approvals list was designed for the phone first, because that is where clients read it.

Agency owners see every client on one screen with connected accounts, posts waiting for approval and how much of their plan they are using.

PostRoost bulk upload page with a CSV of six posts validated: each row shows date, accounts, caption, media thumbnail and Ready status

Step 4 of 7

Scheduling, Bulk Upload and Analytics You Can Trust

A scheduler is only as good as the post that goes out at 9:00. Due posts are claimed atomically, so two workers can never publish the same post twice, and failed attempts retry with backoff and show the reason. Access tokens for every network are encrypted at rest with AES-256-GCM.

Bulk upload takes a CSV or Excel file and checks every row before it creates anything. Analytics pulls followers, impressions, reactions and comments, and keeps refreshing each post's numbers for 90 days after it goes out, with CSV export for client reports.

The postroost.io home page on a desktop: the headline Every client's posts, approved and out on time, Start free and See plans and pricing buttons, and a sign-up card surrounded by social network icons

Step 5 of 7

A WordPress Marketing Site With No Page Builder

postroost.io runs on WordPress with a custom classic theme: 22 page templates for the home page, pricing, plans, features, integrations, solutions, comparisons, guides, free tools and the blog. Pages are normal WordPress pages with structured fields, so the team edits copy in the editor and the layout stays intact.

The whole site loads one stylesheet of about 13.5 KB compressed and about 2 KB of JavaScript. Text uses system fonts, headings use one small preloaded font file, and screenshots are served as AVIF with WebP fallbacks at four widths. This is the approach behind our WordPress development and speed optimization services.

The PostRoost blog index on a desktop with its heading, introduction and article categories

Step 6 of 7

SEO Built Into the Templates

Every page was planned against one search intent before it was written, and the page map records its title, description, H1, canonical and internal links. Each published page carries ten page-specific FAQs, and the theme prints the matching FAQPage, breadcrumb and SoftwareApplication structured data from the same fields, so the markup always matches what a visitor sees.

The blog launched with an editorial queue that publishes on a fixed weekday schedule. At the time of writing the sitemaps list 55 pages, 72 articles and 7 categories. Our WordPress SEO and content marketing teams run the same process for clients.

The PostRoost pricing page on a desktop with the headline Plans priced per agency, not per social account

Step 7 of 7

Checkout on WordPress, Access in the App

Customers choose a plan and pay on postroost.io through Stripe. A custom billing plugin owns checkout, billing accounts and Stripe webhooks, and sends each change to the application through a signed outbox, so a network hiccup never loses a subscription.

The application keeps its own verified copy of what each agency is entitled to, which protects existing customers during a downgrade: a plan with fewer client slots cannot silently remove a client. Payment pages are excluded from the cache and the sitemap, and no Stripe script loads on the marketing pages. Integrations like this are part of our custom development work.

Technology

What PostRoost Runs On

Two systems with one contract between them, documented in both repositories.

Application

  • Next.js 16 with the App Router and server actions
  • React 19 and Tailwind CSS 4
  • PostgreSQL with Prisma 7
  • Auth.js sign-in
  • Anthropic API for the writing assistant
  • Cloudflare R2 for media storage

Marketing site

  • WordPress with a custom classic theme
  • Plugin for page fields, content sync, SEO output, sitemap and redirects
  • Plugin for Stripe checkout, billing accounts and webhooks
  • Plugin for the editorial publishing queue
  • Cloudflare in front

Quality checks

  • Automated tests on every page: status, H1, SEO tags, structured data, links, accessibility (axe) and reflow
  • Performance budgets: CSS, JavaScript and total transfer per page
  • Billing tests against a Stripe test double, plus end-to-end tests across both systems

Where it stands

Live, Fast and Ready to Grow

PostRoost is public at postroost.io with all six plans, seven networks and a blog that publishes on schedule. It is a new product, so this page reports what we can measure today rather than growth figures. We will update it as real usage data comes in.

55
Pages live at launch
72
Articles in the blog
10
FAQs on every page
Live mobile Lighthouse, postroost.io, median of 3 runs (November 13, 2026)
PagePerformanceLargest Contentful PaintLayout shift (CLS)Total Blocking Time
Home991.65 s0100 ms
Pricing1001.21 s00 ms
Feature page (approval workflows)1001.37 s074 ms
Blog index1001.21 s00 ms

Lab measurement with Lighthouse 12.8, default mobile profile (simulated slow 4G and a 4x slower CPU), run against the live site. Real-user Core Web Vitals will follow once Search Console has enough traffic data.

What it shows

What We Would Do the Same Way for a Client

Building our own product meant living with every decision. These are the ones we would repeat.

  • Keep the marketing site separate

    The product can ship daily without risking the pages that rank, and marketers publish without a developer. WordPress is still the fastest way to give a team that freedom.

  • Plan pages by search intent first

    A page map written before any copy stops two pages from competing for the same search and shows where internal links belong. See WordPress SEO.

  • Set a performance budget

    Limits on CSS, JavaScript and page weight, checked by tests, keep a site fast after launch, not only on launch day.

  • Only claim what the product does

    Every feature line and FAQ was checked against the code. Accurate pages convert better and age better than inflated ones.

Questions About the PostRoost Build

What we built, why we built it this way, and what it means if you are planning a SaaS product or its website.

Is PostRoost a client of MAK Digital?

No. PostRoost is our own product. MAK Digital designed and built the application, the marketing site, the billing integration and the content, and we run it. We publish it as a case study because it shows the same work we do for clients.

What does PostRoost do?

It plans, approves, schedules and reports on social media posts for several clients from one place. Each client has its own calendar, accounts, brand voice, time zone and approval rule, and it publishes to Facebook Pages, Instagram, LinkedIn, X, TikTok, YouTube and Pinterest.

Why is the marketing site on WordPress when the app is Next.js?

The two jobs are different. The app needs a fast, secure interactive framework. The marketing site needs easy publishing, structured SEO and a content team that does not wait for deployments. Splitting them lets each move at its own speed, with a documented contract for billing and accounts between them.

How fast is the PostRoost site?

We measure it with mobile Lighthouse on the live site; the results table on this page lists the pages, scores and timings. The site loads one small stylesheet and about 2 KB of JavaScript, with no page builder.

Can MAK Digital build a SaaS product or its website for us?

Yes. We build web applications, custom WordPress sites, and the integrations between them, including subscription billing. See web development services and WordPress development, or request a quote.

Can you do the SEO for a new SaaS site?

Yes. We plan pages by search intent, build structured data into the templates, write and schedule content, and set performance budgets. See SEO services and WordPress SEO.

Planning a SaaS Product or Its Website?

Tell us what you are building and who it is for. We will tell you how we would split the work, what it would cost to run, and where search traffic could come from.

See all Case Studies

More on WordPress

From the eCommerce Experts

Read Our Blog

Start Your Project With Us

Share some details, and our team will follow up.

Please write at least 20 characters.

Click to upload or drag and dropUp to 5 files, 10 MB each

    Get the MAK Digital Newsletter

    eCommerce design, development, SEO, and marketing insights, a few times a month. No spam, unsubscribe any time.

    By subscribing you agree to our privacy policy.