Skip to content
MCantuncerPublic

About

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

CSPNews

A personal newsroom: verified world news in focused bulletins.

CI Last commit Open PRs Status

TypeScript Node.js pnpm Vitest Zod Code style: Prettier

What it does · How it works · Schedule · Evidence labels · Getting started · Docs


What it does

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.

How it works

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
Loading

Bulletin schedule

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

Evidence labels

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

Getting started

Requires Node 22 and pnpm.

corepack enable
pnpm install
pnpm check   # format, lint, typecheck and tests

Deploying

The 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.

Project structure

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

Docs

About

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages