Skip to content
Web Development10 min read

CMS, Framework Admin, Internal-Tool Builder or Custom: How to Choose Your Admin Panel

Choosing an admin panel: CMS, Django or Laravel admin, Retool or Appsmith, or custom. A job-by-option matrix and a back-office requirements checklist.

01

Which admin panel option fits?

Use a CMS for marketing content. Use a framework admin (Django admin, Laravel Filament or Nova) when a small, trusted team needs to manage records in an app you already build on that framework. Use an internal-tool builder (Retool, Appsmith) for operational screens that pull from several systems and change often. Build a custom admin for processes that are high-risk, multi-step or used by your customers' own administrators. Most products end up with two of these, not one.

The question is often asked as "CMS vs custom admin panel", but that frames it as a choice between two versions of the same thing. They are different jobs, and the right tool depends on which job each screen does. This guide is for founders, product and operations leads scoping a back office for a product that already exists or is being built.

02

Key takeaways

  • Separate content management from operational back-office work before choosing a tool.
  • A framework admin is quick and cheap for internal record management, within the limits its own docs set.
  • Internal-tool builders trade per-user pricing and platform dependence for speed.
  • Custom admin earns its cost on high-risk or process-heavy work, and on anything customers use.
  • Roles, audit logs, bulk actions, imports and exports, approvals and reporting decide the choice more than the user interface does.
03

Content management and back-office operations are different jobs

Django's documentation draws the line clearly. It says: "The admin's recommended use is limited to an organization's internal management tool. It's not intended for building your entire front end around." It adds: "If you need to provide a more process-centric interface that abstracts away the implementation details of database tables and fields, then it's probably time to write your own views." (Django 6.1 admin docs). The same logic applies to every option below: tools that expose records are fine for people who understand the records, and processes need screens designed around the process.

Content managementOperational back office
Typical workPages, articles, media, SEO fields, previews, publishingUsers, orders, refunds, subscriptions, approvals, support look-ups, bulk fixes
Who uses itMarketing and editorial staffOperations, support and finance staff
DataDocuments and assetsTransactional records linked to money and accounts
PermissionsWho can edit and publishWho can see personal data, move money, approve, impersonate
Audit needsRevision historyWho did what to which record, when, and why
04

The four options

A CMS, traditional or headless. Built for publishing. Some, such as Directus, describe themselves more broadly: its repository says it can "Turn your DB into a headless CMS, admin panels, or apps" over SQL databases, with generated REST and GraphQL APIs. Note its licence: the repository now states the Monospace Sustainable Core License (MSCL) 1.0, source-available, free for organisations under $5M annual revenue and 50 employees (Directus on GitHub, vendor). For content-only decisions, see how to choose a CMS and custom CMS vs WordPress.

A framework admin. Django ships an admin with bulk "actions" on selected records and a built-in "delete selected objects" action, and its LogEntry model tracks additions, changes and deletions made through the admin (Django admin actions). On Laravel, Filament is MIT-licensed and describes itself as a way to "Build and ship apps & admin panels fast with Livewire" (Filament on GitHub); it includes actions to import rows from a CSV and export to CSV or XLSX. Laravel Nova is a paid admin package (prices below).

An internal-tool builder. Retool and Appsmith let you assemble screens over databases and APIs with less code. Appsmith's repository describes it as a "Platform to build admin panels, internal tools, and dashboards" and is Apache-2.0 licensed (Appsmith on GitHub). Both offer hosted and self-hosted versions. For the wider low-code question across whole business applications, see low-code vs custom software.

A custom admin. Screens built in your product's own codebase around specific processes, with permissions and audit designed for them. It costs the most to build and has no licence fee.

05

Admin jobs mapped to the four options

Find the jobs your team does every day in the left column. Where most of your rows point the same way, that is your default; where one row points elsewhere, that screen may deserve a different tool.

Admin jobCMSFramework adminInternal-tool builderCustom admin
Edit marketing pages and mediaBest fit: built for it, with previews and publishingPoor fit: no editorial workflowPoor fitRarely worth building
Manage a product catalogueWorkable for content fields; weak for stock and pricing rulesGood fit for structured recordsGood fit if data comes from several systemsWhen catalogue rules are complex
Look up a user and reset accessPoor fitWorkable with tight permissionsGood fit; check credential handlingGood fit for sensitive or high-volume support
Issue a refundNot suitableRisky as a raw field edit; add a custom actionWorkable if it calls your payment API, not the databaseBest fit: limits, reasons and approval built in
Approve a vendor or KYC applicationNot suitableWorkable for simple yes or noGood fit for a review queueBest fit for multi-step or regulated approvals
Bulk-fix recordsPoor fitGood fit with admin actions; mind the delete actionGood fit with a preview stepWhen fixes need validation and rollback
View who changed whatRevision history for contentDjango LogEntry covers admin changes; app changes need moreAudit logs on paid plansDesigned to your audit requirements
Reporting and exportsPoor fitBasic exports (Filament CSV or XLSX)Good fit for internal dashboardsWhen reports are customer-facing or audited
Customers' admins manage their own teamsNot suitableNot suitableNot suitable for most productsBest fit: belongs inside the product
06

Back-office requirements checklist

Score each candidate against these before comparing screenshots. The usability of a back office matters, but these requirements are what decide whether it is safe to use and possible to change later.

  • Roles and least privilege: each role sees and changes only what it needs. OWASP's authorisation guidance says to deny by default, validate permissions on every request and enforce checks on the server (OWASP Authorization Cheat Sheet). See SaaS roles and permissions.
  • Audit log: who did what, to which record, when, with the before and after values, kept where staff cannot edit it.
  • Bulk actions: a preview of affected records, a limit on batch size, and a way to undo or reverse.
  • Imports: validation before anything is written, a clear error report, and a dry-run mode.
  • Exports: limited by role, with personal data masked where the job does not need it.
  • Approvals: maker-checker for money, refunds, account changes and onboarding decisions, so one person cannot request and approve.
  • Impersonation: if staff can view as a user, it is logged, time-limited and visible to the user where appropriate.
  • Reporting: which numbers staff need daily, and whether they come from the live database or a reporting copy.
  • Credentials: what database or API access the tool holds, and whether it uses a restricted account instead of full production credentials.
  • Hosting and data location: hosted or self-hosted, and whether that meets your contracts.
  • Cost growth: licence cost at today's staff numbers and at three times that.
  • Exit: what you keep if you leave the tool: code, queries, screen definitions, data.
07

What each option costs to run

Prices are vendor list prices shown on each vendor's page on 15 October 2026, in dollars as displayed, excluding tax. They change. No build costs are given, because they depend entirely on scope.

OptionLicence or list priceWhat makes the cost grow
Django adminPart of Django, open sourceDeveloper time for custom actions, permissions and views
Laravel FilamentMIT licence, freeDeveloper time; any paid plugins you choose
Laravel NovaSingle project $99 one-time, renews at $79 a year; Unlimited $299 one-time, renews at $249 a year. Includes a year of updatesRenewals for continued updates; developer time
RetoolFree up to 5 users. Team: builders $10 (annual) or $12 (monthly), internal users $5 or $7, per user a month. Business: builders $50 or $65, internal users $15 or $18. Enterprise: customEvery additional staff user; Business needed for audit logs on cloud; Enterprise required for SSO and unlimited self-hosted users
AppsmithFree up to 5 users on cloud; Business $15 per user a month, up to 99 users; Enterprise $2,500 a month for 100 users. Community edition free and open sourceStaff headcount; Business adds audit logs and granular roles; SAML or OIDC SSO is Enterprise
DirectusMSCL 1.0; free for organisations under $5M revenue and 50 employeesA commercial licence above those thresholds for advanced or enterprise features
Custom adminNo licenceDesign, build, testing and maintenance time for every screen

Worth noting

Vendor pricing sources: Laravel Nova, Retool pricing, Appsmith pricing. Retool's page was not fully consistent about audit logging on self-hosted Business plans, so confirm with the vendor if that matters to you.

08

Hypothetical example: one marketplace, three back-office tools

Hypothetical example: a two-sided marketplace with a marketing site, a buyer app and a seller app, run by a small operations team.

The marketing site's pages and blog sit in a headless CMS, because editors need previews and publishing and nothing more. The operations team manages listings, categories and user look-ups in the framework admin that ships with the backend, with roles limiting who can see payout details. Bulk fixes go through admin actions that show the affected records first.

Two jobs did not fit. Seller onboarding needs document checks, two reviewers and a reason for every rejection, so it gets a custom review screen with maker-checker and its own audit trail. Sellers managing their own staff is customer-facing, so it lives inside the seller app with tenant-scoped permissions. An internal-tool builder could have handled the review queue too; the deciding factors would be how many staff use it, where the documents are stored, and whether the builder may hold credentials to that data.

09

When each option is the wrong choice

A CMS is the wrong choice for transactional records. It lacks the permission model, audit trail and validation that money and accounts need, and bending it creates a fragile back office.

A framework admin is the wrong choice for people who do not understand the underlying records, for multi-step processes, and for anything customers use. Django's own docs say it is not intended for building your front end around. Be careful with defaults: Django's built-in bulk delete uses QuerySet.delete(), so a model's own delete() method is not called.

An internal-tool builder is the wrong choice when per-user costs at your real staff numbers exceed the cost of maintaining code, when the tool would need broad production credentials, or when hosting and data location rules rule out the hosted version and you cannot run the self-hosted one well. Business logic built inside the builder is hard to move.

A custom admin is the wrong choice for simple record editing that a framework admin already does, or when nobody will fund maintenance. Every screen is code to test and update.

If you are still deciding whether the product needs application features at all, start with custom website vs web application.

10

Sources

Framework documentation: Django 6.1: the Django admin site; Django: admin actions; Filament repository (MIT); Filament import action; Filament export action.

Vendor pages: Laravel Nova; Retool pricing; Appsmith pricing; Appsmith repository; Directus repository.

Security guidance: OWASP Authorization Cheat Sheet.

Accessed 15 October 2026. Prices, licences and plan features are vendor data and change; check the current pages before deciding.

11

Next steps

List the five things your operations team does most often, and the two that would hurt most if done wrong. Put each in the job matrix, then score your shortlist against the requirements checklist, including licence cost at three times today's headcount. Keep marketing content in a CMS whatever you choose, and design anything customers touch as part of the product. If the back office is part of a larger build, it belongs in the same web application development scope as the product, with the admin screens designed for the people who use them every day.

Not sure which admin jobs deserve a custom screen?

ZSpace Labs is a remote-first technology studio that works with clients globally on web application development and UI/UX design. If useful, list the jobs your operations team does every day and we can talk through which belong in a CMS, which in a framework admin or builder, and which need a custom screen.

Start a Project
FAQ

Common questions.

If the work is publishing pages, articles and media, a CMS is built for it. If the work is operating records such as users, orders, refunds and approvals, a CMS is the wrong tool and you need a framework admin, an internal-tool builder or a custom admin. Many products use a CMS for marketing content and one of the other three for operations.

Get in touch

Have a project in mind?

Whether you're building a new digital product, improving an existing website, or looking to automate part of your business — let's talk.