An open API service indexing awesome lists of open source software.

https://github.com/ztkent/sync

News Aggregation Platform - Trending Stories and AI Summaries
https://github.com/ztkent/sync

gemini-api go news rss

Last synced: 6 months ago
JSON representation

News Aggregation Platform - Trending Stories and AI Summaries

Awesome Lists containing this project

README

          


Sync Logo


Modern Content Aggregation - Trending Stories and AI Summaries



🌐 Sync News
Quick Start
API


## Overview

News aggregation service that combines RSS feed processing with AI-powered content analysis.

Provides real-time news updates, smart categorization, and executive summaries across multiple content categories.

## Features

- **Multi-Source RSS Aggregation**: Automated content indexing from 30+ premium news sources including BBC, CNN, Bloomberg, TechCrunch, Reuters, and more
- **AI-Powered Analysis**: Intelligent content categorization and trending analysis using Google's Gemini AI
- **Executive Summaries**: Daily AI-generated market insights and breaking news summaries
- **Smart Categorization**: Automatic classification into Finance, Politics, Technology, and World news
- **Real-Time Updates**: Background content indexing every 15 minutes
- **User Management**: Google OAuth authentication with personalized feeds
- **Responsive Design**: Mobile-first interface with dark/light theme support

## Mobile App

- Native Android app providing fullscreen access to Sync News with optimized mobile experience.
- App available for download on [Github](https://github.com/ztkent/sync/releases).

## Architecture

```
sync/
├── main.go
├── internal/
│ ├── content-analyzer/ # AI content analysis and trending detection
│ ├── content-indexer/ # RSS feed processing and content extraction
│ ├── database/ # SQLite schema and database operations
│ ├── models/ # Data structures and models
│ └── server/ # HTTP handlers and authentication
├── web/static/ # Frontend assets (CSS, JS, HTML)
├── data/ # SQLite database storage
└── app/ # Android app source code
```

## Technology Stack

### Backend
- **Language**: Golang
- **Framework**: Chi router with middleware support
- **Database**: SQLite with optimized indexing
- **Authentication**: Google OAuth 2.0
- **AI Integration**: Google Gemini AI via [AI-Util](https://github.com/ztkent/ai-util) package

### Frontend
- **Framework**: Vanilla JavaScript with HTMX for dynamic content
- **Styling**: Custom CSS with CSS variables for theming
- **Mobile**: Responsive design with touch-optimized interactions

## Quick Start

### Prerequisites
- Go 1.24 or higher
- Docker and Docker Compose
- Google Cloud credentials for AI features

### Environment Setup

1. **Clone the repository**:
```bash
git clone https://github.com/ztkent/sync.git
cd sync
```

2. **Configure environment variables**:
```bash
# Required for AI features and authentication
export GOOGLE_CLIENT_ID="your_google_client_id"
export GOOGLE_CLIENT_SECRET="your_google_client_secret"
export GOOGLE_API_KEY="your_google_api_key"
```

3. **Build and run with Docker**:
```bash
make app-up
```

4. **Access the application**:
- Development: `http://localhost:8080`
- Production: `https://localhost:8085` (with SSL)

### Database Schema

The application uses SQLite with the following core tables:
- `content_items`: Aggregated news articles
- `users`: User accounts and preferences
- `user_feeds`: Personalized content feeds
- `trending_feed`: AI-generated trending content
- `executive_summaries`: Daily market and news summaries

## API Endpoints

### Public Endpoints
- `GET /` - Main application interface
- `GET /api/feed` - Paginated content feed
- `GET /api/trending` - AI-curated trending stories
- `GET /api/search` - Content search functionality
- `GET /api/executive-summary` - Daily executive summary

### Authenticated Endpoints
- `POST /api/content/{id}/save` - Save article to reading list
- `POST /api/content/{id}/remove` - Remove saved article
- `GET /api/user` - User profile information

### Admin Endpoints
- `GET /api/refresh-trending` - Trigger trending analysis
- `GET /api/refresh-summary` - Generate executive summary