A modern, full-stack personal feed aggregator with AI-powered categorization.
Content Hub is a personal feed aggregator that brings together the best tech content from across the web into one unified platform. We collect, organize, and personalize content so you can stay informed without the noise.
- 17+ Content Sources: Aggregates from TechCrunch, Hacker News, DEV Community, Reddit, and more
- AI Categorization: Automatically categorizes articles into 12+ topics
- Dark Mode: Full dark mode support with system preference detection
- Mobile Responsive: Optimized mobile experience with bottom navigation
- Real-time Updates: Background jobs refresh feeds every 15 minutes
- Advanced Search: Filter by source and categories
- Reading Analytics: Track reading habits, streaks, and favorite topics
- Email/Password Authentication: Secure signup and login with bcrypt hashing
- JWT Tokens: Access and refresh token management
- Google OAuth: One-click social login
- Password Reset: Email-based password recovery via Resend
- Protected Routes: Frontend route guards and backend middleware
- Session Management: Persistent authentication with token refresh
- TechCrunch, The Verge, Ars Technica
- Hacker News, MIT Technology Review, WIRED
- Engadget, VentureBeat, ZDNet
- The Next Web, Mashable
- DEV Community, Stack Overflow Blog, Medium
- Techmeme (real-time tech news)
- Reddit: r/technology, r/programming, r/python, r/webdev, r/machinelearning, r/datascience, r/cybersecurity, r/devops
- YouTube: Configurable channel feeds
- Auto-categorization: AI, Security, Cloud, Mobile, Web, Hardware, Gaming, Startup, Programming, Data Science, DevOps, Cybersecurity
- HTML Cleaning: Strips HTML tags and decodes entities from feed content
- Background Jobs: APScheduler for automatic feed refresh
- Feed Preferences: Select preferred sources and content types (RSS, scrape, social)
- Personalized Feed: AI-filtered content based on user preferences
- Trending Articles: Discover most popular content across all users
Before you begin, ensure you have the following installed:
- Python 3.9+ (Download)
- Node.js 18+ (Download)
- PostgreSQL (or Supabase account)
- Redis/Valkey instance (Aiven or local)
- Resend API Key (Get one)
- Google OAuth Credentials (optional, Setup Guide)
- Configure environment
cp backend/.env.example backend/.env
# Edit backend/.env with your credentials- Run with Docker Compose
docker-compose up --build- Initialize database (first time only)
docker-compose exec backend uv run python -m app.scripts.init_db- Run database migrations (first time only)
docker-compose exec backend uv run python -m app.scripts.migrate_add_indexes- Frontend:
http://localhost:5173 - Backend API:
http://localhost:5000
content-hub/
├── backend/
│ ├── app/
│ │ ├── core/ # Config, auth, cache, scheduler
│ │ ├── models/ # SQLAlchemy models
│ │ ├── routes/ # API endpoints
│ │ ├── schemas/ # Pydantic schemas
│ │ ├── services/ # Business logic
│ │ ├── utils/ # Helpers (RSS, scraping, etc.)
│ │ ├── scripts/ # DB scripts
│ │ ├── tests/ # Unit tests
│ │ ├── main.py # Flask app
│ │ └── swagger.json # API docs
│ ├── logs/ # Application logs
│ ├── .env # Environment config
│ └── run.py # Entry point
│
└── frontend/
├── src/
│ ├── components/ # Reusable components
│ ├── context/ # Global state handlers
│ ├── hooks/ # Custom hooks (API calls)
│ ├── pages/ # Page components
│ ├── services/ # API service
│ ├── types/ # TypeScript types
│ ├── App.tsx # Main app
│ └── main.tsx # Entry point
├── .env # Environment config
└── package.json # Dependencies
- Set
FLASK_ENV=productionin environment variables - Use a production WSGI server (Gunicorn recommended)
- Configure PostgreSQL and Redis instances
- Enable CORS for your frontend domain
- Connect your GitHub repository to Vercel
- Set
VITE_API_URLenvironment variable - Deploy with automatic builds on push
MIT License - see LICENSE file for details
Built with ❤️ using Flask and React