{"id":23676421,"url":"https://github.com/yasminmuntasern/say-hello","last_synced_at":"2026-04-05T21:04:17.807Z","repository":{"id":268514665,"uuid":"897944502","full_name":"YasminMuntaserN/say-hello","owner":"YasminMuntaserN","description":"💬 Real-Time Chat Application | A seamless communication platform enabling real-time private and group messaging with features like user authentication, profile management .It offers a user-friendly interface for chat organization, group creation, and efficient interaction in a fast and secure environment.","archived":false,"fork":false,"pushed_at":"2025-01-25T06:42:39.000Z","size":27702,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-13T11:48:12.198Z","etag":null,"topics":["api","asp-net-core","dotnet","fluentvalidation","react","react-hooks","react-query","react-router","realtime-chat","singlr","vite"],"latest_commit_sha":null,"homepage":"https://youtu.be/WRg_YS79C2s","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YasminMuntaserN.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-12-03T14:13:06.000Z","updated_at":"2025-05-21T05:44:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"1c43e6e1-c03c-4901-970d-c7816c1b6ebf","html_url":"https://github.com/YasminMuntaserN/say-hello","commit_stats":null,"previous_names":["yasminmuntasern/say-hello"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/YasminMuntaserN/say-hello","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YasminMuntaserN%2Fsay-hello","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YasminMuntaserN%2Fsay-hello/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YasminMuntaserN%2Fsay-hello/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YasminMuntaserN%2Fsay-hello/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YasminMuntaserN","download_url":"https://codeload.github.com/YasminMuntaserN/say-hello/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YasminMuntaserN%2Fsay-hello/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31449838,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T15:22:31.103Z","status":"ssl_error","status_checked_at":"2026-04-05T15:22:00.205Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","asp-net-core","dotnet","fluentvalidation","react","react-hooks","react-query","react-router","realtime-chat","singlr","vite"],"created_at":"2024-12-29T14:53:29.820Z","updated_at":"2026-04-05T21:04:17.789Z","avatar_url":"https://github.com/YasminMuntaserN.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Real-Time Chat Application\n\n## Overview\nThe **Real-Time Chat Application** is a cutting-edge, desktop-style web application designed to provide seamless and secure communication. Powered by a robust **.NET 8** backend and a **React Vite** frontend, the application leverages modern technologies to deliver a fast, reliable, and feature-rich user experience.  \nThis application supports real-time messaging for private and group conversations, enhanced by advanced features such as email-based authentication, user management, and instant notifications.\n\n---\n\n## Key Features\n\n### **Authentication and Account Management**\n- **Email-Based Registration:**\n  - Users register with their email, verify their accounts through a secure email link, and gain full access to the application.\n- **Password Recovery:**\n  - Includes a \"Forgot Password\" feature that sends a secure email link for resetting passwords.\n- **User Profile Management:**\n  - Edit profile details and update passwords.\n  - Block or archive other users for better organization.\n\n### **Real-Time Messaging**\n- **Private Chats:**\n  - Instantaneous one-on-one communication with real-time updates.\n- **Group Chats:**\n  - Dynamic group messaging where all participants receive messages instantly.\n\n### **Search and Interaction**\n- **User Search:**\n  - Find other users by name or email to initiate chats.\n- **Interactive Features:**\n  - Create groups for collaboration.\n  - Block or archive chats for streamlined user experience.\n\n## Security Features\n\u003cdiv\u003e\n \u003cimg src=\"https://imgur.com/kr7jzoF.jpg\" alt=\"Security\" /\u003e\n\u003c/div\u003e\n\n### **Authentication System**\n- **JWT-Based Authentication:**\n  - Secure access tokens with configurable expiration\n  - Refresh token mechanism for seamless session management\n  - Protection against token theft and replay attacks\n\n### **Authorization Framework**\n- **Role-Based Access Control (RBAC):**\n  - Predefined roles: Admin, GroupMember, User\n  - Each role has specific permissions and access levels\n  - Hierarchical permission structure\n\n- **Permission System:**\n  - **Admin Permissions:**\n    - Full system access\n    - User management\n    - Group management\n    - Message management\n    - System configuration\n  \n  - **GroupMember Permissions:**\n    - Send messages\n    - Manage group members\n    - Block users\n    - Archive chats\n    - View chat history\n  \n  - **User Permissions:**\n    - Basic messaging\n    - Profile management\n    - Chat archiving\n    - User blocking\n\n### **Security Measures**\n- **Token Management:**\n  - Access tokens expire after 15 minutes\n  - Refresh tokens valid for 7 days\n  - Automatic token refresh mechanism\n  - Secure token storage and transmission\n\n- **Session Security:**\n  - Automatic session termination on inactivity\n  - Concurrent session handling\n  - Secure session state management\n\n- **API Security:**\n  - Protected endpoints with JWT authentication\n  - CORS policy implementation\n  - Rate limiting for API calls\n  - Request validation and sanitization\n---\n\n## Technical Architecture\n\n### **Backend**\n- **Framework:** ASP.NET Core 8\n- - **Authentication \u0026 Authorization:**\n  - **JWT (JSON Web Tokens):** Secure token-based authentication\n  - **Refresh Token System:** Enhanced security with token rotation\n  - **Role-Based Access Control:** Granular permissions management\n  - **Permission-Based Authorization:** Fine-grained access control\n- **Database:** SQL Server, managed with Entity Framework Core\n- **Real-Time Communication:** \n  - Implemented using SignalR for two-way communication between server and clients.\n- **Validation and Mapping:**  \n  - **FluentValidation:** Ensures robust data validation for DTOs.  \n  - **Mapster:** Simplifies mapping between DTOs and entities.\n- **Email Services:**  \n  - Built-in email functionality for account verification and password recovery.\n\n### **Frontend**\n- **Framework:** React with Vite for fast builds and optimized performance.\n- **Styling:** Tailwind CSS for sleek and modern UI.\n- **Libraries and Tools:**  \n  - **React Query:** Efficient state management and seamless data fetching.  \n  - **React Router:** Handles navigation and routing between pages.  \n  - **React Hook Form:** Simplifies form validation and data handling.  \n  - **React Hot Toast:** Displays elegant toast notifications.  \n  - **SignalR Client:** Connects the React application to the backend for real-time updates.\n\n---\n\n## How SignalR Powers Real-Time Features\n**The SignalR library plays a critical role in enabling real-time communication for the chat application:**\n - **Persistent Connection:**\n   -  SignalR establishes a continuous connection between the server and clients, ensuring real-time delivery of messages.\n - **Message Flow:**\n   - When a user sends a message, it is transmitted to the SignalR Hub on the server.\n   - The hub processes the message and instantly broadcasts it to the intended recipient(s).\n   - All participants, whether in private or group chats, receive the message in real time.\n- **Group Chat Synchronization:**\n   - SignalR manages group communication, ensuring every group member receives messages simultaneously, maintaining consistent state across all devices.\n\n**By utilizing WebSockets, SignalR guarantees efficient and seamless communication, even under varying network conditions.**\n\n## Project Workflow\n\n### **Registration and Verification**\n- A user creates an account, triggering a verification email with a secure link.\n     \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://imgur.com/9Jf00pS.jpg\" alt=\"Registration Verification\" /\u003e\n  \u003c/div\u003e\n    \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://imgur.com/1xCNxeb.jpg\" alt=\"Registration Verification\" /\u003e\n  \u003c/div\u003e\n  \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://imgur.com/0SSEdVW.jpg\" alt=\"Registration Verification\" /\u003e\n  \u003c/div\u003e\n\n- Upon verification, the user gains access to their dashboard.  \n  \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://imgur.com/A1PQswv.jpg\" alt=\"User Dashboard\" /\u003e\n  \u003c/div\u003e\n\n---\n\n### **Real-Time Chat**\n- Users can search for other registered users and initiate chats.  \n  \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://imgur.com/6VNtS7f.jpg\" alt=\"Search Users\" /\u003e\n    \u003cimg src=\"https://imgur.com/hnE6xuA.jpg\" alt=\"Chat Example\" /\u003e\n  \u003c/div\u003e\n\n- Group creation enables collaborative conversations in real time.  \n  \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://imgur.com/8rTmw3y.jpg\" alt=\"Group Creation\" /\u003e\n    \u003cimg src=\"https://imgur.com/rDZ7OAt.jpg\" alt=\"Group Chat Example\" /\u003e\n  \u003c/div\u003e\n\n---\n\n### **Message Delivery**\n- All messages are stored in the SQL Server database for retrieval and archival.\n- SignalR ensures instantaneous delivery and updates for all connected users.\n\n---\n\n### **Account Management**\n- Users can block or archive conversations.\n- Profiles can be edited to update information or reset passwords.  \n  \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://imgur.com/dt7Qxt6.jpg\" alt=\"Edit Profile\" /\u003e\n    \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://imgur.com/hjlPpAx.jpg\" alt=\"Registration Verification\" /\u003e\n  \u003c/div\u003e\n    \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://imgur.com/W085fPA.jpg\" alt=\"Registration Verification\" /\u003e\n  \u003c/div\u003e\n    \u003cimg src=\"https://imgur.com/NEzABbg.jpg\" alt=\"Reset Password\" /\u003e\n  \u003c/div\u003e\n\n##  Live Demo\n\u003ca href=\"https://youtu.be/WRg_YS79C2s\" alt=\"demo\"\u003e🔗click me 😊!\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyasminmuntasern%2Fsay-hello","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyasminmuntasern%2Fsay-hello","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyasminmuntasern%2Fsay-hello/lists"}