# 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 - [ ] Add feed fetching timeout and button to remove if failed 3 times - [ ] Use Go Mobile, remove Java RSS plugin. - [ ] Dont show loading screen if not initial load (eg. reloading tab) - [ ] Fix feeds double image (Feed image and article image at top) - [ ] Export article(s) - [ ] Export/Import OPML on add feed modal - [ ] Favicons for feeds 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)