What is a CMS?
A content management system lets non-developers create, edit, and publish content in your application without touching code or the database. Instead of emailing a developer every time you need to update a landing page, change a product description, or add a blog post, an editor logs into a web interface and makes the change directly.
There are two main categories. A headless CMS (Contentful, Sanity, TinaCMS, Strapi) stores content as structured data and delivers it via API to your application — keeping your codebase clean and your content management flexible. A traditional CMS (WordPress) bundles content management with the frontend presentation layer, which is simpler to start but harder to integrate with a modern app.
For custom domains — managing course content in an LMS, property listings in a real estate app, job postings in a recruitment platform — the CMS is often a purpose-built admin interface rather than an off-the-shelf product.
When does your app need it?
- Marketing or operations staff need to update content without requesting developer time
- You publish regularly — blog posts, announcements, case studies, help articles
- Product content changes frequently — pricing pages, feature lists, FAQs, legal documents
- You're managing structured content with complex types — courses, listings, products, events
- You need a publishing workflow — draft, review, schedule, publish — rather than instant changes
- Media management matters: uploading and organising images and documents without FTP access
How much does it cost?
Adding a CMS typically adds 8–16 hours of development — roughly $1,000–$4,000 AUD.
Lower end: Wiring a headless CMS (Sanity, TinaCMS) into an existing Next.js site for blog posts and marketing pages. The CMS vendor provides the editing interface; the integration work connects your app to their content API.
Higher end: A custom content admin for domain-specific types with complex schemas, media management, multi-locale support, scheduling and publishing workflows, role-based editing permissions (author vs editor vs publisher), and a preview mode that shows how content will look before it's published.
How it's typically built
For marketing content, TinaCMS or Sanity is a common choice in the Next.js ecosystem. TinaCMS stores content in MDX files in your Git repository — no database required, and content changes go through version control. Sanity provides a hosted backend with a flexible schema and real-time collaborative editing.
For apps that already have a database and need to manage domain content (e.g. course modules, property listings), a custom admin interface using a framework like React Admin or Refine is often more appropriate than bolting on a third-party CMS.
Rich text content is stored as structured data (Portable Text, Slate, or MDX) rather than raw HTML, which makes it easier to render consistently across web and mobile. Image management integrates with a CDN — Cloudinary, Imgix, or a simple S3 bucket with CloudFront — for optimised delivery.
Questions to ask your developer
- Who are the editors and how technical are they? This drives the choice of CMS interface and workflow complexity.
- Is off-the-shelf CMS or a custom admin the right fit? General content → headless CMS; domain-specific structured content → custom admin.
- Do you need a publishing workflow? Draft/review/publish states add scope but are important if content needs sign-off before going live.
- How will images and media be managed? Storage, CDN, and resizing all need to be considered.
- Does content need to be versioned or rolled back? Git-backed CMS (TinaCMS) gives this for free; database-backed CMS needs explicit versioning.
See also: Admin panel · Technical SEO setup · App cost calculator