106 lines
3.2 KiB
Markdown
106 lines
3.2 KiB
Markdown
# Web News
|
|
|
|
Web News is a privacy-focused, offline-first RSS reader and full-text extractor. It combines a Svelte-based reactive frontend with a high-performance Go-based backend, available as a standalone web server or a native desktop application (Wails).
|
|
|
|
## Features
|
|
|
|
- **Privacy-First**: No tracking, no accounts, no clouds. Your data stays in your browser.
|
|
- **Offline-First**: Articles, feeds, and settings are stored locally in IndexedDB.
|
|
- **Desktop & Web**: Run as a single Go binary or a native app via Wails.
|
|
- **Full-Text Extraction**: One-click "Read Mode" that pulls clean content from any URL.
|
|
- **Global Search**: Instant full-text search across your entire reading history.
|
|
- **Vim-like Shortcuts**: Navigate with `j`/`k`, save with `s`, and manage feeds without a mouse.
|
|
- **Content Filtering**: "Mute Filters" to automatically hide articles based on keywords.
|
|
- **Smart Feed**: Personalized ranking that learns from your reading habits locally.
|
|
- **Activity Heatmap**: Visualize your reading trends over the last 30 days.
|
|
- **Bulk Actions**: Multi-select mode to quickly manage large volumes of articles.
|
|
- **Customizable Reader**: Adjust font (Serif/Sans), size, and line height for a premium reading experience.
|
|
|
|
## Privacy and Security
|
|
|
|
Web News follows a "zero-knowledge" philosophy:
|
|
|
|
1. **Data Sovereignty**: Your reading list and history never leave your device.
|
|
2. **Anonymous Access**: 16-digit account numbers for server access.
|
|
3. **Local Cache**: Full-text content is cached locally in IndexedDB for offline reading and instant access.
|
|
4. **Hardened Backend**: Built-in bot blocking, rate limiting, and secure token generation.
|
|
|
|
## To-DO
|
|
|
|
- [ ] Reading time
|
|
- [ ] UI/UX Cleanup
|
|
- [ ] Use Go Mobile, remove Java RSS plugin.
|
|
- [ ] Export article(s)
|
|
- [ ] Favicon fetcher and caching
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Go 1.21+
|
|
- Node.js 18+
|
|
- pnpm 9+
|
|
- [Wails CLI](https://wails.io/docs/gettingstarted/installation) (for desktop builds)
|
|
|
|
### Build & Run (Web Server)
|
|
|
|
Requires Go 1.21+, Node.js 18+, pnpm 9+.
|
|
|
|
1. **Build the binary**:
|
|
```bash
|
|
make build
|
|
```
|
|
2. **Run it**:
|
|
```bash
|
|
./bin/web-news
|
|
```
|
|
|
|
### Build & Run (Desktop App)
|
|
|
|
Requires Go 1.25.4+, Wails 2.11.0+, Node.js 18+, pnpm 9+, WebKit2GTK 4.1+ (for Linux).
|
|
|
|
1. **Launch Dev Mode**:
|
|
```bash
|
|
make desktop-dev
|
|
```
|
|
2. **Build for current platform**:
|
|
```bash
|
|
make desktop-build
|
|
```
|
|
3. **Cross-Compile**:
|
|
```bash
|
|
make desktop-windows # Build for Windows
|
|
make desktop-darwin # Build for macOS (Universal)
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Server Flags
|
|
|
|
- `--auth-mode`: `none` (default), `token`, or `multi`.
|
|
- `--allow-registration`: Allow generating new account numbers (default: true).
|
|
- `--auth-file`: Path to the account storage (default: `accounts.json`).
|
|
- `--port`: Port to listen on (default: `8080`).
|
|
|
|
### Keyboard Shortcuts (Default)
|
|
|
|
- `j` / `k`: Next / Previous article
|
|
- `r`: Mark as read
|
|
- `s`: Toggle save
|
|
- `x`: Toggle select mode
|
|
- `o`: Open original URL
|
|
|
|
## Development
|
|
|
|
- **Dev Server**: `make dev` (Starts Go backend + Vite frontend)
|
|
- **Format & Lint**: `pnpm run format && pnpm run lint`
|
|
- **Clean Artifacts**: `make clean`
|
|
|
|
## License
|
|
|
|
MIT - See [LICENSE](LICENSE) for details.
|
|
|
|
---
|
|
|
|
Created by [Quad4](https://quad4.io)
|