{"id":31588546,"url":"https://github.com/d-senyaka/headLines-plus","last_synced_at":"2025-12-30T21:17:08.503Z","repository":{"id":299709068,"uuid":"953674852","full_name":"d-senyaka/News-Recommendation-System","owner":"d-senyaka","description":"Personalized News Recommendation System A modular Java-based application that delivers personalized news recommendations based on user interactions and preferences. Built with JavaFX, MySQL, and core Object-Oriented Programming principles, this system offers content categorization, adaptive learning, and a user-friendly interfac","archived":false,"fork":false,"pushed_at":"2025-09-26T07:18:24.000Z","size":5249,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-29T22:41:32.959Z","etag":null,"topics":["api","cosine-similarity","css","css-grid-layout","csv","fxml","fxml-files","java","javafx","javafx-application","javafx-desktop-apps","javafx-gui","javafx-library","javafx-project","jdbc","json","mysql","oop-principles","oops-in-java","tf-idf"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/d-senyaka.png","metadata":{"files":{"readme":"README.md","changelog":"news_appdb (1).csv","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-23T22:03:44.000Z","updated_at":"2025-09-26T07:17:13.000Z","dependencies_parsed_at":"2025-09-30T01:33:53.219Z","dependency_job_id":null,"html_url":"https://github.com/d-senyaka/News-Recommendation-System","commit_stats":null,"previous_names":["deshan-senanayake/news-recommendation-system","d-senyaka/news-recommendation-system"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/d-senyaka/News-Recommendation-System","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-senyaka%2FNews-Recommendation-System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-senyaka%2FNews-Recommendation-System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-senyaka%2FNews-Recommendation-System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-senyaka%2FNews-Recommendation-System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d-senyaka","download_url":"https://codeload.github.com/d-senyaka/News-Recommendation-System/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-senyaka%2FNews-Recommendation-System/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278547821,"owners_count":26004775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","cosine-similarity","css","css-grid-layout","csv","fxml","fxml-files","java","javafx","javafx-application","javafx-desktop-apps","javafx-gui","javafx-library","javafx-project","jdbc","json","mysql","oop-principles","oops-in-java","tf-idf"],"created_at":"2025-10-06T02:10:38.720Z","updated_at":"2025-12-30T21:17:08.498Z","avatar_url":"https://github.com/d-senyaka.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# 📰 HeadLines Plus – Personalized News Recommendation System\n\nA modular Java-based application that delivers personalized news recommendations based on user interactions and preferences. Built with JavaFX, MySQL, and core Object-Oriented Programming principles, this system offers content categorization, adaptive learning, and a user-friendly interface.\n\n---\n\n## 🚀 Features\n\n### 👤 User Functionality\n- ✅ **User Registration \u0026 Login** (with validation)\n- 📂 **View Uncategorized and Categorized Articles**\n- 👍 **Interact with Articles** (Read, Like, Skip)\n- 🧠 **Personalized Recommendations** (via TF-IDF + weighting)\n- 📜 **View Interaction History**\n- 🛠 **Update Account Information**\n\n### 🛠 Admin Functionality\n- 🔐 **Admin Login**\n- 👥 **View \u0026 Delete Registered Users**\n- 🌐 **Activate NewsAPI** to fetch new articles\n- 💾 **Store Fetched Articles** in the database\n\n---\n\n## 🧠 Recommendation Engine\n\n- 📊 **TF-IDF Vectorization** of combined article text (title + description + content)\n- 🧮 **Cosine Similarity** for relevance computation\n- 📈 **Adaptive Weighting Algorithm** to refine future recommendations\n- 📂 **User-Specific Dataset** created dynamically from past interactions\n\n---\n\n## 🧱 System Architecture\n\n```text\n+-----------------------------+\n|        JavaFX GUI          |\n| (Login, Register, Articles)|\n+-------------+--------------+\n              |\n              v\n+-------------+--------------+\n|       Controllers Layer     |\n| (HomeController, NewsApp...)|\n+-------------+--------------+\n              |\n              v\n+-------------+--------------+\n|       Core Classes Layer    |\n| (User.java, Article.java...)|\n+-------------+--------------+\n              |\n              v\n+-------------+--------------+\n|    Services and Utilities   |\n| (APIService, NewsParser...) |\n+-------------+--------------+\n              |\n              v\n+-------------+--------------+\n|     MySQL Database Layer    |\n| (users, articles, preferences) |\n+-----------------------------+\n```\n\n---\n\n## 🧰 Tech Stack\n\n| Layer              | Technology                         |\n|--------------------|-------------------------------------|\n| 👨‍💻 GUI Frontend     | JavaFX + FXML + CSS                |\n| 💡 Business Logic    | Java (OOP principles)              |\n| 🧠 ML Integration     | TF-IDF + Cosine Similarity         |\n| 🔗 API Integration    | NewsAPI.org                        |\n| 🗄️ Database           | MySQL (via JDBC)                   |\n| 📁 File Handling      | CSV/JSON where needed              |\n| 🧪 Testing            | Manual Testing + Debugging         |\n\n---\n\n## ⚙️ Setup Instructions\n\n1. **Clone the repository**:\n   ```bash\n   git clone https://github.com/yourusername/headlines-plus.git\n   ```\n\n2. **Open Project** in IntelliJ IDEA (or any Java IDE with JavaFX support)\n\n3. **Set Up Database**:\n   - Create a MySQL database named: `news_appdb`\n   - Use the provided [DB dump](https://drive.google.com/drive/folders/1syL2YVZ4NqC_49GVhmQ_IMqM3PBWn40E?usp=sharing) to restore tables: `users`, `articles`, `user_preferences`, etc.\n\n4. **Insert Your API Key**:\n   - Get a free key from [NewsAPI.org](https://newsapi.org)\n   - Paste it in `APIService.java`\n\n5. **Run the Application**:\n   - Start from `Main.java`\n   - Explore features: Register → Browse → Interact → Get Recommendations!\n\n---\n\n## 📚 References\n\n- [TF-IDF Explained – GeeksforGeeks](https://www.geeksforgeeks.org/understanding-tf-idf-term-frequency-inverse-document-frequency/)\n- [Content-Based Recommendation – GFG](https://www.geeksforgeeks.org/ml-content-based-recommender-system/)\n- [Java MySQL Integration – YouTube](https://www.youtube.com/watch?v=T5Hey0e2Y_g)\n- [NewsAPI Documentation](https://newsapi.org)\n\n---\n\n## Issues\n\nFeel free to add any issues you find \n\n---\n## 👨‍🎓 Author\n\n**Deshan Senanayake**  \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd-senyaka%2FheadLines-plus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd-senyaka%2FheadLines-plus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd-senyaka%2FheadLines-plus/lists"}