Idepoo Software

Newsroom platform: a whole newsroom, from draft to audience

A role-controlled editorial workflow, photo and video desks, reporter administration and press cards, multi-channel distribution and a fast, SEO-ready news site — Persian-first, with the Jalali calendar and the Tehran newsroom clock.

Who it is for

News agencies, news sites and press offices that publish dozens of stories a day and need more than a blog with plugins: a newsroom with several desks and several roles, photography and video that must be managed, reporters who need files and press cards, and publication that has to reach the site, Telegram, WhatsApp, RSS and email at once.

This is a finished product, not a project started from zero: 16 independent modules, 293 HTTP endpoints, 135,000 lines of source and 1,120 automated tests, written and proven before you arrive. What is done for you is deployment, archive migration, the public site's design and training your newsroom.

The editorial pipeline: every story has one clear path

  • 01 — Draft

    The reporter writes; autosave with a local backup, so a dropped connection does not cost half an hour of work.

  • 02 — Submitted

    The story enters the desk review queue and leaves the reporter's bench.

  • 03 — In review

    A desk editor picks it up and the text locks; two people never edit one story at once.

  • 04 — Approved

    Ready to publish, with a record of who approved it and when.

  • 05 — Scheduled

    Publication at a set time, on the Tehran newsroom clock.

  • 06 — Published

    On the site and the distribution channels at the same moment.

The side paths are defined too, and every one of them leaves a trace: needs revision with a recorded reason for the writer, rejected with a mandatory reason, recall, back to draft, unpublish, and archive and restore.

What matters is that the states are defined in the domain, not in the interface. Nobody routes around a stage with a direct URL or a forgotten button; without the permission, the story does not move. Sixteen organisational roles — from editor-in-chief to desk editor, reporter, photographer and SEO specialist — and permissions at three scopes: mine, my desk, everyone.

Sixteen modules, one deployment

  • Reporters

    Reporter files, collaboration periods, assignments, press cards and confidential documents. The largest module in the system.

  • Editorial

    Content, workflow, desks and categories, sources and related stories.

  • Photo reports

    Resumable batch upload, ordering, curation and gallery publication.

  • Publishing and SEO

    Front-page layout, Persian slugs, per-story meta and automatic redirects.

  • Distribution

    Delivery to channels with an outbound queue, retries and delivery tracking.

  • Media and watermarking

    Media library, usage rights, signed access and versioned watermark profiles.

  • Search

    A Persian-aware full-text index, a Jalali archive and recovery of deleted content.

  • Commercial

    Clients, orders, sponsored content and financial tracking.

  • Administration

    38 settings in 11 categories, a full event log and session management.

Each module owns its domain, application layer and infrastructure, and talks to the others only through a contract: the discipline of microservice boundaries with the simplicity of a single deployment. A layer of architecture tests checks those boundaries at build time — the design rules are not documentation, they are part of the build, and breaking one turns it red.

What a newsroom needs every day

  • Writing and editing

    A proper editor with headings, tables, quotes and links; images by drag or paste with caption and alt text in place; Aparāt and YouTube embeds; a keyboard shortcut for the zero-width non-joiner; and concurrent-edit detection so your save never wipes a colleague's work.

  • Organising and publishing

    Eight content types from news and reportage to interviews, dossiers and breaking news; desks, categories and tags in a tree; scheduling; a front page built from pinnable blocks with preview.

  • Photography and video

    Batch upload that resumes from the same byte after a dropped connection, automatic ordering by EXIF capture time, duplicate detection by perceptual hash, bulk captioning, and speech transcripts for search and accessibility.

  • Reporters

    Files with history and specialism, online press accreditation with multi-stage review, press cards issued, renewed and revoked with public verification, and warnings before a collaboration period expires.

  • Distribution and audience

    Five channels — Telegram, WhatsApp, web, RSS and email — with an outbound queue and retries; comment moderation with approval and rate limiting; automatic feeds, sitemap and robots.

  • Oversight

    An event log: every change, every decision and every refused attempt is recorded. When someone asks who pulled a story, there is an answer.

Persian-first, not translated

Localisation here is not a skin over a foreign product; it is in the architecture.

  • The Jalali calendar throughout. Every date — the scheduling picker, the public archive, the event log — is Jalali, with Persian numerals everywhere. The conversion happens in one place, not in twenty places with twenty results.
  • The newsroom clock. Time is stored in UTC and shown in Tehran time everywhere, so a 00:30 publication does not appear a day earlier to an editor who is travelling.
  • Persian-aware search. The index covers headline, standfirst and body, normalising the two forms of ye and kaf, the digits and the zero-width non-joiner — so two spellings of the same word find the same story.
  • Real RTL. The layout is built on CSS logical properties, not fixed left and right; Latin runs inside Persian text are isolated islands and URLs do not scramble.
  • Persian slugs. A story's URL is built from its Persian headline without transliteration, and changing it creates a redirect automatically — a link published elsewhere does not break.

The stack

Three applications, one contract: a single API feeds both the admin panel and the public site, with types generated from that contract so neither drifts ahead of the other.

  • Back end — .NET 10 with Minimal API, CQRS, Entity Framework Core and PostgreSQL. 84 projects, 1,029 files, 34 migrations, 89,515 lines.
  • Admin panel — React 19 with Vite, Tailwind, TanStack Query, Radix UI, the TipTap editor and Zod validation. 248 files, 36 routes, 33,465 lines.
  • Public site — Next.js 15 with server rendering and JSON-LD structured data, so a story is read correctly by Google and by news surfaces. 79 files, 17 pages.
  • Deployment— Docker Compose with automatic database migration and health checks.

Proven, not claimed

824 unit tests, 127 architecture tests, 13 integration tests, 8 end-to-end acceptance tests and 148 client-side tests. Three more things were in this product's definition of done: a capability whose infrastructure is not yet decided answers with a plain "not enabled yet" rather than a vague error; no counter ever shows an invented number; and colour contrast is verified by real WCAG computation, locked in tests, in both the light and the dark theme.

Frequently asked

Will our existing archive be migrated?

Yes — that is what the import/export module is for. Old content, reporters, media and taxonomies are migrated, and redirects are created for the previous URLs so rankings and published links survive. The size and shape of your archive determines the effort.

How many users and roles can we have?

The system ships with 16 organisational roles, and permissions are set at three scopes: mine, my desk, everyone. The software imposes no user limit;.

Can it run on our own servers?

Yes. Deployment is Docker Compose, and both options are offered: on your own infrastructure, or on ours with backups and updates handled by us.

Does a story go to Telegram and WhatsApp at the same time?

Yes. The distribution module covers five channels — Telegram, WhatsApp, web, RSS and email — with an outbound queue, retries on failure and delivery tracking. Where a channel needs a human decision, the queue holds and waits.

Does it issue press cards?

Yes: issue, renewal and revocation with public verification, plus online accreditation requests with multi-stage review and storage of confidential documents.

What does it cost?

Setup starts at 250m toman, with annual support at 20% of the setup fee. The final figure follows a demo, once the archive size, the number of users and the delivery channels are clear.

A demo with your own archive

In the demo we work with a sample of your own stories, so you see what the workflow looks like on your real content.

The name of the outlet, how many stories a day, and how many newsroom users — those three answers are enough to set up a demo.