207 lines
4.1 KiB
Markdown
207 lines
4.1 KiB
Markdown
# Quick Reference Guide
|
|
|
|
## Starting the Application
|
|
|
|
### 1. Start MongoDB
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
### 2. Start Backend (Port 5001)
|
|
```bash
|
|
cd backend
|
|
source venv/bin/activate # or: venv\Scripts\activate on Windows
|
|
python app.py
|
|
```
|
|
|
|
### 3. Start Frontend (Port 3000)
|
|
```bash
|
|
cd frontend
|
|
npm start
|
|
```
|
|
|
|
### 4. Run Crawler (Optional)
|
|
```bash
|
|
cd news_crawler
|
|
pip install -r requirements.txt
|
|
python crawler_service.py 10
|
|
```
|
|
|
|
## Common Commands
|
|
|
|
### RSS Feed Management
|
|
|
|
**List all feeds:**
|
|
```bash
|
|
curl http://localhost:5001/api/rss-feeds
|
|
```
|
|
|
|
**Add a feed:**
|
|
```bash
|
|
curl -X POST http://localhost:5001/api/rss-feeds \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"name": "Feed Name", "url": "https://example.com/rss"}'
|
|
```
|
|
|
|
**Remove a feed:**
|
|
```bash
|
|
curl -X DELETE http://localhost:5001/api/rss-feeds/<feed_id>
|
|
```
|
|
|
|
**Toggle feed status:**
|
|
```bash
|
|
curl -X PATCH http://localhost:5001/api/rss-feeds/<feed_id>/toggle
|
|
```
|
|
|
|
### News & Subscriptions
|
|
|
|
**Get latest news:**
|
|
```bash
|
|
curl http://localhost:5001/api/news
|
|
```
|
|
|
|
**Subscribe:**
|
|
```bash
|
|
curl -X POST http://localhost:5001/api/subscribe \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"email": "user@example.com"}'
|
|
```
|
|
|
|
**Get stats:**
|
|
```bash
|
|
curl http://localhost:5001/api/stats
|
|
```
|
|
|
|
### Ollama (AI)
|
|
|
|
**Test connection:**
|
|
```bash
|
|
curl http://localhost:5001/api/ollama/ping
|
|
```
|
|
|
|
**List models:**
|
|
```bash
|
|
curl http://localhost:5001/api/ollama/models
|
|
```
|
|
|
|
### Database
|
|
|
|
**Connect to MongoDB:**
|
|
```bash
|
|
mongosh
|
|
use munich_news
|
|
```
|
|
|
|
**Check articles:**
|
|
```javascript
|
|
db.articles.find().limit(5)
|
|
db.articles.countDocuments()
|
|
db.articles.countDocuments({full_content: {$exists: true}})
|
|
```
|
|
|
|
**Check subscribers:**
|
|
```javascript
|
|
db.subscribers.find()
|
|
db.subscribers.countDocuments({status: "active"})
|
|
```
|
|
|
|
**Check RSS feeds:**
|
|
```javascript
|
|
db.rss_feeds.find()
|
|
```
|
|
|
|
## File Locations
|
|
|
|
### Configuration
|
|
- Backend: `backend/.env`
|
|
- Frontend: `frontend/package.json`
|
|
- Crawler: Uses backend's `.env` or own `.env`
|
|
|
|
### Logs
|
|
- Backend: Terminal output
|
|
- Frontend: Terminal output
|
|
- Crawler: Terminal output
|
|
|
|
### Database
|
|
- MongoDB data: Docker volume `mongodb_data`
|
|
- Database name: `munich_news`
|
|
|
|
## Ports
|
|
|
|
| Service | Port | URL |
|
|
|---------|------|-----|
|
|
| Frontend | 3000 | http://localhost:3000 |
|
|
| Backend | 5001 | http://localhost:5001 |
|
|
| MongoDB | 27017 | mongodb://localhost:27017 |
|
|
| Ollama | 11434 | http://localhost:11434 |
|
|
|
|
## Troubleshooting
|
|
|
|
### Backend won't start
|
|
- Check if port 5001 is available
|
|
- Verify MongoDB is running
|
|
- Check `.env` file exists
|
|
|
|
### Frontend can't connect
|
|
- Verify backend is running on port 5001
|
|
- Check CORS settings
|
|
- Check API_URL in frontend
|
|
|
|
### Crawler fails
|
|
- Install dependencies: `pip install -r requirements.txt`
|
|
- Check MongoDB connection
|
|
- Verify RSS feeds exist in database
|
|
|
|
### MongoDB connection error
|
|
- Start MongoDB: `docker-compose up -d`
|
|
- Check connection string in `.env`
|
|
- Verify port 27017 is not blocked
|
|
|
|
### Port 5000 conflict (macOS)
|
|
- AirPlay uses port 5000
|
|
- Use port 5001 instead (set in `.env`)
|
|
- Or disable AirPlay Receiver in System Preferences
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
munich-news/
|
|
├── backend/ # Main API (Flask)
|
|
├── frontend/ # Web UI (Express + JS)
|
|
├── news_crawler/ # Crawler microservice
|
|
├── .env # Environment variables
|
|
└── docker-compose.yml # MongoDB setup
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
### Backend (.env)
|
|
```env
|
|
MONGODB_URI=mongodb://localhost:27017/
|
|
FLASK_PORT=5001
|
|
SMTP_SERVER=smtp.gmail.com
|
|
SMTP_PORT=587
|
|
EMAIL_USER=your-email@gmail.com
|
|
EMAIL_PASSWORD=your-app-password
|
|
OLLAMA_BASE_URL=http://127.0.0.1:11434
|
|
OLLAMA_MODEL=phi3:latest
|
|
OLLAMA_ENABLED=true
|
|
```
|
|
|
|
## Development Workflow
|
|
|
|
1. **Add RSS Feed** → Backend API
|
|
2. **Run Crawler** → Fetches full content
|
|
3. **View News** → Frontend displays articles
|
|
4. **Users Subscribe** → Via frontend form
|
|
5. **Send Newsletter** → Manual or scheduled
|
|
|
|
## Useful Links
|
|
|
|
- Frontend: http://localhost:3000
|
|
- Backend API: http://localhost:5001
|
|
- MongoDB: mongodb://localhost:27017
|
|
- Architecture: See `ARCHITECTURE.md`
|
|
- Backend Structure: See `backend/STRUCTURE.md`
|
|
- Crawler Guide: See `news_crawler/README.md`
|