DocsDevelopment
Contributing
How to propose a change, and the rules that keep Fresh News honest.
Issues and pull requests are welcome on GitHub.
Before you open a pull request
- Run the checks.
- Changes to prompts, validation or ranking need a test that shows the behaviour.
- Anything that stores or sends data must update the data and privacy document.
- Never edit a shipped database migration. Add a new one, with an upgrade test from the previous version.
Architecture at a glance
| Layer | Where |
|---|---|
| Desktop shell, commands, scheduler and sync loops | apps/desktop/src-tauri (Tauri 2) |
| UI | apps/desktop/src (React 19, TypeScript, Vite) |
| Types, rules, text utilities | crates/domain |
| SQLite, migrations, backups, search | crates/storage |
| Feed fetching, parsing, source health | crates/news-ingestion |
| Clustering, ranking, editions, generation | crates/story-engine |
| Providers, prompts, validation | crates/ai-core |
| Schedule rules (DST, catch-up) | crates/scheduler |
| Cross-device contracts and merge | crates/sync, packages/contracts |
| iPhone app and its testable core | apps/ios |
Design decisions are recorded as ADRs in docs/architecture.md.
Licence
Dual-licensed under MIT or Apache-2.0, at your option. The Fresh News name and logos are not covered by these licences.
Something unclear or out of date? Open an issue.