A personal newsroom: verified world news in focused bulletins.
What it does · How it works · Schedule · Evidence labels · Getting started · Docs
CSPNews gathers news from around the world, checks every story against independent sources, and publishes short, focused bulletins at set times of the day. Each bulletin has three sections:
| Section | Language | |
|---|---|---|
| 🇹🇷 | Turkish news: the day's most important developments | Turkish |
| 🤖 | Tech: technology, with a focus on AI | English |
| 🌍 | Around the World: major developments everywhere else | English (translated) |
Breaking stories don't wait: Hot News reaches the reader between bulletins, within minutes.
flowchart LR
S[Sources<br/>RSS · GDELT · fact-checkers] --> C[Collect]
C --> G[Group<br/>same event, copies fold]
G --> V[Verify<br/>evidence label]
V --> W[Write<br/>TR stays TR, rest EN]
W --> P[Publish<br/>static site]
G -. every 2 min .-> H[Hot News<br/>monitor]
H --> P
All times are Istanbul time (UTC+3).
| Time | Bulletin | Weekdays | Weekends |
|---|---|---|---|
| 07:30 | Morning (main) | ✅ | ✅ |
| 12:30 | Midday (side) | ✅ | — |
| 18:30 | Evening (main) | ✅ | ✅ |
| 22:30 | Late (side) | ✅ | — |
| Any time | Hot News | every 2 min | every 4 min |
Every story shows how solid it is.
| Label | Meaning |
|---|---|
| Confirmed | Two or more independent sources from different owners, or a primary source, with no contradictions |
| Reported | Several sources, but they share an owner, a camp or wire copy |
| Single source | Only one outlet has it |
| Disputed | Sources contradict each other, or a fact-checker rated it false |
| Developing | Hot News that is still being confirmed |
Requires Node 22 and pnpm.
corepack enable
pnpm install
pnpm check # format, lint, typecheck and testsThe website is hosted on Vercel. vercel.json holds the whole setup, so importing the repository needs no settings: Vercel installs with pnpm, builds @cspnews/web and the packages it uses, and serves apps/web/dist. Only main is deployed, and only when a push changes something the site is built from (scripts/vercel-ignore-build.sh); pull requests get no Vercel preview, because CI already builds them. To see a change before merging, run pnpm --filter @cspnews/web dev:sample locally. Bulletins are read at build time from data/bulletins (see apps/web), so publishing a bulletin means committing it to main.
cspnews/
├── packages/
│ └── core/ # shared types, schedule, source registry schema
├── apps/ # the website and the Hot News monitor (coming)
└── docs/
├── product/ # user stories and features
└── design/ # design brief
- 📖 User stories: what the reader needs
- 🧩 Features and shared systems: what we're building, and in which release
- 📰 Publishing a bulletin: from feeds to the live site, step by step
- 🎨 Design brief: the focus principles behind the interface
- 🤝 Contributing: layout, conventions and how changes are made