analytics
, config
, and modular crates to simplify the codebase and streamline architecture
Owly News
Owly News is a modern web application that fetches news articles from various RSS feeds, uses an LLM (Large Language Model) to summarize them, and presents them in a clean, user-friendly interface.
Features
- Fetches news from configurable RSS feeds
- Automatically summarizes articles using Ollama LLM
- AI-powered intelligent tagging with geographic, category, and source tags
- Advanced multi-criteria filtering with hierarchical tag support
- Progressive Web App (PWA) support for offline access
- Scheduled background updates
- High-performance Rust backend for optimal resource usage
- Modern Vue.js frontend with TypeScript support
- Comprehensive analytics and reading statistics
- Flexible sharing system with multiple format options
Project Structure
The project consists of multiple components:
- Backend (Rust): Primary backend written in Rust using Axum framework for high performance (
backend-rust/
) - Backend (Python): Legacy FastAPI backend (
backend/
) - Frontend: Modern Vue.js 3 application with TypeScript and Tailwind CSS (
frontend/
)
Prerequisites
For Rust Backend (Recommended)
- Rust 1.88.0+
- Ollama for article summarization and tagging
- SQLite (handled automatically by SQLx)
For Python Backend (Legacy)
- Python 3.8+
- Ollama for article summarization
For Frontend
- Node.js 22+ and npm
- Modern web browser with PWA support
Setup
Rust Backend Setup (Recommended)
-
Navigate to the Rust backend directory:
cd backend-rust
-
Create a
.env
file based on the example:cp example.env .env
-
Customize the
.env
file as needed:DATABASE_URL
: SQLite database connection stringOLLAMA_BASE_URL
: URL for the Ollama service (default: http://localhost:11434)- Other configuration options as documented in the example file
-
Run database migrations:
cargo install sqlx-cli sqlx migrate run
Frontend Setup
-
Navigate to the frontend directory:
cd frontend
-
Install dependencies:
npm install
Running the Application
Running the Rust Backend
-
Navigate to the Rust backend directory:
cd backend-rust
-
Start the backend server:
cargo run
The backend will be available at http://localhost:3000
Running the Frontend
-
Navigate to the frontend directory:
cd frontend
-
Start the development server:
npm run dev
The frontend will be available at http://localhost:5173
Key Features
Intelligent Content Organization
- AI-Powered Tagging: Automatic classification with geographic, topical, and source tags
- Hierarchical Filtering: Multi-level filtering by location (country → region → city), categories, and content types
- Smart Search: Advanced filtering with suggestions based on tag relationships and usage patterns
- Legacy Migration: Seamless upgrade from simple country-based filtering to comprehensive tag-based system
Advanced Analytics
- Reading Statistics: Track reading time, completion rates, and engagement patterns
- Content Analytics: Source performance, tag usage, and trending topics analysis
- Geographic Insights: Location-based content distribution and reading preferences
- Goal Tracking: Personal reading goals with progress monitoring
Flexible Article Display
- Compact View: Title, excerpt, tags, and action buttons for quick browsing
- On-Demand Loading: Full content, AI summaries, and source links as needed
- Visual Tag System: Color-coded, hierarchical tags with click-to-filter functionality
- Reading Status: Visual indicators for read/unread status and progress tracking
Enhanced Sharing
- Multiple Formats: Text, Markdown, HTML, and JSON export options
- Custom Templates: User-configurable sharing formats
- One-Click Operations: Copy to clipboard with formatted content
- Privacy Controls: Configurable information inclusion in shared content
Building for Production
Building the Rust Backend
-
Navigate to the Rust backend directory:
cd backend-rust
-
Build the optimized release binary:
cargo build --release
The binary will be available at
target/release/owly-news
Building the Frontend
-
Navigate to the frontend directory:
cd frontend
-
Build the frontend:
npm run build
The built files will be in the
dist
directory and can be served by any static file server.
Development
Code Quality
The project includes comprehensive tooling for code quality:
Frontend:
- ESLint with Vue and TypeScript support
- Prettier for code formatting
- Vitest for testing
- TypeScript for type safety
- Oxlint for additional linting
Backend (Rust):
- Standard Rust tooling (
cargo fmt
,cargo clippy
) - SQLx for compile-time checked SQL queries
Testing
Run frontend tests:
cd frontend
npm run test
Configuration
The application uses a comprehensive configuration system via config.toml
:
- AI Settings: Configure Ollama integration for summaries and tagging
- Display Preferences: Default views, themes, and UI customization
- Analytics: Control data collection and retention policies
- Filtering: Smart suggestions, saved filters, and geographic hierarchy
- Sharing: Default formats and custom templates
See the example configuration in the project for detailed options.
Migration from Legacy Systems
The application includes automatic migration tools for upgrading from simpler filtering systems:
- Country Filter Migration: Automatic conversion to hierarchical geographic tags
- Data Preservation: Maintains historical data during migration
- Backward Compatibility: Gradual transition with user control
- Validation Tools: Ensure data integrity throughout the migration process
Future Roadmap
The project is evolving through three phases:
- Phase 1: High-performance Rust backend with advanced filtering and analytics
- Phase 2: CLI application for power users and automation
- Phase 3: Migration to Dioxus for a full Rust stack
See ROADMAP.md
for detailed development plans and architectural decisions.