This is a Django-based web application designed to aggregate and personalize news articles based on user preferences. The application leverages AI/ML techniques for natural language processing (NLP) to provide a customized news feed experience.
- 🔐 User Registration and Authentication: Secure user accounts with email verification and password management.
- 📰 Personalized News Feed: Curated news articles tailored to individual user preferences.
- 📱 Responsive Design: Optimized for mobile and desktop viewing.
- 🔄 Real-time Updates: Live news updates with WebSockets (if using ASGI).
- 📊 Sentiment Analysis: Analyze the sentiment of news articles to understand the tone of content.
- 🛠️ API Endpoints: RESTful API for accessing and managing news data.
- 🐳 Dockerized Deployment: Easy-to-use Docker setup for local and production environments.
- 🧪 Automated Testing: Comprehensive unit and integration tests for reliability.
git clone https://github.com/yourusername/personalized-news-aggregator.git
cd personalized-news-aggregator
python -m venv venv
source venv/bin/activate # On Windows use `venv\Scripts\activate`
pip install -r requirements.txt
-
Create a
.env
file in the root directory:touch .env
-
Add your environment variables:
DJANGO_SECRET_KEY='your-secret-key' DEBUG=True OPENAI_API_KEY='your-openai-key'
python manage.py migrate
python manage.py runserver
Visit http://localhost:8000
in your web browser to see the application in action.
docker build -t news-aggregator .
docker run -d -p 8000:8000 news-aggregator
The application will be available at http://localhost:8000
.
To run the tests, use:
python manage.py test
personalized-news-aggregator/
│
├── news_aggregator/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
│ ├── asgi.py # Optional, for WebSockets
│ ├── apps/
│ │ ├── news/
│ │ ├── users/
│ │ ├── templates/
│ │ ├── static/
│ └── manage.py
│ └── tests/
├── requirements.txt
├── Dockerfile
├── .env
├── .gitignore
├── LICENSE
└── README.md
- Backend: Django, Django REST Framework
- Frontend: HTML, CSS, JavaScript (with jQuery or React for dynamic content)
- Database: SQLite (for development), PostgreSQL (for production)
- Deployment: Docker, Gunicorn, Nginx
- Version Control: Git, GitHub
- CI/CD: GitHub Actions
Contributions are welcome! Here's how you can help:
- Fork the repository.
- Create a new feature branch (
git checkout -b feature-branch-name
). - Commit your changes (
git commit -m 'Add some feature'
). - Push to the branch (
git push origin feature-branch-name
). - Open a pull request.
Please ensure your code adheres to our coding guidelines and includes relevant tests.
This project is licensed under the MIT License - see the LICENSE file for details.