Newsroom CMS for a Bilingual Namibian News Outlet
Designed and built a clickable newsroom system for an independent English and Afrikaans digital outlet in Windhoek: a story budget board that refuses stories not ready to publish, a block editor with style-guide hints and linked translations, and a review queue where flagged stories wait for a legal decision before they can go out.
Most of our work is under NDA. Per agreement, we can share the work but not the company details - all names and identifying information shown here have been changed.
Newsroom home, story budget board, stories list, story editor and review queue. Every one of the 29 demo stories opens in its own editor.
Headline and standfirst, editor approval, no open legal flag, cleared image rights, captions and alt text in both languages, SEO title within 70 characters and ticked fact-checks. A board card that fails one is refused with the reason.
Each pair is two stories joined by a translation link. When the source changes after the last sync, the editor shows which version the translation was checked against.
17 in English and 12 in Afrikaans across 7 sections, with 21 staff, freelance and external users, 12 photos with licences, 5 pitches and 11 review items.
Omuramba News grew from a weekly newsletter into a daily newsroom of 22 staff and around 40 freelancers, but still ran on a blogging plugin, a shared spreadsheet for the story budget and a messaging group. The Afrikaans desk copied English stories by hand, so the versions drifted and corrections in one language never reached the other. Nobody could see which stories were waiting on a lawyer, photos went out without checked rights, and a correction was an edit with no trace.
Kolom follows a story from pitch to publish in both languages. Editors plan the day on a budget board that runs the publish checks on every move, reporters write in a structured block editor with inline style-guide hints, English and Afrikaans versions stay linked with a warning when they fall out of step, and any flagged story waits in the review queue until a legal reviewer records a decision.
A small independent outlet publishes the same news twice, in English and Afrikaans, under press freedom that sits alongside privacy and dignity, and under a self-regulation code that expects accuracy, a right of reply and prompt correction.
The English and Afrikaans stories were separate posts copied by hand. Nobody knew which version a translation was based on, and a correction made in one language often never reached the other.
Article 21 of the Namibian Constitution protects press freedom, but stories that name private people in allegations still need a lawyer's eye. Flags lived in chat, so a sensitive story could be scheduled with no decision on record.
Every image needs its source, credit, licence and usage limits, and agency pictures are licensed for a set period. Without a record, photos went out with expired licences or missing captions.
Namibian media take part in self-regulation through the Editors' Forum and its Media Ombudsman. Corrections had no record, embargoes were a note in the spreadsheet and nobody could see how long a story had been waiting for review.
Mapped 13 roles, from reporter and sub-editor to an external legal reviewer and freelancers with limited logins, and 39 screens: 28 for the newsroom and admin and 11 for the mobile-first reader site. Defined the data model for stories, versions, translation links, legal reviews, photos and licences, corrections, embargoes and the paywall meter. Wrote down the rules the design follows: Articles 13 and 21 of the Constitution, the Editors' Forum code and Media Ombudsman, the Electronic Transactions Act 2019 and IPTC photo metadata.
Built 5 key screens on a production dashboard kit with seeded demo data: the newsroom home with KPIs, today's budget and a needs-attention list, the budget board with drag and drop, publish checks and a pitches tray, the stories list, the story editor with blocks, margin comments, style-guide fixes and a settings rail, and the review queue with Record legal decision. The language desk switch filters every list by English, Afrikaans or both.
The remaining screens: assignments, live blogs, translations, the photo desk, schedule and embargoes, homepage curation, push alerts, newsletters, corrections log, analytics, supporters and admin, plus the English and Afrikaans reader site with its metered paywall. Integrations with DPO Pay or PayToday, an image service, agency feeds, oEmbed, push and newsletter providers, search, analytics and Google Workspace sign-in. Role-based access, an append-only audit log, and counsel's confirmation of the data protection and electronic transaction rules before launch.
Moving a card into Ready, Scheduled or Published runs the same 7 publish checks the editor shows live. If one fails, the drop is refused and the card says why, so a missing approval or an uncleared photo is caught on the board, not after publishing.
Any editor can flag a story with a reason. The legal reviewer records cleared, cleared with changes or hold, with notes required, and a story without a decision cannot be published. A scheduled story still on hold shows up in Needs attention.
English and Afrikaans stories are linked, not copied. The editor shows a banner when the source has moved on since the last sync, and adding a correction asks whether to apply it to the linked translation too.
The review queue turns amber after 2 hours and red after 4. The home page lists embargoes lifting soon, photo licences about to expire, quiet live blogs and new correction requests, each linked to the story it affects.

Designed and built a clickable operator console for a Nairobi streaming service that sells local films, series and documentaries in Kenya, Uganda, Tanzania and Rwanda: a catalogue that only publishes ready, licensed titles, an encoding and DRM pipeline with plain-language errors, and M-Pesa reconciliation with suggested matches.

Designed and built a clickable creator studio for a Santiago membership platform: tiered memberships priced in Chilean pesos, paywalled posts with access by tier, a member list that respects what each member agreed to share, and payouts that show every fee, refund and chargeback deducted.
Enterprise Software Engineering - Human + AI
Contact Us
© 2026 - Copyright. All Rights reserved Oceanlab
Location
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
Enterprise Software Engineering - Human + AI
Contact Us
Locations
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
© 2026 - Copyright. All Rights reserved Oceanlab