Owly News Summariser

Owly News Summariser 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
  • Filters news by country
  • 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

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

  • Rust 1.88.0+
  • Ollama for article summarization
  • 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

  1. Navigate to the Rust backend directory:

    cd backend-rust
    
  2. Create a .env file based on the example:

    cp example.env .env
    
  3. Customize the .env file as needed:

    • DATABASE_URL: SQLite database connection string
    • OLLAMA_BASE_URL: URL for the Ollama service (default: http://localhost:11434)
    • Other configuration options as documented in the example file
  4. Run database migrations:

    cargo install sqlx-cli
    sqlx migrate run
    

Frontend Setup

  1. Navigate to the frontend directory:

    cd frontend
    
  2. Install dependencies:

    npm install
    

Running the Application

Running the Rust Backend

  1. Navigate to the Rust backend directory:

    cd backend-rust
    
  2. Start the backend server:

    cargo run
    

    The backend will be available at http://localhost:3000

Running the Frontend

  1. Navigate to the frontend directory:

    cd frontend
    
  2. Start the development server:

    npm run dev
    

    The frontend will be available at http://localhost:5173

Building for Production

Building the Rust Backend

  1. Navigate to the Rust backend directory:

    cd backend-rust
    
  2. Build the optimized release binary:

    cargo build --release
    

    The binary will be available at target/release/owly-news-summariser

Building the Frontend

  1. Navigate to the frontend directory:

    cd frontend
    
  2. 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
Description
No description provided
Readme 4.1 MiB
Languages
Python 43%
Vue 41.7%
TypeScript 10.4%
CSS 4.5%
HTML 0.4%