{"id":19872388,"url":"https://github.com/codecraft26/kuvaka-tech","last_synced_at":"2026-06-08T01:01:37.182Z","repository":{"id":227706627,"uuid":"771114373","full_name":"codecraft26/Kuvaka-Tech","owner":"codecraft26","description":null,"archived":false,"fork":false,"pushed_at":"2024-03-17T18:11:40.000Z","size":633,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-01T00:58:38.099Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/codecraft26.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}},"created_at":"2024-03-12T17:57:43.000Z","updated_at":"2024-03-14T17:21:36.000Z","dependencies_parsed_at":"2024-03-17T19:38:14.227Z","dependency_job_id":null,"html_url":"https://github.com/codecraft26/Kuvaka-Tech","commit_stats":null,"previous_names":["codecraft26/kuvaka-tech"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/codecraft26/Kuvaka-Tech","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecraft26%2FKuvaka-Tech","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecraft26%2FKuvaka-Tech/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecraft26%2FKuvaka-Tech/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecraft26%2FKuvaka-Tech/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codecraft26","download_url":"https://codeload.github.com/codecraft26/Kuvaka-Tech/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecraft26%2FKuvaka-Tech/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34043822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"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":[],"created_at":"2024-11-12T16:15:28.817Z","updated_at":"2026-06-08T01:01:37.149Z","avatar_url":"https://github.com/codecraft26.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Real-Time Chat Application with Node.js (Backend) and React (Frontend)\n\nThis is a simple chat server and client application that allows users to communicate in real-time over the network using sockets. The server is implemented in Node.js, and the client interface is built with React. The application supports multiple client connections to the server simultaneously, enabling users to send and receive messages in a shared chatroom environment.\n\n\n\n\n## DeployMentLink\nThis is Deployed link of Project\n\nhttps://kuvaka-tech.onrender.com\n\n## Features\n\n####  Server:\n\n- Initialization: The server starts listening on a specified port for incoming connections.\n- Connection Handling: It handles multiple client connections concurrently using - asynchronous I/O.\n- Broadcast Messages: Messages received from one client are broadcasted to all connected clients, excluding the sender.\n- User Join/Leave Notification: Notifies other clients when a user joins or leaves the chatroom.\n\n#### Client:\n\n- Connection: The client connects to the server using its IP address and port.\n- User Interface: A simple text-based interface implemented with React, where users - can type messages and see messages from others in real-time.\n- Message Sending: Users can send messages to the server, which will then be broadcasted to other clients.\n- Receiving Messages: Messages from other users are displayed in real-time, along with information about who sent the message.\n- __ User Join/Leave Notification __ : Toast notifications display when a user joins or leaves the chatroom.\n\n\n\n## Technology Used\n\n #### Backend: \n Node.js with Socket.IO for handling real-time communication.\n #### Frontend: \nReact.js for building the user interface.\n### Socket Library: \nSocket.IO for bidirectional communication between server and client.\n## Application Architecture and Concurrency Handling\n\nThe application follows a client-server architecture where the server handles communication between multiple clients. Concurrency is managed using the async and await keywords in JavaScript. Asynchronous operations, such as handling client connections and broadcasting messages, are performed using async functions and await promises to ensure non-blocking execution.\n\n### Server Architecture:\n\n- The server listens for incoming connections on a specified port using asynchronous I/O.\n- Each client connection is managed using asynchronous functions, allowing the server to handle multiple connections concurrently.\n- Messages received from clients are broadcasted to all connected clients except the sender using asynchronous broadcasting functions.\n\n### Client Architecture:\n\n- The client interface is built using React, providing a responsive and interactive user interface.\n- User messages are sent to the server asynchronously, ensuring smooth communication without blocking the user interface.\n- Messages from other users are displayed in real-time, utilizing React's state management to update the UI efficiently.\n\n### Assumptions and Design Choices\n\n- Async/Await Architecture: The application uses async/await for concurrency handling to simplify code readability and manage asynchronous operations effectively.\n- Socket.IO Library: Socket.IO is chosen for bidirectional communication between server and client due to its ease of use and wide support for real-time applications.\n- React for Frontend: React is selected for building the client interface because of its component-based architecture, which facilitates building interactive and reusable UI components.\n## Run Locally\n\nClone the project\n\n```bash\n  https://github.com/codecraft26/Kuvaka-Tech\n```\n\n\n#### For Backend\n\nGo to the project directory\n\n```bash\n  cd backend\n```\n\nInstall dependencies\n\n```bash\n  npm install\n```\n\nStart the server\n\n```bash\n  npm start\n```\nit will run on Port http://localhost:4000\n\n#### For Backend\nGo to the project directory\n\n```bash\n  cd frontend\n```\n\nInstall dependencies\n\n```bash\n  npm install\n```\n\nStart the server\n\n```bash\n  npm start\n```\nit will run on Port http://localhost:3000 and \nset the backend url in .env file in project directory \n\n\n\n\n\n\n\n## Usage\n\n- Open the client application in your web browser by visiting http://localhost:4000.\n\n- Type your message in the input field at the bottom and press Enter to send.\n- You will see messages from other users displayed in real-time, along with notifications when users join or leave the chatroom.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodecraft26%2Fkuvaka-tech","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodecraft26%2Fkuvaka-tech","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodecraft26%2Fkuvaka-tech/lists"}