Algerian News Filtering Project with AI
# الخلاصة الجزائرية | El-Kholasa DZ
> **Production-Grade Algerian News Aggregator powered by Cloudflare Serverless Ecosystem**
A high-performance Progressive Web App (PWA) that aggregates, deduplicates, and AI-summarizes Algerian news from major press outlets using Cloudflare Workers AI, D1, and Pages.
---
## 🏗️ Repository Architecture
```
elkholasa-dz/
├── 📁 backend-worker/ # Cloudflare Worker — Backend Engine
│ ├── 📄 schema.sql # D1 SQLite schema (categories, clusters, articles, timelines)
│ ├── 📄 wrangler.toml # Cloudflare configuration (D1, AI, KV, Cron bindings)
│ ├── 📄 package.json # Worker dependencies (Hono, @cloudflare/ai)
│ ├── 📄 tsconfig.json # TypeScript strict config for Workers runtime
│ ├── 📁 migrations/
│ │ └── 📄 0001_initial_schema.sql # D1 migration (tracked by Wrangler)
│ └── 📁 src/
│ └── 📄 index.ts # Core Worker: Scraping + AI + API + Cron handlers
│
├── 📁 src/ # Frontend PWA (Vite + React + Tailwind v4)
│ ├── 📄 main.tsx # Entry point: SW registration, JSON-LD injection
│ ├── 📄 App.tsx # Root component: layout, state, data fetching
│ ├── 📄 index.css # Design system: OLED dark mode, RTL, glassmorphism
│ ├── 📁 components/
│ │ ├── 📄 Header.tsx # Sticky glassmorphism header + search + theme toggle
│ │ ├── 📄 CategorySidebar.tsx # RTL category filter navigation
│ │ ├── 📄 NewsFeed.tsx # Dynamic hybrid layout engine (hero + grid)
│ │ ├── 📄 ClusterCard.tsx # Main news card: summary + source dock + audio
│ │ ├── 📄 SourceDock.tsx # Multi-source attribution button dock
│ │ ├── 📄 AudioWaveform.tsx # Animated SVG waveform for TTS playback
│ │ ├── 📄 SkeletonCard.tsx # Zero-CLS skeleton loaders (3:2 aspect ratio)
│ │ …