Skip to content

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.

License

Notifications You must be signed in to change notification settings

UTSAVS26/Personalized-News-Aggregator

Repository files navigation

📰 Personalized News Aggregator

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.

🚀 Features

  • 🔐 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.

📋 Installation

1. Clone the Repository

git clone https://github.com/yourusername/personalized-news-aggregator.git
cd personalized-news-aggregator

2. Create and Activate a Virtual Environment

python -m venv venv
source venv/bin/activate  # On Windows use `venv\Scripts\activate`

3. Install Dependencies

pip install -r requirements.txt

4. Set Up Environment Variables

  • 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'

5. Apply Migrations

python manage.py migrate

6. Run the Development Server

python manage.py runserver

Visit http://localhost:8000 in your web browser to see the application in action.

🐳 Docker Deployment

1. Build the Docker Image

docker build -t news-aggregator .

2. Run the Docker Container

docker run -d -p 8000:8000 news-aggregator

The application will be available at http://localhost:8000.

✅ Running Tests

To run the tests, use:

python manage.py test

📂 Project Structure

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

🛠️ Technologies Used

  • 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

💻 Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository.
  2. Create a new feature branch (git checkout -b feature-branch-name).
  3. Commit your changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin feature-branch-name).
  5. Open a pull request.

Please ensure your code adheres to our coding guidelines and includes relevant tests.

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

About

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.

Topics

Resources

License

Stars

Watchers

Forks