News website
Sanaye No: a news desk with a role-controlled workflow and an SEO-ready site
Sanaye No on the Idepoo newsroom platform: an editorial workflow from draft to publication, a photo desk, reporter administration and multi-channel distribution, with a Next.js public site.
- Client
- Sanaye No 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 newsroom with several desks and roles that has to know who holds a story and who approved it; a high volume of photography that must be uploaded and curated in batches; and a site whose stories have to surface fast in Google.
The solution
Launched on the Idepoo newsroom platform — our own product, not a build from zero: an editorial workflow with six main states and six side paths, all recorded with reasons and an audit trail; role-based control with permissions at three scopes; a photo-report desk with resumable batch upload, automatic EXIF ordering and duplicate detection; reporter administration with files, assignments and press cards; and simultaneous delivery to Telegram, WhatsApp, RSS and email through an outbound queue with retries.
The public site was built on Next.jswith server rendering, structured data, Persian slugs and automatic redirects when a slug changes.
Key features
A workflow that leaves a trace
Six states and six side paths; nothing is rejected or returned without a recorded reason.
The photo desk
Resumable batch upload, EXIF ordering, bulk captioning and duplicate detection.
Reporter administration
Files, collaboration periods, assignments, and press cards issued and renewed.
Multi-channel distribution
Telegram, WhatsApp, web, RSS and email, with an outbound queue and delivery tracking.
Archive and Persian search
A full-text index that normalises Persian letter forms and the ZWNJ, over a Jalali archive.
News SEO
Server rendering, structured data, Persian slugs and automatic redirects.
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.

