A production-ready RSS/Atom aggregator for physics research topics (ion traps, quantum networks, cavity QED). Combines arXiv search with journal feeds.
Once deployed, your application will be accessible at your Render URL (e.g., https://your-app-name.onrender.com
).
- FastAPI Backend: High-performance async web framework
- arXiv Integration: Search and aggregate physics research papers
- RSS/Atom Feeds: Aggregate content from multiple journal feeds
- Caching: TTL-based caching for improved performance
- Responsive UI: Clean web interface for browsing aggregated content
- Automatic Deployment: CI/CD pipeline with GitHub Actions
- GitHub account
- Render account (free tier available at https://render.com)
This repository is already forked and ready for deployment!
-
Create a Render Account:
- Go to https://render.com and sign up
- Connect your GitHub account
-
Create a New Web Service:
- Click "New +" → "Web Service"
- Connect this GitHub repository
- Configure the service:
- Name:
physics-rss-aggregator
(or your preferred name) - Environment:
Python 3
- Build Command:
pip install -r requirements.txt
- Start Command:
uvicorn app:app --host 0.0.0.0 --port $PORT
- Instance Type: Free (or choose based on your needs)
- Name:
-
Deploy:
- Click "Create Web Service"
- Render will automatically deploy your application
- Note your app URL (e.g.,
https://physics-rss-aggregator.onrender.com
)
For automatic deployment on every push to main:
-
Get Your Render Deploy Hook:
- In Render dashboard, go to your web service
- Navigate to "Settings" → "Deploy Hook"
- Copy the deploy hook URL
-
Add Deploy Hook to GitHub Secrets:
- Go to your GitHub repository
- Navigate to "Settings" → "Secrets and variables" → "Actions"
- Click "New repository secret"
- Name:
RENDER_DEPLOY_HOOK
- Value: Paste your Render deploy hook URL
- Click "Add secret"
-
Verify Workflow:
- The GitHub Actions workflow (
.github/workflows/deploy.yml
) is already configured - Push any changes to the
main
branch to trigger automatic deployment - Check the "Actions" tab in GitHub to monitor deployment status
- The GitHub Actions workflow (
This repository includes a render.yaml
file for infrastructure-as-code deployment:
- Go to your Render dashboard
- Click "New +" → "Blueprint"
- Connect this repository
- Render will automatically detect the
render.yaml
and deploy accordingly
- Python 3.11 or higher
- pip
# Clone the repository
git clone https://github.com/qiskit-advocate/physics-rss-aggregator.git
cd physics-rss-aggregator
# Install dependencies
pip install -r requirements.txt
# Run the application
uvicorn app:app --reload
The application will be available at http://localhost:8000
Edit feeds.yaml
to customize RSS feeds and arXiv search parameters:
normal_feeds:
- https://example.com/feed.xml
- https://another-feed.com/rss
arxiv:
max_results: 75
sort_by: submittedDate
sort_order: descending
Once deployed, visit:
- Interactive API docs:
https://your-app-url/docs
- Alternative API docs:
https://your-app-url/redoc
GET /
- Web interfaceGET /api/search?topic=quantum+computing
- Search and aggregate feeds
This repository includes a GitHub Actions workflow that:
- ✅ Checks out code on every push to main
- ✅ Sets up Python 3.11 environment
- ✅ Installs dependencies
- ✅ Runs basic import tests
- ✅ Triggers Render deployment (if deploy hook is configured)
physics-rss-aggregator/
├── .github/
│ └── workflows/
│ └── deploy.yml # GitHub Actions workflow
├── templates/
│ └── index.html # Web UI template
├── app.py # FastAPI application
├── feeds.yaml # RSS feed configuration
├── feeds.example.yaml # Example configuration
├── requirements.txt # Python dependencies
├── render.yaml # Render deployment config
├── Dockerfile # Docker configuration
└── README.md # This file
- FastAPI: Modern Python web framework
- uvicorn: ASGI server
- aiohttp: Async HTTP client
- feedparser: RSS/Atom feed parser
- Jinja2: Template engine
- PyYAML: YAML configuration parser
All dependencies are listed in requirements.txt
and automatically installed during deployment.
Potential enhancements:
- User authentication
- Saved searches and preferences
- Email notifications for new papers
- Advanced filtering options
- Export to BibTeX/RIS formats
Feel free to fork this repository and submit pull requests with improvements!
This project is open source and available for educational and research purposes.
- Build fails: Check Python version compatibility (requires 3.11+)
- App doesn't start: Verify all dependencies in
requirements.txt
- Timeout errors: Consider upgrading to a paid Render plan for better performance
- Workflow doesn't trigger: Ensure the workflow file is in
.github/workflows/
- Deploy hook fails: Verify the
RENDER_DEPLOY_HOOK
secret is correctly set
For issues or questions, please open an issue on GitHub.
Note: This application is configured for automatic deployment on Render. The free tier may have cold start delays (up to 30 seconds) after periods of inactivity.