A complete bilingual local-news platform — editor, workflow, ads, sponsorships, paid interviews, newsletter, payments — sold once, self-hosted, yours. Everything above changed in the back office. None of it needed a developer.
Most white-label templates mean “find and replace the name.” Folio means three genuinely separate things move, and only one of them is code.
Name, abbreviation, tagline, copyright line, area served, founding date, and the masthead seal — per language, all in the back office. There is no brand string to grep for, because there is no brand string.
One line in i18n/routing.ts and a message file. English and Vietnamese, English and Spanish, or one language on its own. Fourteen are ready in the database; adding a fifteenth is one migration line.
Time zone and currency are settings, not constants. Dates, the scheduling board, the daily digest, revenue reports and every admin table follow them.
This was tested the honest way. An independent pass took a clean export, switched the language pair to English + Vietnamese, and ran the whole chain — install, migrate, seed, build, four gates, pre-launch check, create content in the back office, view the front end, smoke test. It never had to open a source file to make a step work.
This is where Folio parts company with a blog engine. A local publisher does not live on page views — it lives on the businesses down the street.
A public service page with tiered plans, an enquiry inbox, orders, Stripe checkout or manual payment, and a business-insights view that answers “did this month pay for itself?”
Ten placements with weighted rotation, impression goals and auto-stop, click and impression tracking, and a sponsor label that is never hidden from readers.
Double opt-in, per-language audiences, a block composer, scheduled sends, suppression list, and delivery events fed back from the provider.
Two more ways to sell a slot to a local business or a professional, both with their own front-end surfaces and back-office forms.
Rich editor with revisions, an optional single review gate, scheduling, corrections, unpublish with 410 or redirect, submissions inbox, reader comments with moderation.
Audit log on every state change, role-based permissions, notification preferences with an email digest, media library with licence expiry warnings, redirects, sitemaps, RSS, structured data.
Including source-scanning guards that fail the build if a component formats a date without the site time zone, if a notification type is listed with nothing to fire it, or if a previous client’s name reappears anywhere in the tree.
Written down to the table, the permission and the error case — plus sixteen architecture decision records explaining why each fork was taken and what would justify revisiting it.
The codebase ships with the constraints it was written to. Point Claude Code or Cursor at it and your assistant inherits them instead of guessing.
pnpm run setup asks what it needs, writes the environment file, runs the migrations, seeds a fictional town’s worth of demo content, creates your owner account, and prints a pre-launch report.
Everything below is true, and you would rather find out now than after paying.
One production publication. Deploy it, modify it, own your changes. Twelve months of updates; the licence itself does not expire.
Unlimited client publications. Build and hand over finished sites under your own name. Everything above, plus the right to deliver it as client work.
The store opens shortly. Licences are being set up right now; the demo above is the real product running, and it is the thing you would be buying. Check back in a day or two.
Neither tier lets you resell the source itself, repackage it as a starter kit, or run it as a multi-tenant service. The full terms ship with the purchase and are worth ten minutes of your time before you deploy.