{"id":22678410,"url":"https://github.com/web2solutions/dhtmlxdesktopchat","last_synced_at":"2025-07-30T09:07:54.211Z","repository":{"id":149299542,"uuid":"45068899","full_name":"web2solutions/dhtmlxDesktopChat","owner":"web2solutions","description":"desktop version of dhtmlxNodeChat","archived":false,"fork":false,"pushed_at":"2015-10-27T20:58:19.000Z","size":2276,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-12-07T09:16:57.907Z","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/web2solutions.png","metadata":{"files":{"readme":"README.html","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}},"created_at":"2015-10-27T20:44:48.000Z","updated_at":"2018-02-05T17:05:39.000Z","dependencies_parsed_at":"2023-04-11T06:08:36.816Z","dependency_job_id":null,"html_url":"https://github.com/web2solutions/dhtmlxDesktopChat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/web2solutions/dhtmlxDesktopChat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web2solutions%2FdhtmlxDesktopChat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web2solutions%2FdhtmlxDesktopChat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web2solutions%2FdhtmlxDesktopChat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web2solutions%2FdhtmlxDesktopChat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/web2solutions","download_url":"https://codeload.github.com/web2solutions/dhtmlxDesktopChat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web2solutions%2FdhtmlxDesktopChat/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267843005,"owners_count":24153134,"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","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"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-12-09T18:15:11.982Z","updated_at":"2025-07-30T09:07:54.186Z","avatar_url":"https://github.com/web2solutions.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!DOCTYPE html\u003e\u003chtml\u003e\u003chead\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cstyle\u003ebody {\n  width: 45em;\n  border: 1px solid #ddd;\n  outline: 1300px solid #fff;\n  margin: 16px auto;\n}\n\nbody .markdown-body\n{\n  padding: 30px;\n}\n\n@font-face {\n  font-family: octicons-anchor;\n  src: url(data:font/woff;charset=utf-8;base64,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) format('woff');\n}\n\n.markdown-body {\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n  color: #333;\n  overflow: hidden;\n  font-family: \"Helvetica Neue\", Helvetica, \"Segoe UI\", Arial, freesans, sans-serif;\n  font-size: 16px;\n  line-height: 1.6;\n  word-wrap: break-word;\n}\n\n.markdown-body a {\n  background: transparent;\n}\n\n.markdown-body a:active,\n.markdown-body a:hover {\n  outline: 0;\n}\n\n.markdown-body strong {\n  font-weight: bold;\n}\n\n.markdown-body h1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n.markdown-body img {\n  border: 0;\n}\n\n.markdown-body hr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\n\n.markdown-body pre {\n  overflow: auto;\n}\n\n.markdown-body code,\n.markdown-body kbd,\n.markdown-body pre {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n.markdown-body input {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\n\n.markdown-body html input[disabled] {\n  cursor: default;\n}\n\n.markdown-body input {\n  line-height: normal;\n}\n\n.markdown-body input[type=\"checkbox\"] {\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  padding: 0;\n}\n\n.markdown-body table {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\n.markdown-body td,\n.markdown-body th {\n  padding: 0;\n}\n\n.markdown-body * {\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\n.markdown-body input {\n  font: 13px/1.4 Helvetica, arial, freesans, clean, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n}\n\n.markdown-body a {\n  color: #4183c4;\n  text-decoration: none;\n}\n\n.markdown-body a:hover,\n.markdown-body a:focus,\n.markdown-body a:active {\n  text-decoration: underline;\n}\n\n.markdown-body hr {\n  height: 0;\n  margin: 15px 0;\n  overflow: hidden;\n  background: transparent;\n  border: 0;\n  border-bottom: 1px solid #ddd;\n}\n\n.markdown-body hr:before {\n  display: table;\n  content: \"\";\n}\n\n.markdown-body hr:after {\n  display: table;\n  clear: both;\n  content: \"\";\n}\n\n.markdown-body h1,\n.markdown-body h2,\n.markdown-body h3,\n.markdown-body h4,\n.markdown-body h5,\n.markdown-body h6 {\n  margin-top: 15px;\n  margin-bottom: 15px;\n  line-height: 1.1;\n}\n\n.markdown-body h1 {\n  font-size: 30px;\n}\n\n.markdown-body h2 {\n  font-size: 21px;\n}\n\n.markdown-body h3 {\n  font-size: 16px;\n}\n\n.markdown-body h4 {\n  font-size: 14px;\n}\n\n.markdown-body h5 {\n  font-size: 12px;\n}\n\n.markdown-body h6 {\n  font-size: 11px;\n}\n\n.markdown-body blockquote {\n  margin: 0;\n}\n\n.markdown-body ul,\n.markdown-body ol {\n  padding: 0;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n.markdown-body ol ol,\n.markdown-body ul ol {\n  list-style-type: lower-roman;\n}\n\n.markdown-body ul ul ol,\n.markdown-body ul ol ol,\n.markdown-body ol ul ol,\n.markdown-body ol ol ol {\n  list-style-type: lower-alpha;\n}\n\n.markdown-body dd {\n  margin-left: 0;\n}\n\n.markdown-body code {\n  font: 12px Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n}\n\n.markdown-body pre {\n  margin-top: 0;\n  margin-bottom: 0;\n  font: 12px Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n}\n\n.markdown-body .octicon {\n  font: normal normal 16px octicons-anchor;\n  line-height: 1;\n  display: inline-block;\n  text-decoration: none;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\n.markdown-body .octicon-link:before {\n  content: '\\f05c';\n}\n\n.markdown-body\u003e*:first-child {\n  margin-top: 0 !important;\n}\n\n.markdown-body\u003e*:last-child {\n  margin-bottom: 0 !important;\n}\n\n.markdown-body .anchor {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  display: block;\n  padding-right: 6px;\n  padding-left: 30px;\n  margin-left: -30px;\n}\n\n.markdown-body .anchor:focus {\n  outline: none;\n}\n\n.markdown-body h1,\n.markdown-body h2,\n.markdown-body h3,\n.markdown-body h4,\n.markdown-body h5,\n.markdown-body h6 {\n  position: relative;\n  margin-top: 1em;\n  margin-bottom: 16px;\n  font-weight: bold;\n  line-height: 1.4;\n}\n\n.markdown-body h1 .octicon-link,\n.markdown-body h2 .octicon-link,\n.markdown-body h3 .octicon-link,\n.markdown-body h4 .octicon-link,\n.markdown-body h5 .octicon-link,\n.markdown-body h6 .octicon-link {\n  display: none;\n  color: #000;\n  vertical-align: middle;\n}\n\n.markdown-body h1:hover .anchor,\n.markdown-body h2:hover .anchor,\n.markdown-body h3:hover .anchor,\n.markdown-body h4:hover .anchor,\n.markdown-body h5:hover .anchor,\n.markdown-body h6:hover .anchor {\n  padding-left: 8px;\n  margin-left: -30px;\n  line-height: 1;\n  text-decoration: none;\n}\n\n.markdown-body h1:hover .anchor .octicon-link,\n.markdown-body h2:hover .anchor .octicon-link,\n.markdown-body h3:hover .anchor .octicon-link,\n.markdown-body h4:hover .anchor .octicon-link,\n.markdown-body h5:hover .anchor .octicon-link,\n.markdown-body h6:hover .anchor .octicon-link {\n  display: inline-block;\n}\n\n.markdown-body h1 {\n  padding-bottom: 0.3em;\n  font-size: 2.25em;\n  line-height: 1.2;\n  border-bottom: 1px solid #eee;\n}\n\n.markdown-body h2 {\n  padding-bottom: 0.3em;\n  font-size: 1.75em;\n  line-height: 1.225;\n  border-bottom: 1px solid #eee;\n}\n\n.markdown-body h3 {\n  font-size: 1.5em;\n  line-height: 1.43;\n}\n\n.markdown-body h4 {\n  font-size: 1.25em;\n}\n\n.markdown-body h5 {\n  font-size: 1em;\n}\n\n.markdown-body h6 {\n  font-size: 1em;\n  color: #777;\n}\n\n.markdown-body p,\n.markdown-body blockquote,\n.markdown-body ul,\n.markdown-body ol,\n.markdown-body dl,\n.markdown-body table,\n.markdown-body pre {\n  margin-top: 0;\n  margin-bottom: 16px;\n}\n\n.markdown-body hr {\n  height: 4px;\n  padding: 0;\n  margin: 16px 0;\n  background-color: #e7e7e7;\n  border: 0 none;\n}\n\n.markdown-body ul,\n.markdown-body ol {\n  padding-left: 2em;\n}\n\n.markdown-body ul ul,\n.markdown-body ul ol,\n.markdown-body ol ol,\n.markdown-body ol ul {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n.markdown-body li\u003ep {\n  margin-top: 16px;\n}\n\n.markdown-body dl {\n  padding: 0;\n}\n\n.markdown-body dl dt {\n  padding: 0;\n  margin-top: 16px;\n  font-size: 1em;\n  font-style: italic;\n  font-weight: bold;\n}\n\n.markdown-body dl dd {\n  padding: 0 16px;\n  margin-bottom: 16px;\n}\n\n.markdown-body blockquote {\n  padding: 0 15px;\n  color: #777;\n  border-left: 4px solid #ddd;\n}\n\n.markdown-body blockquote\u003e:first-child {\n  margin-top: 0;\n}\n\n.markdown-body blockquote\u003e:last-child {\n  margin-bottom: 0;\n}\n\n.markdown-body table {\n  display: block;\n  width: 100%;\n  overflow: auto;\n  word-break: normal;\n  word-break: keep-all;\n}\n\n.markdown-body table th {\n  font-weight: bold;\n}\n\n.markdown-body table th,\n.markdown-body table td {\n  padding: 6px 13px;\n  border: 1px solid #ddd;\n}\n\n.markdown-body table tr {\n  background-color: #fff;\n  border-top: 1px solid #ccc;\n}\n\n.markdown-body table tr:nth-child(2n) {\n  background-color: #f8f8f8;\n}\n\n.markdown-body img {\n  max-width: 100%;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\n.markdown-body code {\n  padding: 0;\n  padding-top: 0.2em;\n  padding-bottom: 0.2em;\n  margin: 0;\n  font-size: 85%;\n  background-color: rgba(0,0,0,0.04);\n  border-radius: 3px;\n}\n\n.markdown-body code:before,\n.markdown-body code:after {\n  letter-spacing: -0.2em;\n  content: \"\\00a0\";\n}\n\n.markdown-body pre\u003ecode {\n  padding: 0;\n  margin: 0;\n  font-size: 100%;\n  word-break: normal;\n  white-space: pre;\n  background: transparent;\n  border: 0;\n}\n\n.markdown-body .highlight {\n  margin-bottom: 16px;\n}\n\n.markdown-body .highlight pre,\n.markdown-body pre {\n  padding: 16px;\n  overflow: auto;\n  font-size: 85%;\n  line-height: 1.45;\n  background-color: #f7f7f7;\n  border-radius: 3px;\n}\n\n.markdown-body .highlight pre {\n  margin-bottom: 0;\n  word-break: normal;\n}\n\n.markdown-body pre {\n  word-wrap: normal;\n}\n\n.markdown-body pre code {\n  display: inline;\n  max-width: initial;\n  padding: 0;\n  margin: 0;\n  overflow: initial;\n  line-height: inherit;\n  word-wrap: normal;\n  background-color: transparent;\n  border: 0;\n}\n\n.markdown-body pre code:before,\n.markdown-body pre code:after {\n  content: normal;\n}\n\n.markdown-body .highlight {\n  background: #fff;\n}\n\n.markdown-body .highlight .h {\n  color: #333;\n  font-style: normal;\n  font-weight: normal;\n}\n\n.markdown-body .highlight .mf,\n.markdown-body .highlight .mh,\n.markdown-body .highlight .mi,\n.markdown-body .highlight .mo,\n.markdown-body .highlight .il,\n.markdown-body .highlight .m {\n  color: #945277;\n}\n\n.markdown-body .highlight .s,\n.markdown-body .highlight .sb,\n.markdown-body .highlight .sc,\n.markdown-body .highlight .sd,\n.markdown-body .highlight .s2,\n.markdown-body .highlight .se,\n.markdown-body .highlight .sh,\n.markdown-body .highlight .si,\n.markdown-body .highlight .sx,\n.markdown-body .highlight .s1 {\n  color: #df5000;\n}\n\n.markdown-body .highlight .kc,\n.markdown-body .highlight .kd,\n.markdown-body .highlight .kn,\n.markdown-body .highlight .kp,\n.markdown-body .highlight .kr,\n.markdown-body .highlight .kt,\n.markdown-body .highlight .k,\n.markdown-body .highlight .o {\n  font-weight: bold;\n}\n\n.markdown-body .highlight .kt {\n  color: #458;\n}\n\n.markdown-body .highlight .c,\n.markdown-body .highlight .cm,\n.markdown-body .highlight .c1 {\n  color: #998;\n  font-style: italic;\n}\n\n.markdown-body .highlight .cp,\n.markdown-body .highlight .cs,\n.markdown-body .highlight .cp .h {\n  color: #999;\n  font-weight: bold;\n}\n\n.markdown-body .highlight .cs {\n  font-style: italic;\n}\n\n.markdown-body .highlight .n {\n  color: #333;\n}\n\n.markdown-body .highlight .na,\n.markdown-body .highlight .nv,\n.markdown-body .highlight .vc,\n.markdown-body .highlight .vg,\n.markdown-body .highlight .vi {\n  color: #008080;\n}\n\n.markdown-body .highlight .nb {\n  color: #0086B3;\n}\n\n.markdown-body .highlight .nc {\n  color: #458;\n  font-weight: bold;\n}\n\n.markdown-body .highlight .no {\n  color: #094e99;\n}\n\n.markdown-body .highlight .ni {\n  color: #800080;\n}\n\n.markdown-body .highlight .ne {\n  color: #990000;\n  font-weight: bold;\n}\n\n.markdown-body .highlight .nf {\n  color: #945277;\n  font-weight: bold;\n}\n\n.markdown-body .highlight .nn {\n  color: #555;\n}\n\n.markdown-body .highlight .nt {\n  color: #000080;\n}\n\n.markdown-body .highlight .err {\n  color: #a61717;\n  background-color: #e3d2d2;\n}\n\n.markdown-body .highlight .gd {\n  color: #000;\n  background-color: #fdd;\n}\n\n.markdown-body .highlight .gd .x {\n  color: #000;\n  background-color: #faa;\n}\n\n.markdown-body .highlight .ge {\n  font-style: italic;\n}\n\n.markdown-body .highlight .gr {\n  color: #aa0000;\n}\n\n.markdown-body .highlight .gh {\n  color: #999;\n}\n\n.markdown-body .highlight .gi {\n  color: #000;\n  background-color: #dfd;\n}\n\n.markdown-body .highlight .gi .x {\n  color: #000;\n  background-color: #afa;\n}\n\n.markdown-body .highlight .go {\n  color: #888;\n}\n\n.markdown-body .highlight .gp {\n  color: #555;\n}\n\n.markdown-body .highlight .gs {\n  font-weight: bold;\n}\n\n.markdown-body .highlight .gu {\n  color: #800080;\n  font-weight: bold;\n}\n\n.markdown-body .highlight .gt {\n  color: #aa0000;\n}\n\n.markdown-body .highlight .ow {\n  font-weight: bold;\n}\n\n.markdown-body .highlight .w {\n  color: #bbb;\n}\n\n.markdown-body .highlight .sr {\n  color: #017936;\n}\n\n.markdown-body .highlight .ss {\n  color: #8b467f;\n}\n\n.markdown-body .highlight .bp {\n  color: #999;\n}\n\n.markdown-body .highlight .gc {\n  color: #999;\n  background-color: #EAF2F5;\n}\n\n.markdown-body kbd {\n  background-color: #e7e7e7;\n  background-image: -webkit-linear-gradient(#fefefe, #e7e7e7);\n  background-image: linear-gradient(#fefefe, #e7e7e7);\n  background-repeat: repeat-x;\n  display: inline-block;\n  padding: 3px 5px;\n  font: 11px Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  line-height: 10px;\n  color: #000;\n  border: 1px solid #cfcfcf;\n  border-radius: 2px;\n}\n\n.markdown-body .highlight .pl-coc,\n.markdown-body .highlight .pl-entm,\n.markdown-body .highlight .pl-eoa,\n.markdown-body .highlight .pl-mai .pl-sf,\n.markdown-body .highlight .pl-pdv,\n.markdown-body .highlight .pl-sc,\n.markdown-body .highlight .pl-sr,\n.markdown-body .highlight .pl-v,\n.markdown-body .highlight .pl-vpf {\n  color: #0086b3;\n}\n\n.markdown-body .highlight .pl-eoac,\n.markdown-body .highlight .pl-mdht,\n.markdown-body .highlight .pl-mi1,\n.markdown-body .highlight .pl-mri,\n.markdown-body .highlight .pl-va,\n.markdown-body .highlight .pl-vpu {\n  color: #008080;\n}\n\n.markdown-body .highlight .pl-c,\n.markdown-body .highlight .pl-pdc {\n  color: #b4b7b4;\n  font-style: italic;\n}\n\n.markdown-body .highlight .pl-k,\n.markdown-body .highlight .pl-ko,\n.markdown-body .highlight .pl-kolp,\n.markdown-body .highlight .pl-mc,\n.markdown-body .highlight .pl-mr,\n.markdown-body .highlight .pl-ms,\n.markdown-body .highlight .pl-s,\n.markdown-body .highlight .pl-sok,\n.markdown-body .highlight .pl-st {\n  color: #6e5494;\n}\n\n.markdown-body .highlight .pl-ef,\n.markdown-body .highlight .pl-enf,\n.markdown-body .highlight .pl-enm,\n.markdown-body .highlight .pl-entc,\n.markdown-body .highlight .pl-eoi,\n.markdown-body .highlight .pl-sf,\n.markdown-body .highlight .pl-smc {\n  color: #d12089;\n}\n\n.markdown-body .highlight .pl-ens,\n.markdown-body .highlight .pl-eoai,\n.markdown-body .highlight .pl-kos,\n.markdown-body .highlight .pl-mh .pl-pdh,\n.markdown-body .highlight .pl-mp,\n.markdown-body .highlight .pl-pde,\n.markdown-body .highlight .pl-stp {\n  color: #458;\n}\n\n.markdown-body .highlight .pl-enti {\n  color: #d12089;\n  font-weight: bold;\n}\n\n.markdown-body .highlight .pl-cce,\n.markdown-body .highlight .pl-enc,\n.markdown-body .highlight .pl-kou,\n.markdown-body .highlight .pl-mq {\n  color: #f93;\n}\n\n.markdown-body .highlight .pl-mp1 .pl-sf {\n  color: #458;\n  font-weight: bold;\n}\n\n.markdown-body .highlight .pl-cos,\n.markdown-body .highlight .pl-ent,\n.markdown-body .highlight .pl-md,\n.markdown-body .highlight .pl-mdhf,\n.markdown-body .highlight .pl-ml,\n.markdown-body .highlight .pl-pdc1,\n.markdown-body .highlight .pl-pds,\n.markdown-body .highlight .pl-s1,\n.markdown-body .highlight .pl-scp,\n.markdown-body .highlight .pl-sol {\n  color: #df5000;\n}\n\n.markdown-body .highlight .pl-c1,\n.markdown-body .highlight .pl-cn,\n.markdown-body .highlight .pl-pse,\n.markdown-body .highlight .pl-pse .pl-s2,\n.markdown-body .highlight .pl-vi {\n  color: #a31515;\n}\n\n.markdown-body .highlight .pl-mb,\n.markdown-body .highlight .pl-pdb {\n  color: #df5000;\n  font-weight: bold;\n}\n\n.markdown-body .highlight .pl-mi,\n.markdown-body .highlight .pl-pdi {\n  color: #6e5494;\n  font-style: italic;\n}\n\n.markdown-body .highlight .pl-ms1 {\n  background-color: #f5f5f5;\n}\n\n.markdown-body .highlight .pl-mdh,\n.markdown-body .highlight .pl-mdi {\n  font-weight: bold;\n}\n\n.markdown-body .highlight .pl-mdr {\n  color: #0086b3;\n  font-weight: bold;\n}\n\n.markdown-body .highlight .pl-s2 {\n  color: #333;\n}\n\n.markdown-body .highlight .pl-ii {\n  background-color: #df5000;\n  color: #fff;\n}\n\n.markdown-body .highlight .pl-ib {\n  background-color: #f93;\n}\n\n.markdown-body .highlight .pl-id {\n  background-color: #a31515;\n  color: #fff;\n}\n\n.markdown-body .highlight .pl-iu {\n  background-color: #b4b7b4;\n}\n\n.markdown-body .highlight .pl-mo {\n  color: #969896;\n}\n\n.markdown-body .task-list-item {\n  list-style-type: none;\n}\n\n.markdown-body .task-list-item+.task-list-item {\n  margin-top: 3px;\n}\n\n.markdown-body .task-list-item input {\n  float: left;\n  margin: 0.3em 0 0.25em -1.6em;\n  vertical-align: middle;\n}\u003c/style\u003e\u003ctitle\u003eREADME\u003c/title\u003e\u003c/head\u003e\u003cbody\u003e\u003carticle class=\"markdown-body\"\u003e\u003ch1\u003e\n\u003ca id=\"user-content-dhtmlxdesktopchat---\" class=\"anchor\" href=\"#dhtmlxdesktopchat---\" aria-hidden=\"true\"\u003e\u003cspan class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003edhtmlxDesktopChat  \u003ca href=\"http://badge.fury.io/js/dhtmlx-node-chat\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/fd38e6c12b6917989a7bf34687e54f77c56d2af9/68747470733a2f2f62616467652e667572792e696f2f6a732f6468746d6c782d6465736b746f702d636861742e706e67\" alt=\"NPM version\" data-canonical-src=\"https://badge.fury.io/js/dhtmlx-desktop-chat.png\" style=\"max-width:100%;\"\u003e\u003c/a\u003e \u003ca href=\"https://travis-ci.org/web2solutions/dhtmlxDesktopChat\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/042a1882d591e1ff9393739fa71ce32de30fc06f/68747470733a2f2f7472617669732d63692e6f72672f77656232736f6c7574696f6e732f6468746d6c784465736b746f70436861742e7376673f6272616e63683d6d6173746572\" alt=\"Build Status\" data-canonical-src=\"https://travis-ci.org/web2solutions/dhtmlxDesktopChat.svg?branch=master\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n\u003c/h1\u003e\n\n\u003cp\u003eJust a simple desktop chat built using DHTMLX on client and Node.js (Express + ws) \u0026amp;\u0026amp; Redis on back end\u003c/p\u003e\n\n\u003cp\u003e\u003ca href=\"http://i.imgur.com/2NLQCUL.png\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/9069f0184bfd7116f7efc9850b423c343e9ef879/687474703a2f2f692e696d6775722e636f6d2f324e4c5143554c2e706e67\" alt=\"screen1\" data-canonical-src=\"http://i.imgur.com/2NLQCUL.png\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"http://i.imgur.com/xT9Vs1q.png\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/feee7aa5d041d6814ef344122c626a59b1f2cf83/687474703a2f2f692e696d6775722e636f6d2f785439567331712e706e67\" alt=\"screen2\" data-canonical-src=\"http://i.imgur.com/xT9Vs1q.png\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003ch2\u003e\n\u003ca id=\"user-content-installation\" class=\"anchor\" href=\"#installation\" aria-hidden=\"true\"\u003e\u003cspan class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003eInstallation\u003c/h2\u003e\n\n\u003cp\u003eList of softwares that you need to have already installed:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003eRedis (running on localhost)\u003c/li\u003e\n\u003cli\u003eNode.js\u003c/li\u003e\n\u003cli\u003eGrunt\u003c/li\u003e\n\u003cli\u003eElectron\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eDownload this repository and uncompress to a given directory, lets assume: \u003cstrong\u003e\u003cem\u003e/Users/YourName/apps/dhtmlxNodeChat/\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp\u003eOr, use \u003cstrong\u003e\u003cem\u003enpm\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003enpm i dhtmlx-desktop-chat\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2\u003e\n\u003ca id=\"user-content-command-line-testing\" class=\"anchor\" href=\"#command-line-testing\" aria-hidden=\"true\"\u003e\u003cspan class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003eCommand line testing\u003c/h2\u003e\n\n\u003ch4\u003e\n\u003ca id=\"user-content-step-1\" class=\"anchor\" href=\"#step-1\" aria-hidden=\"true\"\u003e\u003cspan class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003eStep 1\u003c/h4\u003e\n\n\u003cp\u003eOn terminal, navigate to the project directory:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e$ cd /Users/YourName/apps/dhtmlxDesktopChat/\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eInstall grunt (if you don't have it installed):\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e$ npm install -g grunt-cli\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eInstall dependencies:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e$ npm install grunt-contrib-qunit --save-dev\n\n$ npm install express --save\n\n$ npm install --save ws\n\n$ npm install grunt-express --save-dev\n\n$ npm install redis\n\n$ npm install passport\n\n$ npm install passport-local\n\n$ npm install lodash\n\n$ npm install electron-prebuilt -g\n\n$ npm install electron-prebuilt --save-dev\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch4\u003e\n\u003ca id=\"user-content-step-2\" class=\"anchor\" href=\"#step-2\" aria-hidden=\"true\"\u003e\u003cspan class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003eStep 2\u003c/h4\u003e\n\n\u003cp\u003eNow , type on terminal:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e$ grunt test\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2\u003e\n\u003ca id=\"user-content-browser-testing\" class=\"anchor\" href=\"#browser-testing\" aria-hidden=\"true\"\u003e\u003cspan class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003eBrowser testing\u003c/h2\u003e\n\n\u003ch4\u003e\n\u003ca id=\"user-content-step-1-1\" class=\"anchor\" href=\"#step-1-1\" aria-hidden=\"true\"\u003e\u003cspan class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003eStep 1\u003c/h4\u003e\n\n\u003cpre\u003e\u003ccode\u003e$ grunt server\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eThen open the browser and reach the following address to see the tests: \u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003ehttp://localhost:4080/test/t.html\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eOr open the browser and reach the following address to see the application running:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003ehttp://localhost:4080/\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2\u003e\n\u003ca id=\"user-content-starting-desktop-application\" class=\"anchor\" href=\"#starting-desktop-application\" aria-hidden=\"true\"\u003e\u003cspan class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003eStarting desktop application\u003c/h2\u003e\n\n\u003cpre\u003e\u003ccode\u003e$ cd /Users/YourName/apps/dhtmlxDesktopChat/\n\n$ electron .\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eNow you are able to talk with the web instance previously opened on browser.\u003c/p\u003e\n\n\u003ch2\u003e\n\u003ca id=\"user-content-starting-web-application-with-node\" class=\"anchor\" href=\"#starting-web-application-with-node\" aria-hidden=\"true\"\u003e\u003cspan class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003eStarting web application with node\u003c/h2\u003e\n\n\u003cpre\u003e\u003ccode\u003e $ cd /Users/YourName/apps/dhtmlxDesktopChat/\n\n $ node app.js\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/article\u003e\u003c/body\u003e\u003c/html\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweb2solutions%2Fdhtmlxdesktopchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweb2solutions%2Fdhtmlxdesktopchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweb2solutions%2Fdhtmlxdesktopchat/lists"}