update
This commit is contained in:
126
PROJECT_STRUCTURE.md
Normal file
126
PROJECT_STRUCTURE.md
Normal file
@@ -0,0 +1,126 @@
|
||||
# Project Structure
|
||||
|
||||
```
|
||||
munich-news/
|
||||
├── backend/ # Backend API and services
|
||||
│ ├── routes/ # API routes
|
||||
│ ├── services/ # Business logic
|
||||
│ ├── .env.example # Environment template
|
||||
│ ├── app.py # Flask application
|
||||
│ ├── config.py # Configuration
|
||||
│ └── database.py # MongoDB connection
|
||||
│
|
||||
├── news_crawler/ # News crawler service
|
||||
│ ├── Dockerfile # Crawler container
|
||||
│ ├── crawler_service.py # Main crawler logic
|
||||
│ ├── scheduled_crawler.py # Scheduler (6 AM)
|
||||
│ ├── rss_utils.py # RSS parsing utilities
|
||||
│ └── requirements.txt # Python dependencies
|
||||
│
|
||||
├── news_sender/ # Newsletter sender service
|
||||
│ ├── Dockerfile # Sender container
|
||||
│ ├── sender_service.py # Main sender logic
|
||||
│ ├── scheduled_sender.py # Scheduler (7 AM)
|
||||
│ ├── tracking_integration.py # Email tracking
|
||||
│ ├── newsletter_template.html # Email template
|
||||
│ └── requirements.txt # Python dependencies
|
||||
│
|
||||
├── frontend/ # React dashboard (optional)
|
||||
│ ├── src/ # React components
|
||||
│ ├── public/ # Static files
|
||||
│ └── package.json # Node dependencies
|
||||
│
|
||||
├── tests/ # All test files
|
||||
│ ├── crawler/ # Crawler tests
|
||||
│ ├── sender/ # Sender tests
|
||||
│ └── backend/ # Backend tests
|
||||
│
|
||||
├── docs/ # Documentation
|
||||
│ ├── ARCHITECTURE.md # System architecture
|
||||
│ ├── DEPLOYMENT.md # Deployment guide
|
||||
│ ├── API.md # API reference
|
||||
│ ├── DATABASE_SCHEMA.md # Database structure
|
||||
│ ├── BACKEND_STRUCTURE.md # Backend organization
|
||||
│ ├── CRAWLER_HOW_IT_WORKS.md # Crawler internals
|
||||
│ ├── EXTRACTION_STRATEGIES.md # Content extraction
|
||||
│ └── RSS_URL_EXTRACTION.md # RSS parsing
|
||||
│
|
||||
├── .kiro/ # Kiro IDE configuration
|
||||
│ └── specs/ # Feature specifications
|
||||
│
|
||||
├── docker-compose.yml # Docker orchestration
|
||||
├── README.md # Main documentation
|
||||
├── QUICKSTART.md # 5-minute setup guide
|
||||
├── CONTRIBUTING.md # Contribution guidelines
|
||||
├── .gitignore # Git ignore rules
|
||||
└── .dockerignore # Docker ignore rules
|
||||
```
|
||||
|
||||
## Key Files
|
||||
|
||||
### Configuration
|
||||
- `backend/.env` - Environment variables (create from .env.example)
|
||||
- `docker-compose.yml` - Docker services configuration
|
||||
|
||||
### Entry Points
|
||||
- `news_crawler/scheduled_crawler.py` - Crawler scheduler (6 AM)
|
||||
- `news_sender/scheduled_sender.py` - Sender scheduler (7 AM)
|
||||
- `backend/app.py` - Backend API server
|
||||
|
||||
### Documentation
|
||||
- `README.md` - Main project documentation
|
||||
- `QUICKSTART.md` - Quick setup guide
|
||||
- `docs/` - Detailed documentation
|
||||
|
||||
### Tests
|
||||
- `tests/crawler/` - Crawler test files
|
||||
- `tests/sender/` - Sender test files
|
||||
- `tests/backend/` - Backend test files
|
||||
|
||||
## Docker Services
|
||||
|
||||
When you run `docker-compose up -d`, these services start:
|
||||
|
||||
1. **mongodb** - Database (port 27017)
|
||||
2. **crawler** - News crawler (scheduled for 6 AM)
|
||||
3. **sender** - Newsletter sender (scheduled for 7 AM)
|
||||
4. **backend** - API server (port 5001, optional)
|
||||
|
||||
## Data Flow
|
||||
|
||||
```
|
||||
RSS Feeds → Crawler → MongoDB → Sender → Subscribers
|
||||
↓
|
||||
Backend API
|
||||
↓
|
||||
Analytics
|
||||
```
|
||||
|
||||
## Development Workflow
|
||||
|
||||
1. Edit code in respective directories
|
||||
2. Rebuild containers: `docker-compose up -d --build`
|
||||
3. View logs: `docker-compose logs -f`
|
||||
4. Run tests: `docker-compose exec <service> python tests/...`
|
||||
|
||||
## Adding New Features
|
||||
|
||||
1. Create spec in `.kiro/specs/`
|
||||
2. Implement in appropriate directory
|
||||
3. Add tests in `tests/`
|
||||
4. Update documentation in `docs/`
|
||||
5. Submit pull request
|
||||
|
||||
## Clean Architecture
|
||||
|
||||
- **Separation of Concerns**: Each service has its own directory
|
||||
- **Centralized Configuration**: All config in `backend/.env`
|
||||
- **Organized Tests**: All tests in `tests/` directory
|
||||
- **Clear Documentation**: All docs in `docs/` directory
|
||||
- **Single Entry Point**: One `docker-compose.yml` file
|
||||
|
||||
This structure makes the project:
|
||||
- ✅ Easy to navigate
|
||||
- ✅ Simple to deploy
|
||||
- ✅ Clear to understand
|
||||
- ✅ Maintainable long-term
|
||||
Reference in New Issue
Block a user