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
- 16
- editorial roles
- 10
- states in the editorial workflow
Telegram, WhatsApp, web, RSS and email
with permissions at three scopes: mine, my desk, everyone
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
Related services and products
Have a similar project in mind?
Fifteen minutes is enough to say what it needs, how long it takes and where to start.

