{"id":19278961,"url":"https://github.com/xoriantopensource/chateliteservice","last_synced_at":"2026-04-13T04:08:56.948Z","repository":{"id":93222615,"uuid":"139674444","full_name":"XoriantOpenSource/ChatEliteService","owner":"XoriantOpenSource","description":"Chatting Application service repository by Xoriant Corporation","archived":false,"fork":false,"pushed_at":"2018-07-06T07:22:15.000Z","size":198,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-05T16:22:50.147Z","etag":null,"topics":["chat","chat-application","chat-server","expressjs","mongodb","mongoose","nodejs","socket-io"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/XoriantOpenSource.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2018-07-04T05:52:19.000Z","updated_at":"2019-01-22T23:34:20.000Z","dependencies_parsed_at":"2023-04-01T12:20:01.379Z","dependency_job_id":null,"html_url":"https://github.com/XoriantOpenSource/ChatEliteService","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XoriantOpenSource%2FChatEliteService","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XoriantOpenSource%2FChatEliteService/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XoriantOpenSource%2FChatEliteService/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XoriantOpenSource%2FChatEliteService/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XoriantOpenSource","download_url":"https://codeload.github.com/XoriantOpenSource/ChatEliteService/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240385202,"owners_count":19792980,"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","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":["chat","chat-application","chat-server","expressjs","mongodb","mongoose","nodejs","socket-io"],"created_at":"2024-11-09T21:12:48.733Z","updated_at":"2026-04-13T04:08:51.923Z","avatar_url":"https://github.com/XoriantOpenSource.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"##\tAbout ChatElite\n\nChatElite is a web application that provides peer-to-peer and group chat. ChatElite is developed using Node.js and Mongo DB for database. ChatElite can be used as pluggable chat tool by using collapsed mode. This mode can be used to integrate ChatElite with another web-based application.\n\n**ChatElite** lets users send messages and files to one another. Besides, users can create groups and also add and remove users from their list. Some of the important features of ChatElite are as follows:\n\n*\tTransfer chat: Users can transfer the entire one-on-one or group chat/conversation to another person or via email.\n*\tConvert chat into group for peer-to-peer chats and for group chat\n*\tAdd users to group: Once a group is formed, user can add new users to the group.\n*\tRemove users from group: From a group, user can remove certain users.\n*\tLeave group: If user is added to certain ChatElite group and doesn’t wish to be a part of it anymore, he can leave the group. \n*\tSearch for a keyword in chat: User can search for a keyword within a chat.\n*\tDownload chat: User can download the chat and keep a copy on the PC.\n*\tMarking a message as favourite (or as un-favourite if marked as favourite previously)\n*\tDeleting messages\n*\tReplying to messages\n*\tRead receipts: Users can view who has read their messages.\n\n**A user-friendly chat application:**\n\nOne of the most important features that ChatElite holds, is its easy use. Here are some more features that make the ChatElite app user-friendly:\n\n*\tUsers can find the recent chats they were involved in, groups that they were part of and the users added to their list. \n*\tUsers can view particular chat on clicking on any of the groups or recent chats. \n*\tFor a peer-to-peer chat, a user can find the groups that one has in common with the particular user and the favourite messages in that chat. \n*\tFor a group, a user can see all the group members’ information and remove any member if the group has been created by the user himself. \n*\tOne can also view the shared links in the group chat and the favourite messages in that group chat. \n\n\n## Prerequisites\n\n*\t**Git**\n    * **On Windows**:\n\t    * Download the latest [Git for Windows installer](https://gitforwindows.org/).\n        * When you have successfully started the installer, you will see the Git Setup Wizard screen. Follow the Next and Finish prompts to complete the installation.\n        * Open a Command Prompt (or Git Bash if during installation you elected not to use Git from the Windows Command Prompt).\n        * Run the following commands to configure your Git username and email using the following commands. \n\n        ```\n            $ git config --global user.name “user name”\n            $ git config --global user.email “email id”\n        ```\n\n    * **On Linux/Mac**: To install on a Linux or a Mac, follow [these](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) instructions.\n\n*\t**Node**: Follow [these](https://nodejs.org/en/download/) instructions to download and install Node.js according to your operating system.\n\n*\t**Mongo**: Follow [these](https://docs.mongodb.com/manual/installation/#mongodb-community-edition) instructions to download and install Mongo DB according to your operating system and requirement.\n\n*\t**Visual Studio Code**: It is recommended. However, you can use any other editor. Follow [these](https://code.visualstudio.com/download) instructions to install Visual Studio Code.\n\n## Getting Started\n\n* Follow the instructions from [**ChatEliteUi repository**](https://github.com/XoriantOpenSource/ChatEliteUi#execution-on-localhost). \n\n##\tSystem Design\n\n###\tService repository structure\n\n![Repository structure](./serviceStructure.png)\n\nThis repository contains the server-side code which includes business logic, database queries, Socket APIs, REST APIs, API call execution methods.\nThe documentation is available [here](https://xoriantopensource.github.io/ChatEliteService/).\n \n\n*\tThe **APIs folder** consists of v1 folder which contains all the REST APIs.\n    *\t**discussionApi**: This includes all the APIs related to a conversation like file upload-download, download chat and get read messages.\n    *\t**userApi**: This includes all the APIs like authenticate, re-join and fetch user data.\n\n*\tThe **App folder** contains the bundled UI files. These UI files are built by Webpack.\n\n*\tThe **Constants** folder has enums which contain the constants used in the project.\n\n*\tThe **Downloads** folder stores all the group wise csv files of the chats.\n\n*\tThe **realTime folder** contains all the Socket APIs. \n    *\t**Conversation**: It has all conversation related socket APIs like send message, last message in conversation and conversation history\n    *\t**History**: It has Socket APIs related to history of recent chats and groups like add user and transfer user. \n    *\t**User**: It has Socket APIs related to user like join user, leave, disconnect socket and user status.\n    *\t**Ticker**: It has Socket APIs related to ticker like add user to ticker and display ticker users.\n\n*\t**realTimeFilters**: As the server is a stateless server, every time for every request, the user is needed to be authorized, also the version is needed to be checked before executing socket request. Whenever, user becomes active from inactive state, server informs.\n\n*\t**Repeaters**: It contains all the schedulers required. \n    *\t**emailRepeaters**: It periodically checks user status and updates the offline user’s list.\n    *\t**unreadMessagesRepeaters**: This scheduler runs every 10 seconds to check for unread messages.\n    *\t**userCleanupRepeaters**: It checks for socket connection status and removes the socket that is disconnected.\n\n*\tThe **Schema folder** consists of the database schemas. \n    *\t**appConfig**: It has the provision to make features available grade wise.\n    *\t**Chat**: It has schema for a single chat group.\n    *\t**Device**: It has schema for devices and platforms that ChatElite is used from.\n    *\t**Documents**: It has schema of documents uploaded.\n    *\t**Users**: It has schema for user data.\n\n*\tThe **Services folder** consist all the common functionalities used throughout the project.\n    *\t**apiService**: It has methods for accessing external REST APIs.\n    *\t**commonService**: It has all the common/reusable methods needed throughout the project.\n    *\t**getService**: It creates instances for various service classes. \n    *\t**mailingService**: It has logic for sending emails to offline users.\n    *\t**notificationService**: It has logic for push notifications for ChatElite when users are away. \n    *\t**socketService**: It contains logic for syncing multiple sockets of single users. This service has two methods:\n*\t**emitToSelf** sends data to all sockets that are active for a particular user. \n*\t**groupBroadcast** sends data to group-members that are not joined to the group.\n\n*\tThe **SSL folder** stores the key and certificate for secure http (https).\n\n*\tThe **Uploads folder** store the uploaded files.\n\n*\tThe **app.ts folder** consist of the configurations files for the project.\n\n##\tContribution Guidelines\n\nSee the contributing guidelines [here](./CONTRIBUTING.md).\n\n## Licensing\n\nLicensed under the [MIT License](./LICENSE).\n\n## Documentation\n\nThe documentation for the t-webapi framework methods is available [here](https://chatelite.xoriant.com:5465).\n\n## Contributors\n\nThanks goes to these wonderful folks for contribution :\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore --\u003e\n| [\u003cimg src=\"https://avatars3.githubusercontent.com/u/3788500?s=460\u0026v=4\" width=\"75px;\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePranay Dutta\u003c/b\u003e\u003c/sub\u003e](https://github.com/pranaydutta89)\u003cbr /\u003e [💻](#code-pranaydutta \"Code\")  [🤔](#ideas-pranaydutta \"Ideas, Planning, \u0026 Feedback\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/11675384?s=460\u0026v=4\" width=\"75px;\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAbhijeet sonaje\u003c/b\u003e\u003c/sub\u003e](https://github.com/abhijeet2015)\u003cbr /\u003e [💻](#code-abhijeetsonaje \"Code\")  [🤔](#ideas-abhijeetsonaje \"Ideas, Planning, \u0026 Feedback\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/26872595?s=460\u0026v=4\" width=\"75px;\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNayan Kamble\u003c/b\u003e\u003c/sub\u003e](https://github.com/nayankamble)\u003cbr /\u003e [💻](#code-nayankamble \"Code\") [📖](#docs-nayankamble \"Documentation\") | [\u003cimg src=\"https://avatars3.githubusercontent.com/u/38063467?s=460\u0026v=4\" width=\"75px;\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRavichandra Bhanage\u003c/b\u003e\u003c/sub\u003e](https://github.com/bhanage-ravic)\u003cbr /\u003e [💻](#code-ravichandrabhanage \"Code\") | [\u003cimg src=\"https://avatars1.githubusercontent.com/u/6103654?s=460\u0026v=4\" width=\"75px;\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eShailesh Pardeshi\u003c/b\u003e\u003c/sub\u003e](https://github.com/shailesh757)\u003cbr /\u003e[🤔](#ideas-shaileshpardeshi \"Ideas, Planning, \u0026 Feedback\") |\n| :---: | :---: | :---: | :---: | :---: |\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoriantopensource%2Fchateliteservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxoriantopensource%2Fchateliteservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoriantopensource%2Fchateliteservice/lists"}