{"id":21093250,"url":"https://github.com/unleashit/react-help-desk","last_synced_at":"2025-06-22T12:08:31.213Z","repository":{"id":42363035,"uuid":"74188806","full_name":"unleashit/React-Help-Desk","owner":"unleashit","description":"Help desk style live chat with administrative control panel in React, Node.js and Websockets","archived":false,"fork":false,"pushed_at":"2023-01-11T06:56:32.000Z","size":2610,"stargazers_count":49,"open_issues_count":8,"forks_count":12,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-16T14:44:05.778Z","etag":null,"topics":["helpdesk","live-chat","nodejs","react","websockets"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/unleashit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-19T05:19:30.000Z","updated_at":"2024-12-22T01:39:18.000Z","dependencies_parsed_at":"2023-02-09T02:00:32.647Z","dependency_job_id":null,"html_url":"https://github.com/unleashit/React-Help-Desk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/unleashit/React-Help-Desk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unleashit%2FReact-Help-Desk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unleashit%2FReact-Help-Desk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unleashit%2FReact-Help-Desk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unleashit%2FReact-Help-Desk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unleashit","download_url":"https://codeload.github.com/unleashit/React-Help-Desk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unleashit%2FReact-Help-Desk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261289418,"owners_count":23136070,"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":["helpdesk","live-chat","nodejs","react","websockets"],"created_at":"2024-11-19T22:01:13.961Z","updated_at":"2025-06-22T12:08:26.198Z","avatar_url":"https://github.com/unleashit.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# React Help Desk\nOne-to-many live chat app with a React/Redux front end and Node.js back end. Uses socket.io and Sequelize to sync chats on a set interval to a database. The backend has a control panel that lets you manage multiple chats.\n\n*NOTE: this is a 4 year old project which will require Node version 8.x to install/build. It should still work, but I recommend a) updating all deps and b) removing the in-memory caching process since it won't scale well. Hopefully I will at some point have time to work on this (and turn it an NPM package), but until then any pull requests are appreciated!*\n\n![Help Desk](/../screenshots/react-help-desk-combined.png?raw=true \"Optional Title\")\n\n### Features\n\n* Realtime help desk style chat for one admin to one or more users\n* React/Redux client, Node/Express server\n* Control panel to administer multiple chats, archive and delete\n* Indicates to the user if admin is online, and if not provides a contact form instead of chat\n* Typing indicators and notification sounds for both user and admin \n* Option to send an SMS to the admin on new chat registration\n* Batched database persistence on a set interval for better I/O performance\n* Socket.io and Passport authentication and sessions for the admin\n* Works with Mysql or Postgresql, but based on Sequelize so can easily be adapted to other SQL databases\n* Easy to integrate with an existing site\n\n### Demo\nhttps://jasongallagher.org\n\n### Getting Started\n\nRun `npm install` then `npm run build` to compile assets into the dist folder. Next create a database and config files (see below). After that you can run `npm start` to launch a development server, or `npm run prod` to run the build process and start the server in production mode. By default the server runs on port 3100 in development mode, so you could go to `http://localhost:3100` to view the app.\n\n### Database\nBefore you run the project you need to create a database and setup the configuration files. Rename DBconfig-sample.json to DBconfig.json in the root and modify as needed. You can refer to the Sequelize [documentation](http://docs.sequelizejs.com/en/v3/).\n\nSessions are pre-configured for Postgres or Mysql, but it should work with any Database that Sequelize supports (see their [documentation](http://docs.sequelizejs.com/en/v3/)). If using Postgres, you will need to change the `_insert_chat_records` query because sequelize doesn't support an `ON DUPLICATE KEY UPDATE` equivalent for PG (you could change it to a raw SQL query if you like). You'll also need to add the sessions table to your DB: `psql mydatabase \u003c node_modules/connect-pg-simple/table.sql` since `connect-pg-simple` requires that the table already exists.\n\nIf using a database other than Mysql or Postgresql, you'll need to add the appropriate Express session storage and configure it in `/server/services/sessions-config.js`.\n\n### Other Config\nRename APPconfig-sample.js to APPconfig.js and adjust as desired.\n\nThe first time you run the project via `npm start` or `npm run prod`, if all goes well, it will add the tables to your database and you'll be good to go.\n\nNote that because I started this on a non-React project, the control panel front end is plain javascript. On some future rainy day, I plan on refactoring it so all clientside JS is in React.\n\n### Administration and Login\n\nTo access the admin to manage chats, you need to first add a user and then elevate its access level. To create a user, just go to `/signup` and create it. There is no GUI to elevate the user, so go the `Users` table in the DB and change the access level to 3: `UPDATE \"Users\" SET \"useraccess\" = 3 WHERE id = 1;`\n\nNow you can login at `/login` (or the link in the header) with your user and access the admin chat panel.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funleashit%2Freact-help-desk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funleashit%2Freact-help-desk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funleashit%2Freact-help-desk/lists"}