README.md to reflect new Rust backend, modernized tooling instructions, updated frontend and backend setup guides, and improved clarity on application structure
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
For Rust Backend (Recommended)
- 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
Rust Backend Setup (Recommended)
-
Navigate to the Rust backend directory:
cd backend-rust -
Create a
.envfile based on the example:cp example.env .env -
Customize the
.envfile 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 runThe backend will be available at http://localhost:3000
Running the Frontend
-
Navigate to the frontend directory:
cd frontend -
Start the development server:
npm run devThe frontend will be available at http://localhost:5173
Building for Production
Building the Rust Backend
-
Navigate to the Rust backend directory:
cd backend-rust -
Build the optimized release binary:
cargo build --releaseThe binary will be available at
target/release/owly-news-summariser
Building the Frontend
-
Navigate to the frontend directory:
cd frontend -
Build the frontend:
npm run buildThe built files will be in the
distdirectory 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