LOADING
News Pro editorial calendar, story workflow and publishing analytics
News · Magazine · Blog platform

A newsroom your editors can actually run.

A complete publishing platform — reader experience, editorial workflow and operations — where the people who write the news also control how it looks, without waiting on a developer.

  • PHP 8.4
  • MariaDB
  • Tailwind v4
  • Multilingual
  • No Vendor Lock-In
Homepage BuilderThe layout is data, not code
Live
Trending Feed
Editor's Picks Feed
Most Discussed Rail
Popular Tags Rail
Saved — the next reader sees the new order.
Version restoredAnd that's undoable too
3.06 MB → 613 KBBefore a reader sees it
News Publishers Magazines Independent Newsrooms Editorial Blogs Multilingual Publications Media Groups News Publishers Magazines Independent Newsrooms Editorial Blogs Multilingual Publications Media Groups
The Four Pillars

Four Things a News Site Has to Get Right

Readers, editors, trust and operations — the rest of this page is these four, in detail.

01 · Readers

An app shell built for reading

Infinite feed, reading progress, bookmarks, follows, and a search that answers as you type.

02 · Editors

Everything editable in the admin

Articles, comments, media, pages, ads, users, roles — and the homepage layout itself.

03 · Trust

Nothing is a one-way door

Version history on every article, a restore that is itself undoable, and a log naming who changed what.

04 · Operations

One command each

Verified backups, image processing, scheduled publishing and storage reclaim.

An evaluation that starts on a live-looking site

This install ships populated from a publisher's public RSS feeds — with visible source credit and a canonical link on every imported story — so day one is not an empty database.

584Articles
15Sections
460Topic Tags
584Images
6Desks
The article
Table of contents
Related by tag
Author box
Bookmarked
2 replies
62% read Resumes here
Dark, first-class
For Readers

Built for People Who Read to the End

Light and dark are both first-class, and the whole shell is keyboard navigable.

The Feed

Latest, popular or most discussed — infinite scroll with skeletons, filtered by news, video or gallery.

The Article

Reading progress, auto-generated contents, related-by-tag, previous and next, and an author box.

Accounts

Bookmarks, upvotes and follows that persist — plus history that resumes an article where it was left.

Personalisation

Topics drawn from what a reader actually read, topped up with trending so it is never empty.

Discussion

Threaded replies one level deep, per-user likes, a moderation queue, and notifications when a reply lands.

Search

elec⌘K
Election results live
Author · A. Menon
Tag · elections
The Newsroom

Fourteen Screens, No Database Client Required

Everything the newsroom touches, day to day, has a screen behind it.

Publishing

Dashboard Articles Comments Categories

Presentation

Media Pages Homepage Navigation

Governance

Ads Activity Users Roles

Configuration

Mail · with live test Settings · identity & SEO

Identity, socials and SEO defaults are settings — rebranding for a demo is a form, not a code edit.

Editors, Not Developers

The Layout Is Data, Not Code

On most platforms, "move Trending above Editor's Picks" is a developer ticket. Here it is two clicks, and the homepage changes for the next reader.

Homepage Builder

The feed column and the right rail — reordered, retitled, hidden or removed. Widgets know which column they're allowed in.

Navigation

Menu items, nesting, icons and order — pointing at a category or any URL.

Categories & Tags

Nested sections with colours, and tags created on first use.

Advertising

Three placements with scheduled start and end, and impressions and clicks counted per ad.

Pages & Settings

Static pages in rich text; site identity, socials and SEO defaults without touching a file.

No Blank Boxes

A widget that resolves to nothing is dropped rather than left as an empty heading — an editor can't accidentally publish one.

Version history
Field: headline v24 → v25
REPLACEDCouncil votes on budget
CURRENTCouncil approves budget, 8–3
Edited by A. MenonIP logged · 2 fields changed

Restoring is itself a save — the text it replaces goes into history too.

Editorial Control

Every Edit Is Recoverable, and Attributable

There is no one-way door. Permissions are tickboxes, not code — and the editor refuses a change that would leave nobody able to grant permissions again.

Version History

Every save stores the version it replaced, with a field-level diff. The last 25 are kept per article.

Undoable Restore

Restoring is a save, so the text it replaced goes into history too.

Activity Log

Every admin action logged with the account, the IP and the exact fields that moved.

RoleCan doCannot
Administrator Everything, including roles and settings
Editor Publish, moderate, manage categories and media Change roles or settings
Author Write and edit their own work Publish, or touch anyone else's article
Subscriber Read, comment, bookmark, follow Reach the admin at all
Media Pipeline

A 3 MB Phone Photo Never Reaches a Reader

Every upload is capped, re-encoded and served in the format the browser prefers. Measured on a 4000×3000 press photo.

One upload, four sizes

Sizes read off disk, not estimated
4000×3000
As uploaded
3.06 MB
Stored · 2000px
1.05 MB
WebP served
613 KB
Card thumbnail
76 KB

Automatic

Resize, WebP and thumbnail on upload. Nothing for an editor to remember.

Reusable

A searchable library — pick an existing image instead of uploading it twice.

Self-Cleaning

Images nothing references are reported, then reclaimed on command.

Video

An Article Carries a Video or an Image — Never a Muddle

One or the other, enforced three times over: in the editor, on the server, and by the database itself.

Option A

Paste a link

YouTube or Vimeo. The embed is rebuilt from a validated ID rather than the pasted string, and the player only loads if a reader scrolls to it.

Rebuilt From a Validated ID
Loads Only on Scroll
No Tracking Cookie Until Play
Option B

Host it yourself

MP4 or WebM up to 100 MB, for short clips you own. Served straight from your origin with seeking support.

Served From Your Own Origin
Seeking Supported
Nothing Fetched Until Play

The Data Cannot Contradict Itself

Image or video, enforced in the editor, on the server and by database constraints.

A Poster Image Is Required

Because feed cards and social previews never render a player.

Switching Modes Cleans Up

Replacing a video releases the old file rather than leaking it.

Security

Assume the Upload Is Hostile

Reader privacy is a feature: no analytics, advertising or tracking scripts, one session cookie — and therefore no cookie banner to dismiss.

Uploads

Type read from the file's own bytes, never its name. Stored under a random name with an extension derived from what it actually is — so shell.php.jpg cannot survive as a script.

Published HTML

An allowlist sanitiser on every body and page. Scripts, iframes, inline handlers and javascript: URLs are removed — not escaped and hoped over.

Accounts

Hashed passwords, session id regenerated on login, IP-keyed rate limiting on sign-in, and reset tokens stored hashed.

Forms

CSRF tokens on every write. Failures return a real HTTP status with a readable message.

Database

Bound parameters everywhere. Constraints enforce the rules the application relies on, not just the UI.

Secrets

The SMTP password is encrypted at rest with libsodium, and never travels on a command line.

No Analytics Scripts No Tracking One Session Cookie No Cookie Banner
Performance, Reach & Interface

Fast by Default. Found by Search.

And a set of interface details the newsroom feels every single day.

Caching that never goes stale

The navigation, rail and settings are cached and dropped the moment an editor changes them — so a change is visible now, not in five minutes. Ships with a file cache.

Images Carry Their Dimensions
Player & Below-Fold Images on Demand
Scheduled Publishing Without Cron

SEO without a plugin

Per-article meta and OpenGraph, JSON-LD article and breadcrumb schema, a generated sitemap and RSS feed — and clean slugs that stay put, because a live URL is a promise.

Meta & OpenGraphJSON-LD Breadcrumb SchemaSitemap RSS FeedStable Slugs

A Toolbar That Cannot Betray You

The editor only offers formatting the sanitiser keeps — so what a writer sees is what survives. A source view is one click away.

Searchable Dropdowns, Everywhere

Every dropdown filters as you type, with full keyboard control. Twenty-one categories stop being a scroll.

Accessible by Construction

Labelled controls, ARIA combobox semantics, visible focus, and announcements for assistive tech.

Works on a Phone

The admin is responsive, and dropdowns become bottom sheets rather than fighting the on-screen keyboard.

Degrades Honestly

Every enhanced control is a real form control underneath — so a slow network or a script error still leaves a working page.

Platform Capabilities

Four pillars, one platform

Readers, editors, trust and operations — switch between them.

Readers

A shell built for reading

Infinite feed with skeletons, reading progress, bookmarks and follows that persist, and history that resumes where a reader left off.

Latest · Popular · Most Discussed
Search That Answers as You Type
Threaded Comments & Notifications
Light & Dark, Keyboard Navigable

See the Demo

Reader shell
Infinite feedSkeletons
Bookmarks & follows
Reading progress
62%
Editors

Ship without a developer

Layout, menus, pages and adverts are all data. Fourteen screens cover the newsroom's day without anyone opening a database client.

Homepage Builder
Navigation, Categories & Tags
Ad Placements With Scheduling
Pages, Identity & SEO Defaults

See the Demo

Homepage widgets
TrendingFeed
Editor's PicksFeed
Most DiscussedRail
Trust

Mistakes are cheap here

Versioned articles with a field-level diff, a restore that is itself undoable, and an activity log that names the account, the IP and the fields.

Last 25 Versions per Article
Field-Level Diffs
Eleven Permissions Across Four Roles
Can't Lock Everyone Out of Roles

See the Demo

Activity log
headline changedA. Menon · IP logged
version restoredKept as a new version
role permissions updated2 tickboxes moved
Operations

The unglamorous things, done properly

A backup nobody has restored is a guess. This one has been restored — every table and every row count matched.

Nightly Backup With Retention
Verify · Proves a Dump Isn't Truncated
Scheduler · Publishes on Time
Reclaim · Removes Unreferenced Uploads

See the Demo

Restore test
Tables restored30 / 30
Row counts matched100%
Manual steps to back up0
Operations

Five Commands, One Job Each

A backup nobody has restored is a guess. This one has been restored.

Backup

Consistent database snapshot plus uploads, with retention.

Nightly

Verify

Proves a dump is complete, not truncated by a full disk.

Per backup

Scheduler

Publishes articles whose time has come.

Per minute

Reclaim

Reports, then removes, uploads nothing references.

Weekly

30/30

Tables restored in a verified test

100%

Row counts matched after restore

0

Manual steps to take a backup

Engineering

Evidence, Not Adjectives

Every figure measured against the codebase, not estimated.

165

Automated tests, all passing

30

Database tables

111

Routes

14

Admin screens

11

Permissions, 4 roles

218

Interface strings, one file

Tested Where It Matters

The sanitiser is tested with the payloads that actually got through it. The backup is tested by restoring it. The dropdowns are driven in a real DOM.

No Framework Tax

A custom MVC core with no Composer install and no framework upgrade treadmill. What is here is what runs.

Yours to Host

Standard PHP and MySQL/MariaDB on any host, including shared. No SaaS dependency, no per-seat licence, no data leaving your server.

Localisation & Syndication

A Newsroom in Your Language, Filled on Day One

The platform is language-neutral. This install runs as a Tamil newsroom end to end — interface, navigation, sections, widget headings and static pages.

The interface is one file

Every label, button, empty state and relative timestamp reads through a translation lookup keyed on the English source text. Adding a language is adding a file and changing one setting — no template edits.

Untranslated Strings Fall Back to English
A Partial Translation Is Still a Working Site
Plurals Translated as Sentences, Not Nouns
Non-Latin URLs Work End to End

The newsroom filled itself from a feed

A one-command importer reads a publisher's public RSS feeds and files 584 stories into 15 sections, downloading and processing every featured image onto local disk. Re-running refreshes text without re-fetching images.

Every imported story carries a visible source credit and a canonical link to the original.
Section names come from the feed — a renamed section arrives renamed, and empty ones are dropped rather than left as dead ends.

Adding a locale is a translation file plus one setting, and the URL, word-counting and plural machinery is script-agnostic. What isn't free is anything needing per-language linguistics — tag grouping needs a morphological analyser, and right-to-left scripts would need CSS work.

Roadmap

What Is Here, and What Is Next

Stated plainly on purpose. Everything under Shipped is running and tested today; nothing under Next is presented as if it were.

Shipped

Running and tested today
Reader Experience, Accounts, Comments, Notifications
Fourteen Admin Screens With Roles and Audit
Article Versioning and Restore
Image Pipeline, Media Library, Video
SEO, Caching, Backups, Scheduling
Full Tamil Interface, Non-Latin URLs, RSS Import

Next

Not presented as if it were here
Next
Footer & sidebar linksFrom the same menu editor navigation already uses
Next
Newsletter campaignsSending works; the composer and queue do not exist yet
Next
Redis cacheInterface ready and tested; the file cache serves today
Next
Full-page cachingFor very high traffic
Next
A language switcherThe locale is set per install today, not per reader
Next
Tag grouping for TamilNeeds a morphological analyser; inflected forms coexist
In Short

The Newsroom Owns the Newsroom

Editors Ship Without Developers

Layout, menus, pages and adverts are all data.

Mistakes Are Cheap

Versioned articles, undoable restores, verified backups.

Fast and Findable

Images cut to a fifth, SEO and feeds built in.

Speaks Your Language

The whole interface is one translation file.

Yours

Standard PHP and MySQL, your server, your data.

Live Demo · Full Source

See it running, then take the whole codebase with you.

Get Started

A Newsroom Your Editors Can Actually Run

Live demo available, full source included. Let's walk your team through the newsroom they'd be running from day one.