News website

Rah-e Shalamcheh: fast publication, a searchable archive and channel distribution

Rah-e Shalamcheh on the Idepoo newsroom platform: a newsroom with roles and a workflow, photo galleries, a searchable Jalali archive and simultaneous publication to the site and channels.

Client
Rah-e Shalamcheh news agency
Year
2025
Status
Live
  • Discovery and analysis
  • UX and UI design
  • Software architecture
  • Front-end development
  • Back-end and API development
  • Database design
  • Third-party integrations
  • Data migration
  • Deployment and DevOps
  • Technical SEO
  • QA and testing
  • Support and ongoing development

The result, in numbers

5
simultaneous delivery channels

Telegram, WhatsApp, web, RSS and email

16
editorial roles

with permissions at three scopes: mine, my desk, everyone

10
states in the editorial workflow

draft to published, with the routes back

The challenge

What was clear from the start: a story has to publish quickly and reach the channels at the same moment; the archive has to be retrievable by Jalali date and Persian search; and the newsroom has to work without an engineering team.

The solution

Launched on the Idepoo newsroom platform, with the same core that runs the other news sites: a role-controlled editorial workflow with event logging, eight content types from news and reportage to interviews and breaking news, a front page built from pinnable blocks with preview, and photo galleries with drag ordering and cover selection.

The archive was built on the Jalali calendar with Persian-aware search: the two forms of ye and kaf, the digits and the zero-width non-joiner are normalised, so different spellings of a word reach the same result. The public site runs on Next.js 15with server rendering, and publication goes out simultaneously to Telegram, WhatsApp, RSS and email through an outbound queue with retries.

Key features

  • Eight content types

    News, reportage, interview, dossier, breaking news and the rest, each with its own layout.

  • Front-page layout

    Pinnable blocks with preview, with no engineer in the loop.

  • A searchable Jalali archive

    Browse by Jalali date and search full text with Persian normalisation.

  • Photo galleries

    Drag ordering, cover selection, bulk captioning and a separate social cover.

  • Persian slugs that never break links

    The URL is built from the Persian headline, and changing it creates a redirect automatically.

  • Comment moderation

    Approval, rate limiting and fingerprinting without storing IP addresses.

Architecture and stack

Style
Modular monolith
Patterns
Clean architectureCQRSOutbox pattern

A modular monolith on .NET 10: sixteen independent modules — editorial, reporters, photo reports, publishing, distribution, media, search and the rest — with explicit boundaries, in a single deployment. Each module owns its domain and application layer and talks to the others only through a contract; a layer of architecture tests checks those boundaries at build time.

CQRS is used where reads and writes want different shapes: the editorial workflow goes through the write path with domain rules, while the front page, the archive and search come from the read path. Delivery to channels runs through an outbound queue and the outbox pattern, so publishing a story never waits on a slow Telegram or mail provider and no send is lost.

The admin panel is React 19 on Vite and the public site is Next.js 15 with server rendering — both fed by one API. The database is PostgreSQL, and the Persian full-text index runs on it too, rather than adding a separate search engine that would have to be operated separately.

Front end
React.jsViteTypeScriptTailwind CSS

The newsroom panel

Front end
Next.js

Public site, server-rendered with structured data

Back end and API
.NET 10C#REST APIEntity Framework Core

Modular monolith, Minimal API, CQRS

Database
PostgreSQL
Search
PostgreSQL

Persian-aware full-text index and Jalali archive

Infrastructure and deployment
Docker

Docker Compose with automatic migration and health checks

Integrations

  • Telegram and WhatsApp for story distribution
  • Aparat and YouTube for video embeds

Have a similar project in mind?

Fifteen minutes is enough to say what it needs, how long it takes and where to start.