23 KiB
Owly News Summariser - Project Roadmap
This document outlines the strategic approach for transforming the project through three phases: Python-to-Rust backend migration, CLI application addition, and Vue-to-Dioxus frontend migration.
Project Structure Strategy
Current Phase: Axum API Setup
owly-news-summariser/
├── src/
│ ├── main.rs # Entry point (will evolve)
│ ├── db.rs # Database connection & SQLx setup
│ ├── api.rs # API module declaration
│ ├── api/ # API-specific modules (no mod.rs needed)
│ │ ├── routes.rs # Route definitions
│ │ ├── middleware.rs # Custom middleware
│ │ └── handlers.rs # Request handlers & business logic
│ ├── models.rs # Models module declaration
│ ├── models/ # Data models & database entities
│ │ ├── user.rs
│ │ ├── article.rs
│ │ ├── summary.rs
│ │ ├── tag.rs # Tag models and relationships
│ │ ├── analytics.rs # Analytics and statistics models
│ │ └── settings.rs # User settings and preferences
│ ├── services.rs # Services module declaration
│ ├── services/ # Business logic layer
│ │ ├── news_service.rs
│ │ ├── summary_service.rs
│ │ ├── scraping_service.rs # Article content extraction
│ │ ├── tagging_service.rs # AI-powered tagging
│ │ ├── analytics_service.rs # Reading stats and analytics
│ │ └── sharing_service.rs # Article sharing functionality
│ └── config.rs # Configuration management
├── migrations/ # SQLx migrations (managed by SQLx CLI)
├── frontend/ # Keep existing Vue frontend for now
├── config.toml # Configuration file with AI settings
└── Cargo.toml
Phase 2: Multi-Binary Structure (API + CLI)
owly-news-summariser/
├── src/
│ ├── lib.rs # Shared library code
│ ├── bin/
│ │ ├── server.rs # API server binary
│ │ └── cli.rs # CLI application binary
│ ├── [same module structure as Phase 1]
├── migrations/
├── frontend/
├── completions/ # Shell completion scripts
│ ├── owly.bash
│ ├── owly.zsh
│ └── owly.fish
├── config.toml
└── Cargo.toml # Updated for multiple binaries
Phase 3: Full Rust Stack
owly-news-summariser/
├── src/
│ ├── [same structure as Phase 2]
├── migrations/
├── frontend-dioxus/ # New Dioxus frontend
├── frontend/ # Legacy Vue (to be removed)
├── completions/
├── config.toml
└── Cargo.toml
Core Features & Architecture
Article Processing & Display Workflow
Hybrid Approach: RSS Feeds + Manual Submissions with Smart Content Management
-
Article Collection
- RSS feed monitoring and batch processing
- Manual article URL submission
- Store original content and metadata in database
-
Content Processing Pipeline
- Fetch RSS articles → scrape full content → store in DB
- Compact Article Display:
- Title (primary display)
- RSS description text
- Tags (visual indicators)
- Time posted (from RSS)
- Time added (when added to system)
- Action buttons: [Full Article] [Summary] [Source]
- On-Demand Content Loading:
- Full Article: Display complete scraped content
- Summary: Show AI-generated summary
- Source: Open original URL in new tab
- Background async processing with status updates
- Support for re-processing without re-fetching
-
Intelligent Tagging System
- Automatic Tag Generation: AI analyzes content and assigns relevant tags
- Geographic & Source Tags: AI-generated location tags (countries, regions, cities) and publication source tags
- Content Category Tags: Technology, Politics, Business, Sports, Health, etc.
- Visual Tag Display: Color-coded tags in compact article view with hierarchical display
- Tag Filtering: Quick filtering by clicking tags with smart suggestions
- Custom Tags: User-defined tags and categories
- Tag Confidence: Visual indicators for AI vs manual tags
- Tag Migration: Automatic conversion of legacy country filters to geographic tags
-
Analytics & Statistics System
- Reading Analytics:
- Articles read vs added
- Reading time tracking
- Most read categories and tags
- Reading patterns over time
- Content Analytics:
- Source reliability and quality metrics
- Tag usage statistics
- Processing success rates
- Content freshness tracking
- Performance Metrics:
- AI processing times
- Scraping success rates
- User engagement patterns
- Reading Analytics:
-
Advanced Filtering System
- Multi-Criteria Filtering:
- By tags (single or multiple with AND/OR logic)
- By geographic tags (country, region, city with hierarchical filtering)
- By content categories and topics
- By date ranges (posted, added, read)
- By processing status (pending, completed, failed)
- By content availability (scraped, summary, RSS-only)
- By read/unread status
- Smart Filter Migration: Automatic conversion of legacy country filters to tag-based equivalents
- Saved Filter Presets:
- Custom filter combinations
- Quick access to frequent searches
- Geographic preset templates (e.g., "European Tech News", "US Politics")
- Smart Suggestions: Filter suggestions based on usage patterns and tag relationships
- Multi-Criteria Filtering:
-
Settings & Management System
- User Preferences:
- Default article view mode
- Tag display preferences with geographic hierarchy settings
- Reading tracking settings
- Notification preferences
- System Settings:
- AI configuration (via API and config file)
- Processing settings
- Display customization
- Export preferences
- Content Management:
- Bulk operations (mark read, delete, retag)
- Archive old articles
- Export/import functionality
- Legacy data migration tools
- User Preferences:
-
Article Sharing System
- Multiple Share Formats:
- Clean text format with title, summary, and source link
- Markdown format for developers
- Rich HTML format for email/web
- JSON format for API integration
- Copy to Clipboard: One-click formatted sharing
- Share Templates: Customizable sharing formats
- Privacy Controls: Control what information is included in shares
- Multiple Share Formats:
-
Database Schema
Articles: id, title, url, source_type, rss_content, full_content,
summary, processing_status, published_at, added_at, read_at,
read_count, reading_time, ai_enabled, created_at, updated_at
Tags: id, name, category, description, color, usage_count, parent_id, created_at
ArticleTags: article_id, tag_id, confidence_score, ai_generated, created_at
ReadingStats: user_id, article_id, read_at, reading_time, completion_rate
FilterPresets: id, name, filter_criteria, user_id, created_at
Settings: key, value, category, user_id, updated_at
ShareTemplates: id, name, format, template_content, created_at
LegacyMigration: old_filter_type, old_value, new_tag_ids, migrated_at
Step-by-Step Process
Phase 1: Axum API Implementation
Step 1: Core Infrastructure Setup
- Set up database connection pooling with SQLx
- Enhanced Configuration System:
- Extend config.toml with comprehensive settings
- AI provider configurations with separate summary/tagging settings
- Display preferences and UI customization
- Analytics and tracking preferences
- Sharing templates and formats
- Filter and search settings
- Geographic tagging preferences
- Establish error handling patterns with
anyhow
- Set up logging and analytics infrastructure
Step 2: Data Layer
- Design comprehensive database schema with analytics and settings support
- Create SQLx migrations for all tables including analytics and user preferences
- Implement hierarchical tag system with geographic and content categories
- Add legacy migration support for country filters
- Implement article models with reading tracking and statistics
- Add settings and preferences data layer
- Create analytics data models and aggregation queries
- Implement sharing templates and format management
- Use SQLx's compile-time checked queries
Step 3: Enhanced Services Layer
- Content Processing Services:
- RSS feed fetching and parsing
- Web scraping with quality tracking
- AI services for summary and tagging
- Enhanced Tagging Service:
- Geographic location detection and tagging
- Content category classification
- Hierarchical tag relationships
- Legacy filter migration logic
- Analytics Service:
- Reading statistics collection and aggregation
- Content performance metrics
- User behavior tracking
- Trend analysis and insights
- Settings Management Service:
- User preference handling
- System configuration management
- Real-time settings updates
- Sharing Service:
- Multiple format generation
- Template processing
- Privacy-aware content filtering
- Advanced Filtering Service:
- Complex query building with geographic hierarchy
- Filter preset management
- Search optimization
- Legacy filter migration
Step 4: Comprehensive API Layer
- Article Management Routes:
GET /api/articles
- List articles with compact display dataPOST /api/articles
- Submit manual article URLGET /api/articles/:id
- Get basic article infoGET /api/articles/:id/full
- Get complete scraped contentGET /api/articles/:id/summary
- Get AI summaryPOST /api/articles/:id/read
- Mark as read and track reading timePOST /api/articles/:id/share
- Generate shareable content
- Analytics Routes:
GET /api/analytics/dashboard
- Main analytics dashboard dataGET /api/analytics/reading-stats
- Personal reading statisticsGET /api/analytics/content-stats
- Content and source analyticsGET /api/analytics/trends
- Trending topics and patternsGET /api/analytics/export
- Export analytics data
- Enhanced Filtering & Search Routes:
GET /api/filters/presets
- Get saved filter presetsPOST /api/filters/presets
- Save new filter presetGET /api/search/suggestions
- Get search and filter suggestionsPOST /api/search
- Advanced search with multiple criteriaPOST /api/filters/migrate
- Migrate legacy country filters to tags
- Settings Routes:
GET /api/settings
- Get all user settingsPUT /api/settings
- Update user settingsGET /api/settings/system
- Get system configurationPUT /api/settings/system
- Update system settings (admin)
- Enhanced Tag Management Routes:
GET /api/tags
- List tags with usage statistics and hierarchyGET /api/tags/geographic
- Get geographic tag hierarchyGET /api/tags/trending
- Get trending tagsPOST /api/tags/:id/follow
- Follow/unfollow tag for notificationsGET /api/tags/categories
- Get tag categories and relationships
- Sharing Routes:
GET /api/share/templates
- Get sharing templatesPOST /api/share/templates
- Create custom sharing templatePOST /api/articles/:id/share/:format
- Generate share content
Step 5: Enhanced Frontend Features
- Compact Article Display:
- Card-based layout with title, RSS excerpt, tags, and timestamps
- Action buttons for Full Article, Summary, and Source
- Hierarchical tag display with geographic and category indicators
- Reading status and progress indicators
- Advanced Analytics Dashboard:
- Reading statistics with charts and trends
- Content source performance metrics
- Tag usage and trending topics with geographic breakdowns
- Personal reading insights and goals
- Comprehensive Filtering Interface:
- Multi-criteria filter builder with geographic hierarchy
- Saved filter presets with quick access
- Smart filter suggestions based on tag relationships
- Visual filter indicators and clear actions
- Legacy filter migration interface
- Settings Management Panel:
- User preference configuration
- AI and processing settings
- Display and UI customization
- Export/import functionality
- Enhanced Sharing System:
- Quick share buttons with format selection
- Copy-to-clipboard functionality
- Custom sharing templates
- Preview before sharing
Step 6: Integration & Testing
- Test all API endpoints with comprehensive coverage
- Test analytics collection and aggregation
- Test enhanced filtering and search functionality
- Test legacy filter migration
- Validate settings persistence and real-time updates
- Test sharing functionality across different formats
- Performance testing with large datasets and hierarchical tags
- Deploy and monitor
Phase 2: CLI Application Addition
Step 1: Restructure for Multiple Binaries
- Move API code to
src/bin/server.rs
- Create
src/bin/cli.rs
for CLI application - Keep shared logic in
src/lib.rs
- Update Cargo.toml to support multiple binaries
Step 2: Enhanced CLI with Analytics and Management
- Core Commands:
owly list [--filters] [--format table|json|compact]
- List articlesowly show <id> [--content|--summary]
- Display specific articleowly read <id>
- Mark article as read and open in pagerowly open <id>
- Open source URL in browser
- Analytics Commands:
owly stats [--period day|week|month|year]
- Show reading statisticsowly trends [--tags|--sources|--topics|--geo]
- Display trending contentowly analytics export [--format csv|json]
- Export analytics data
- Management Commands:
owly settings [--get key] [--set key=value]
- Manage settingsowly filters [--list|--save name|--load name]
- Manage filter presetsowly cleanup [--old|--unread|--failed]
- Clean up articlesowly migrate [--from-country-filters]
- Migrate legacy data
- Enhanced Filtering Commands:
owly filter [--tag] [--geo] [--category]
- Advanced filtering with geographic supportowly tags [--list|--hierarchy|--geo]
- Tag management with geographic display
- Sharing Commands:
owly share <id> [--format text|markdown|html]
- Generate share contentowly export <id> [--template name] [--output file]
- Export article
Step 3: Advanced CLI Features
- Interactive filtering and search with geographic hierarchy
- Real-time analytics display with charts (using ASCII graphs)
- Bulk operations with progress indicators
- Settings management with validation
- Shell completion for all commands and parameters
- Legacy data migration tools
Phase 3: Dioxus Frontend Migration
Step 1: Component Architecture
- Core Display Components:
ArticleCard
- Compact article display with action buttonsArticleViewer
- Full article content displaySummaryViewer
- AI summary displayTagCloud
- Interactive tag display with geographic hierarchyGeographicMap
- Visual geographic filtering interface
- Analytics Components:
AnalyticsDashboard
- Main analytics overviewReadingStats
- Personal reading statisticsTrendChart
- Trending topics and patternsContentMetrics
- Source and content analyticsGeographicAnalytics
- Location-based content insights
- Enhanced Filtering Components:
FilterBuilder
- Advanced filter creation interface with geographic supportFilterPresets
- Saved filter managementSearchBar
- Smart search with suggestionsGeographicFilter
- Hierarchical location filteringMigrationTool
- Legacy filter migration interface
- Settings Components:
SettingsPanel
- User preference managementSystemConfig
- System-wide configurationExportImport
- Data export/import functionality
- Sharing Components:
ShareDialog
- Sharing interface with format optionsShareTemplates
- Custom template management
Step 2: Enhanced UX Features
- Smart Article Display:
- Lazy loading for performance
- Infinite scroll with virtualization
- Quick preview on hover
- Keyboard navigation support
- Advanced Analytics:
- Interactive charts and graphs with geographic data
- Customizable dashboard widgets
- Goal setting and progress tracking
- Comparison and trend analysis
- Intelligent Filtering:
- Auto-complete for filters with geographic suggestions
- Visual filter builder with map integration
- Filter combination suggestions based on tag relationships
- Saved search notifications
- Seamless Sharing:
- One-click sharing with clipboard integration
- Live preview of shared content
- Social media format optimization
- Batch sharing capabilities
Key Strategic Considerations
1. Performance & Scalability
- Efficient Data Loading: Lazy loading and pagination for large datasets
- Optimized Queries: Indexed database queries for filtering and analytics with hierarchical tag support
- Caching Strategy: Smart caching for frequently accessed content and tag hierarchies
- Real-time Updates: WebSocket integration for live analytics
2. User Experience Focus
- Progressive Disclosure: Show essential info first, details on demand
- Responsive Design: Optimized for mobile and desktop
- Accessibility: Full keyboard navigation and screen reader support
- Customization: User-configurable interface and behavior
- Smooth Migration: Seamless transition from country-based to tag-based filtering
3. Analytics & Insights
- Privacy-First: User control over data collection and retention
- Actionable Insights: Meaningful statistics that guide reading habits
- Performance Metrics: System health and efficiency tracking
- Trend Analysis: Pattern recognition for content and behavior with geographic context
4. Content Management
- Flexible Display: Multiple view modes for different use cases
- Smart Organization: AI-assisted content categorization with geographic awareness
- Bulk Operations: Efficient management of large article collections
- Data Integrity: Reliable content processing and error handling
- Legacy Support: Smooth migration from existing country-based filtering
Enhanced Configuration File Structure
[server]
host = '127.0.0.1'
port = 8090
[display]
default_view = "compact" # compact, full, summary
articles_per_page = 50
show_reading_time = true
show_word_count = false
highlight_unread = true
theme = "auto" # light, dark, auto
[analytics]
enabled = true
track_reading_time = true
track_scroll_position = true
retention_days = 365 # How long to keep detailed analytics
aggregate_older_data = true
[filtering]
enable_smart_suggestions = true
max_recent_filters = 10
auto_save_filters = true
default_sort = "added_desc" # added_desc, published_desc, title_asc
enable_geographic_hierarchy = true
auto_migrate_country_filters = true
[sharing]
default_format = "text"
include_summary = true
include_tags = true
include_source = true
copy_to_clipboard = true
[sharing.templates.text]
format = """
📰 {title}
{summary}
🏷️ Tags: {tags}
🌍 Location: {geographic_tags}
🔗 Source: {url}
📅 Published: {published_at}
Shared via Owly News Summariser
"""
[sharing.templates.markdown]
format = """
# {title}
{summary}
**Tags:** {tags}
**Location:** {geographic_tags}
**Source:** [{url}]({url})
**Published:** {published_at}
---
*Shared via Owly News Summariser*
"""
[ai]
enabled = true
provider = "ollama"
timeout_seconds = 120
[ai.summary]
enabled = true
temperature = 0.1
max_tokens = 1000
[ai.tagging]
enabled = true
temperature = 0.3
max_tokens = 200
max_tags_per_article = 10
min_confidence_threshold = 0.7
enable_geographic_tagging = true
enable_category_tagging = true
geographic_hierarchy_levels = 3 # country, region, city
[scraping]
timeout_seconds = 30
max_retries = 3
max_content_length = 50000
respect_robots_txt = true
rate_limit_delay_ms = 1000
[processing]
batch_size = 10
max_concurrent = 5
retry_attempts = 3
priority_manual = true
auto_mark_read_on_view = false
[migration]
auto_convert_country_filters = true
preserve_legacy_data = true
migration_batch_size = 100
[cli]
default_output = "table"
pager_command = "less"
show_progress = true
auto_confirm_bulk = false
show_geographic_hierarchy = true
Migration Strategy for Country-Based Filtering
Automatic Migration Process
- Data Analysis: Scan existing country filter data and RSS feed origins
- Tag Generation: Create geographic tags for each country with hierarchical structure
- Filter Conversion: Convert country-based filters to tag-based equivalents
- User Notification: Inform users about the migration and new capabilities
- Gradual Rollout: Maintain backward compatibility during transition period
Enhanced Geographic Features
- Hierarchical Display: Country → Region → City tag hierarchy
- Visual Map Integration: Interactive geographic filtering via map interface
- Smart Suggestions: Related location and content suggestions
- Multi-Level Filtering: Filter by specific cities, regions, or broader geographic areas
- Source Intelligence: AI detection of article geographic relevance beyond RSS origin
Future Enhancements (Post Phase 3)
Advanced Analytics
- Machine Learning Insights: Content recommendation based on reading patterns and geographic preferences
- Predictive Analytics: Trending topic prediction with geographic context
- Behavioral Analysis: Reading habit optimization suggestions
- Comparative Analytics: Benchmark against reading goals and regional averages
Enhanced Content Management
- Smart Collections: AI-curated article collections with geographic themes
- Reading Lists: Planned reading with progress tracking
- Content Relationships: Related article suggestions with geographic relevance
- Advanced Search: Full-text search with relevance scoring and geographic weighting
Social & Collaboration Features
- Reading Groups: Shared reading lists and discussions with geographic focus
- Social Sharing: Integration with social platforms
- Collaborative Tagging: Community-driven content organization
- Reading Challenges: Gamification of reading habits with geographic themes
Integration & Extensibility
- Browser Extension: Seamless article saving and reading
- Mobile Apps: Native iOS/Android applications with location awareness
- API Ecosystem: Third-party integrations and plugins
- Webhook System: Real-time notifications and integrations with geographic filtering