Skip to content

Commit 5880311

Browse files
authored
Update README.md
Comprehensive deployment guide with step-by-step instructions. Includes: - Render deployment setup - GitHub Actions CI/CD configuration - Local development instructions - API documentation - Troubleshooting guide
1 parent d1688a9 commit 5880311

File tree

1 file changed

+205
-0
lines changed

1 file changed

+205
-0
lines changed

README.md

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,207 @@
11
# physics-rss-aggregator
2+
23
A production-ready RSS/Atom aggregator for physics research topics (ion traps, quantum networks, cavity QED). Combines arXiv search with journal feeds.
4+
5+
## 🚀 Live Demo
6+
7+
Once deployed, your application will be accessible at your Render URL (e.g., `https://your-app-name.onrender.com`).
8+
9+
## Features
10+
11+
- **FastAPI Backend**: High-performance async web framework
12+
- **arXiv Integration**: Search and aggregate physics research papers
13+
- **RSS/Atom Feeds**: Aggregate content from multiple journal feeds
14+
- **Caching**: TTL-based caching for improved performance
15+
- **Responsive UI**: Clean web interface for browsing aggregated content
16+
- **Automatic Deployment**: CI/CD pipeline with GitHub Actions
17+
18+
## 🌐 Deployment Setup
19+
20+
### Prerequisites
21+
22+
- GitHub account
23+
- Render account (free tier available at https://render.com)
24+
25+
### Step 1: Fork the Repository
26+
27+
This repository is already forked and ready for deployment!
28+
29+
### Step 2: Set Up Render Web Service
30+
31+
1. **Create a Render Account**:
32+
- Go to https://render.com and sign up
33+
- Connect your GitHub account
34+
35+
2. **Create a New Web Service**:
36+
- Click "New +" → "Web Service"
37+
- Connect this GitHub repository
38+
- Configure the service:
39+
- **Name**: `physics-rss-aggregator` (or your preferred name)
40+
- **Environment**: `Python 3`
41+
- **Build Command**: `pip install -r requirements.txt`
42+
- **Start Command**: `uvicorn app:app --host 0.0.0.0 --port $PORT`
43+
- **Instance Type**: Free (or choose based on your needs)
44+
45+
3. **Deploy**:
46+
- Click "Create Web Service"
47+
- Render will automatically deploy your application
48+
- Note your app URL (e.g., `https://physics-rss-aggregator.onrender.com`)
49+
50+
### Step 3: Enable Automatic Deployment with GitHub Actions (Optional)
51+
52+
For automatic deployment on every push to main:
53+
54+
1. **Get Your Render Deploy Hook**:
55+
- In Render dashboard, go to your web service
56+
- Navigate to "Settings" → "Deploy Hook"
57+
- Copy the deploy hook URL
58+
59+
2. **Add Deploy Hook to GitHub Secrets**:
60+
- Go to your GitHub repository
61+
- Navigate to "Settings" → "Secrets and variables" → "Actions"
62+
- Click "New repository secret"
63+
- Name: `RENDER_DEPLOY_HOOK`
64+
- Value: Paste your Render deploy hook URL
65+
- Click "Add secret"
66+
67+
3. **Verify Workflow**:
68+
- The GitHub Actions workflow (`.github/workflows/deploy.yml`) is already configured
69+
- Push any changes to the `main` branch to trigger automatic deployment
70+
- Check the "Actions" tab in GitHub to monitor deployment status
71+
72+
### Alternative: Deploy with render.yaml
73+
74+
This repository includes a `render.yaml` file for infrastructure-as-code deployment:
75+
76+
1. Go to your Render dashboard
77+
2. Click "New +" → "Blueprint"
78+
3. Connect this repository
79+
4. Render will automatically detect the `render.yaml` and deploy accordingly
80+
81+
## 🛠️ Local Development
82+
83+
### Prerequisites
84+
85+
- Python 3.11 or higher
86+
- pip
87+
88+
### Installation
89+
90+
```bash
91+
# Clone the repository
92+
git clone https://github.com/qiskit-advocate/physics-rss-aggregator.git
93+
cd physics-rss-aggregator
94+
95+
# Install dependencies
96+
pip install -r requirements.txt
97+
98+
# Run the application
99+
uvicorn app:app --reload
100+
```
101+
102+
The application will be available at http://localhost:8000
103+
104+
### Configuration
105+
106+
Edit `feeds.yaml` to customize RSS feeds and arXiv search parameters:
107+
108+
```yaml
109+
normal_feeds:
110+
- https://example.com/feed.xml
111+
- https://another-feed.com/rss
112+
113+
arxiv:
114+
max_results: 75
115+
sort_by: submittedDate
116+
sort_order: descending
117+
```
118+
119+
## 📚 API Documentation
120+
121+
Once deployed, visit:
122+
- Interactive API docs: `https://your-app-url/docs`
123+
- Alternative API docs: `https://your-app-url/redoc`
124+
125+
### Endpoints
126+
127+
- `GET /` - Web interface
128+
- `GET /api/search?topic=quantum+computing` - Search and aggregate feeds
129+
130+
## 🔄 CI/CD Pipeline
131+
132+
This repository includes a GitHub Actions workflow that:
133+
134+
1. ✅ Checks out code on every push to main
135+
2. ✅ Sets up Python 3.11 environment
136+
3. ✅ Installs dependencies
137+
4. ✅ Runs basic import tests
138+
5. ✅ Triggers Render deployment (if deploy hook is configured)
139+
140+
## 📝 Project Structure
141+
142+
```
143+
physics-rss-aggregator/
144+
├── .github/
145+
│ └── workflows/
146+
│ └── deploy.yml # GitHub Actions workflow
147+
├── templates/
148+
│ └── index.html # Web UI template
149+
├── app.py # FastAPI application
150+
├── feeds.yaml # RSS feed configuration
151+
├── feeds.example.yaml # Example configuration
152+
├── requirements.txt # Python dependencies
153+
├── render.yaml # Render deployment config
154+
├── Dockerfile # Docker configuration
155+
└── README.md # This file
156+
```
157+
158+
## 🔧 Technologies Used
159+
160+
- **FastAPI**: Modern Python web framework
161+
- **uvicorn**: ASGI server
162+
- **aiohttp**: Async HTTP client
163+
- **feedparser**: RSS/Atom feed parser
164+
- **Jinja2**: Template engine
165+
- **PyYAML**: YAML configuration parser
166+
167+
## 📦 Dependencies
168+
169+
All dependencies are listed in `requirements.txt` and automatically installed during deployment.
170+
171+
## 🌟 Features to Add
172+
173+
Potential enhancements:
174+
- User authentication
175+
- Saved searches and preferences
176+
- Email notifications for new papers
177+
- Advanced filtering options
178+
- Export to BibTeX/RIS formats
179+
180+
## 🤝 Contributing
181+
182+
Feel free to fork this repository and submit pull requests with improvements!
183+
184+
## 📄 License
185+
186+
This project is open source and available for educational and research purposes.
187+
188+
## 🆘 Troubleshooting
189+
190+
### Deployment Issues
191+
192+
- **Build fails**: Check Python version compatibility (requires 3.11+)
193+
- **App doesn't start**: Verify all dependencies in `requirements.txt`
194+
- **Timeout errors**: Consider upgrading to a paid Render plan for better performance
195+
196+
### GitHub Actions Issues
197+
198+
- **Workflow doesn't trigger**: Ensure the workflow file is in `.github/workflows/`
199+
- **Deploy hook fails**: Verify the `RENDER_DEPLOY_HOOK` secret is correctly set
200+
201+
## 📧 Support
202+
203+
For issues or questions, please open an issue on GitHub.
204+
205+
---
206+
207+
**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.

0 commit comments

Comments
 (0)