A full-stack, real-time news platform featuring AI capabilities, user management, article chat, push notifications, and text-to-speech.
Modern news consumption is often isolated and passive. Readers skim articles but lack embedded community discussion, localized discovery features, or built-in accessibility tools like text-to-speech options for prolonged reading.
NewsSite Final Project is a full-stack platform that transforms a standard news website into an interactive community. Users can read articles, listen to them via Text-to-Speech (TTS), engage in real-time article-specific chat, and locate top stories using an interactive world map. In addition, it integrates extensive AI, Scraping, and Social capabilities to augment content automatically seamlessly.
| Feature | Description | Stack |
|---|---|---|
| User Authentication | Secure registration, login, and JWT-based session management | .NET 6, SQL Server, BCrypt |
| Profile AI Generation | AI-generated avatar images using HuggingFace before Cloudinary upload | HuggingFace, Cloudinary |
| News & Scraping | Fetch top headlines via NewsAPI & scrape article content directly | NewsAPI, HtmlAgilityPack |
| AI Summarization | On-demand text summarization of article contents via AI models | HuggingFace |
| Twitter Trends Map | Locate and map regional Twitter trending hashtags by country | JQVMap, Twitter API |
| Real-time Chat | Article-specific, persistent real-time chat rooms | Firebase Firestore |
| Text-to-Speech (TTS) | Multi-voice English support with pause/resume functionality | Web Speech API |
| Push Notifications | Real-time system notifications and alerts for active users | Firebase Cloud Messaging |
| Admin Dashboard | User management, user blocking, content reporting, and analytics | JS, Bootstrap, .NET |
| Theme Toggle | Automatic and manual dark/light mode switching | CSS, LocalStorage |
The application operates fundamentally split across three tiers: Edge (Frontend), API (Backend), and Data/External Services.
flowchart TD
Client["Client (HTML/JS/CSS + Bootstrap)"]
subgraph Frontend_App["Frontend Layer"]
Pages["Static Pages (index, article, admin)"]
SW["Service Worker (FCM)"]
end
subgraph Backend_App["API Layer (.NET 6)"]
API["ASP.NET Core Web API"]
BL["Business Logic Layer (BL)"]
DAL["Data Access Layer (DAL)"]
end
subgraph External["External Services"]
FirebaseFirestore["Firebase Firestore (Chat)"]
FCM["Firebase Cloud Messaging"]
Cloudinary["Cloudinary (Images)"]
HuggingFace["HuggingFace (AI image & summary)"]
NewsAPI["NewsAPI.org (Global News)"]
TwitterAPI["Twitter API (Trends)"]
end
subgraph Data_Stores["Data Stores"]
SQL["SQL Server"]
end
Client --> Pages
Pages <--> API
Pages <--> FirebaseFirestore
SW <--> FCM
API <--> BL
BL <--> DAL
DAL <--> SQL
API <--> Cloudinary
API <--> FCM
API <--> HuggingFace
API <--> NewsAPI
API <--> TwitterAPI
| Concern | Technology | Version |
|---|---|---|
| UI Framework | Bootstrap | 5.3.2 |
| JavaScript | Vanilla ES6+ | -- |
| DOM Manipulation | jQuery | 3.7.1 |
| Mapping UI | JQVMap | 1.5.1 |
| Real-Time SDK | Firebase SDK | 12.0.0 |
| Accessibility | Web Speech API | Native |
Following a vanilla separation of concerns pattern:
The server operates on .NET 6 via an N-Tier architecture (Controllers > BL > DAL):
| File | Concern | Action |
|---|---|---|
| \irebaseConfig.js\ | Client SDK | Add public API Key, Auth Domain & VAPID Key. |
| \ppsettings.json\ | Backend Services | Provide \DefaultConnection\ string for SQL. |
| \irebase-service-account.json| Server SDK | Required for Admin SDK capabilities (Notifications). | |
| \huggingface-key.txt\ | Web API | HuggingFace API key for AI generation & summarization. |
| \ | ||
| ewsapi-key.txt\ | Web API | NewsAPI key to fetch live articles. |
| \ witter-trends-key.txt\ | Web API | Twitter API credentials for geolocation hashtag feeds. |
A sample of core backend endpoints handling state operations.
| Method | Endpoint | Description |
|---|---|---|
| \POST\ | /api/Users/Register\ | Register a new user with secure password hashing |
| \POST\ | /api/Users/GenerateProfileImage| Generate avatar via HuggingFace & upload to Cloudinary | |
| \GET\ | /api/Articles/Summarize/{id}| Run HuggingFace text-summarization over article content | |
| \POST\ | /api/Notifications/SaveFCMToken| Register device for push alerts | |
| \GET\ | /api/Admin/GetAllUsers\ | Load system accounts (Admin only) |
| Layer | Implementation |
|---|---|
| Authentication | JSON Web Tokens (JWT) securing critical endpoints. |
| Authorization | Role-based verification enforcing User-vs-Admin capacities. |
| Data Querying | Strict raw Stored Procedure mappings averting traditional ORM SQL-injections. |
| Passwords | BCrypt hashing applied before any persistence operations. |
This project is an educational final project. All rights reserved.
JavaScript
41.3%
C#
32.3%
CSS
19.3%
TSQL
3.7%
HTML
3.3%
A full-stack, real-time news platform featuring AI capabilities, user management, article chat, push notifications, and text-to-speech.
Modern news consumption is often isolated and passive. Readers skim articles but lack embedded community discussion, localized discovery features, or built-in accessibility tools like text-to-speech options for prolonged reading.
NewsSite Final Project is a full-stack platform that transforms a standard news website into an interactive community. Users can read articles, listen to them via Text-to-Speech (TTS), engage in real-time article-specific chat, and locate top stories using an interactive world map. In addition, it integrates extensive AI, Scraping, and Social capabilities to augment content automatically seamlessly.
| Feature | Description | Stack |
|---|---|---|
| User Authentication | Secure registration, login, and JWT-based session management | .NET 6, SQL Server, BCrypt |
| Profile AI Generation | AI-generated avatar images using HuggingFace before Cloudinary upload | HuggingFace, Cloudinary |
| News & Scraping | Fetch top headlines via NewsAPI & scrape article content directly | NewsAPI, HtmlAgilityPack |
| AI Summarization | On-demand text summarization of article contents via AI models | HuggingFace |
| Twitter Trends Map | Locate and map regional Twitter trending hashtags by country | JQVMap, Twitter API |
| Real-time Chat | Article-specific, persistent real-time chat rooms | Firebase Firestore |
| Text-to-Speech (TTS) | Multi-voice English support with pause/resume functionality | Web Speech API |
| Push Notifications | Real-time system notifications and alerts for active users | Firebase Cloud Messaging |
| Admin Dashboard | User management, user blocking, content reporting, and analytics | JS, Bootstrap, .NET |
| Theme Toggle | Automatic and manual dark/light mode switching | CSS, LocalStorage |
The application operates fundamentally split across three tiers: Edge (Frontend), API (Backend), and Data/External Services.
flowchart TD
Client["Client (HTML/JS/CSS + Bootstrap)"]
subgraph Frontend_App["Frontend Layer"]
Pages["Static Pages (index, article, admin)"]
SW["Service Worker (FCM)"]
end
subgraph Backend_App["API Layer (.NET 6)"]
API["ASP.NET Core Web API"]
BL["Business Logic Layer (BL)"]
DAL["Data Access Layer (DAL)"]
end
subgraph External["External Services"]
FirebaseFirestore["Firebase Firestore (Chat)"]
FCM["Firebase Cloud Messaging"]
Cloudinary["Cloudinary (Images)"]
HuggingFace["HuggingFace (AI image & summary)"]
NewsAPI["NewsAPI.org (Global News)"]
TwitterAPI["Twitter API (Trends)"]
end
subgraph Data_Stores["Data Stores"]
SQL["SQL Server"]
end
Client --> Pages
Pages <--> API
Pages <--> FirebaseFirestore
SW <--> FCM
API <--> BL
BL <--> DAL
DAL <--> SQL
API <--> Cloudinary
API <--> FCM
API <--> HuggingFace
API <--> NewsAPI
API <--> TwitterAPI
| Concern | Technology | Version |
|---|---|---|
| UI Framework | Bootstrap | 5.3.2 |
| JavaScript | Vanilla ES6+ | -- |
| DOM Manipulation | jQuery | 3.7.1 |
| Mapping UI | JQVMap | 1.5.1 |
| Real-Time SDK | Firebase SDK | 12.0.0 |
| Accessibility | Web Speech API | Native |
Following a vanilla separation of concerns pattern:
The server operates on .NET 6 via an N-Tier architecture (Controllers > BL > DAL):
| File | Concern | Action |
|---|---|---|
| \irebaseConfig.js\ | Client SDK | Add public API Key, Auth Domain & VAPID Key. |
| \ppsettings.json\ | Backend Services | Provide \DefaultConnection\ string for SQL. |
| \irebase-service-account.json| Server SDK | Required for Admin SDK capabilities (Notifications). | |
| \huggingface-key.txt\ | Web API | HuggingFace API key for AI generation & summarization. |
| \ | ||
| ewsapi-key.txt\ | Web API | NewsAPI key to fetch live articles. |
| \ witter-trends-key.txt\ | Web API | Twitter API credentials for geolocation hashtag feeds. |
A sample of core backend endpoints handling state operations.
| Method | Endpoint | Description |
|---|---|---|
| \POST\ | /api/Users/Register\ | Register a new user with secure password hashing |
| \POST\ | /api/Users/GenerateProfileImage| Generate avatar via HuggingFace & upload to Cloudinary | |
| \GET\ | /api/Articles/Summarize/{id}| Run HuggingFace text-summarization over article content | |
| \POST\ | /api/Notifications/SaveFCMToken| Register device for push alerts | |
| \GET\ | /api/Admin/GetAllUsers\ | Load system accounts (Admin only) |
| Layer | Implementation |
|---|---|
| Authentication | JSON Web Tokens (JWT) securing critical endpoints. |
| Authorization | Role-based verification enforcing User-vs-Admin capacities. |
| Data Querying | Strict raw Stored Procedure mappings averting traditional ORM SQL-injections. |
| Passwords | BCrypt hashing applied before any persistence operations. |
This project is an educational final project. All rights reserved.
JavaScript
41.3%
C#
32.3%
CSS
19.3%
TSQL
3.7%
HTML
3.3%