{"id":40824278,"url":"https://github.com/tberey/ts-node-chatroom","last_synced_at":"2026-01-21T22:11:08.919Z","repository":{"id":40702290,"uuid":"390764801","full_name":"tberey/ts-node-chatroom","owner":"tberey","description":"A Chatroom browser application, with user registration and authentication. A HTTP REST API, written in Typescript with Node, using the Express and Socket IO frameworks. Also supported by a MySQL database \u0026 uses EJS for client serving.","archived":false,"fork":false,"pushed_at":"2023-01-24T05:40:39.000Z","size":1651,"stargazers_count":1,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"development","last_synced_at":"2023-03-04T09:55:02.864Z","etag":null,"topics":["chat","chat-application","chat-room","chatapp","chatroom","http","http-server","mysql","mysql-database","node","node-js","nodejs","rest","rest-api","socket","socket-io","sockets","ts","typescript"],"latest_commit_sha":null,"homepage":"https://github.com/tberey/ts-node-chatroom/blob/development/README.md","language":"TypeScript","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/tberey.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":"SECURITY.md","support":null}},"created_at":"2021-07-29T15:13:31.000Z","updated_at":"2021-08-04T16:49:02.000Z","dependencies_parsed_at":"2023-01-28T19:46:04.003Z","dependency_job_id":null,"html_url":"https://github.com/tberey/ts-node-chatroom","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/tberey/ts-node-chatroom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tberey%2Fts-node-chatroom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tberey%2Fts-node-chatroom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tberey%2Fts-node-chatroom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tberey%2Fts-node-chatroom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tberey","download_url":"https://codeload.github.com/tberey/ts-node-chatroom/tar.gz/refs/heads/development","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tberey%2Fts-node-chatroom/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28645196,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"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":["chat","chat-application","chat-room","chatapp","chatroom","http","http-server","mysql","mysql-database","node","node-js","nodejs","rest","rest-api","socket","socket-io","sockets","ts","typescript"],"created_at":"2026-01-21T22:11:06.442Z","updated_at":"2026-01-21T22:11:08.909Z","avatar_url":"https://github.com/tberey.png","language":"TypeScript","readme":"\u003c!--\n*** Using markdown \"reference style\" links for readability.\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n--\u003e\n\n\u003c!-- PROJECT SHIELDS --\u003e\n[![Workflow][workflow-shield]][workflow-url]\n[![Issues][issues-shield]][issues-url]\n[![Version][version-shield]][version-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Forks][forks-shield]][forks-url]\n[![Contributors][contributors-shield]][contributors-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/tberey\"\u003e\n    \u003cimg src=\"public/assets/logo.png\" alt=\"TomCo (Technology \u0026 Online Media Company) Logo\" width=\"200\" height=\"100\"\u003e\n  \u003c/a\u003e\u003cbr\u003e\u003cbr\u003e\n  \u003cdiv align=\"center\"\u003e\u003ch1\u003eChatroom\u003c/h1\u003eA Realtime Browser Chat Application,\u003cbr\u003eby TomCo (Technology \u0026 Online Media Company).\u003c/div\u003e\n  \u003cdiv align=\"right\"\u003e\n    \u003cbr\u003e\n    \u003ca href=\"https://github.com/tberey/ts-node-chatroom/blob/development/README.md\"\u003e\u003cstrong\u003eDocumentation »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr\u003e\n    \u003ca href=\"#usage\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/tberey/ts-node-chatroom/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/tberey/ts-node-chatroom/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails open=\"open\" style=\"padding:4px;display:inline;border-width:1px;border-style:solid;\"\u003e\n  \u003csummary\u003e\u003cb style=\"display: inline-block\"\u003e\u003cu\u003eContents\u003c/u\u003e\u003c/b\u003e\u003c/summary\u003e\n    \u003col\u003e\n        \u003cli\u003e\n        \u003ca href=\"#about-this-project\"\u003eAbout\u003c/a\u003e\n        \u003cul\u003e\n            \u003cli\u003e\u003ca href=\"#tech-stack\"\u003eTech Stack\u003c/a\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\n        \u003ca href=\"#startup\"\u003eStartup\u003c/a\u003e\n        \u003cul\u003e\n            \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\n        \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\n        \u003cul\u003e\n            \u003cli\u003e\u003ca href=\"#screenshots\"\u003eScreenshots\u003c/a\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#changelog\"\u003eChangelog\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#acknowledgements\"\u003eAcknowledgements\u003c/a\u003e\u003c/li\u003e\n    \u003c/ol\u003e\n\u003c/details\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- ABOUT THis PROJECT --\u003e\n## About This Project\nA Chatroom Application with User Authentication \u0026 Accounts. Login \u0026 Register to join a Chatroom, which is powered in realtime and dynamically, for all concurrently connected users. Also has the options to manage your chatting account, such as changing password or username (both of which are needed to register, or login), as well as display name. All Account information is queried and stored in a MySQL database, with passwords securely hashed first.\n\n\u003csub\u003eA locally hosted http REST API, made in Typescript and Node, with Express and Socket IO frameworks, supported by a MySQL database. Uses EJS template engine for client page serving.\u003c/sub\u003e\n\n### Tech Stack\n* [Typescript](https://www.typescriptlang.org/)\n* [NodeJS](https://nodejs.org/en/)\n* [Socket.io](https://socket.io/)\n* [Express](https://expressjs.com/)\n* [MySQL](https://www.mysql.com/)\n* [EJS](https://ejs.co/)\n* [Rollbar](https://rollbar.com/)\n* [SimpleTxtLogger](https://www.npmjs.com/package/simple-txt-logger)\n* [ESLint](https://eslint.org/)\n* [MochaChai](https://mochajs.org/)\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- STARTUP --\u003e\n## Startup\nFor help or guidance in downloading and running the application, see the following subsections.\n\u003cbr\u003e\n\n#### Prerequisites\n[You must have npm (node package manager) and Nodejs installed on your system!](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)\n\n1. Setup npm:\n  ```sh\n  npm install npm@latest -g\n  ```\n\u003cbr\u003e\n\n#### Installation\n1. Clone/Download:\n  ```sh\n  git clone https://github.com/tberey/ts-node-chatroom.git\n  ```\n2. Install:\n  ```sh\n  npm install \u0026\u0026 npm update\n  ```\n3. Start:\n  ```sh\n  npm run start:app\n  ```\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## Usage\n\n| Endpoint | Action/Desc. | Full URI \u003ci\u003e(hosted locally, on some port; e.g.: 3000)\u003c/i\u003e | Request Type |\n|:---|:---|:---|:---|\n| \u003cul\u003e\u003cli\u003e\"/\"\u003c/li\u003e\u003c/ul\u003e | Home Page:\u003cbr\u003eThe client-side landing page. Login or Register. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/\"\u003c/li\u003e\u003c/ul\u003e | GET |\n| \u003cul\u003e\u003cli\u003e\"/chat\"\u003c/li\u003e\u003c/ul\u003e | Chatroom:\u003cbr\u003eIf logged in, this is the url for the chatroom. if not logged in, redirects to home page. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/chat\"\u003c/li\u003e\u003c/ul\u003e | GET |\n| \u003cul\u003e\u003cli\u003e\"/login\"\u003c/li\u003e\u003c/ul\u003e | Post request to login a user, with supplied credentials. If successful, redirects to chatroom. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/login\"\u003c/li\u003e\u003c/ul\u003e | POST |\n| \u003cul\u003e\u003cli\u003e\"/register\"\u003c/li\u003e\u003c/ul\u003e | Post request to register a user, with supplied credentials. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/register\"\u003c/li\u003e\u003c/ul\u003e | POST |\n| \u003cul\u003e\u003cli\u003e\"/changeUsername\"\u003c/li\u003e\u003c/ul\u003e | Post request to update a logged in user's username. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/changeUsername\"\u003c/li\u003e\u003c/ul\u003e | POST |\n| \u003cul\u003e\u003cli\u003e\"/logout\"\u003c/li\u003e\u003c/ul\u003e | Post request to log out a user and redirect to home page. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/logout\"\u003c/li\u003e\u003c/ul\u003e | POST |\n| \u003cul\u003e\u003cli\u003e\"/changePassword\"\u003c/li\u003e\u003c/ul\u003e | Put request to update a logged in user's password. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/changePassword\"\u003c/li\u003e\u003c/ul\u003e | PUT |\n| \u003cul\u003e\u003cli\u003e\"/delete\"\u003c/li\u003e\u003c/ul\u003e | Delete request to delete and hence log out a user, and redirect to home page. Hard delete of account. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/delete\"\u003c/li\u003e\u003c/ul\u003e | DELETE |\n\n\u003cbr\u003e\n\n### Screenshots\nChatroom (Logged-in):\u003cbr\u003e\n![Screenshot#1](https://github.com/tberey/ts-node-chatroom/blob/development/screenshots/chatroom-logged-in.png?raw=true)\u003cbr\u003e\u003cbr\u003e\n\nLanding Page (Register and/or Login):\u003cbr\u003e\n![Screenshot#1](https://github.com/tberey/ts-node-chatroom/blob/development/screenshots/landing-page.png?raw=true)\u003cbr\u003e\u003cbr\u003e\n\nMultiple Users (All Logged-in):\u003cbr\u003e\n![Screenshot#1](https://github.com/tberey/ts-node-chatroom/blob/development/screenshots/chatroom-multiple-users.png?raw=true)\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- ROADMAP --\u003e\n## Roadmap\nBelow is the refined and confirmed roadmap, that has been planned for completion. See [open issues][issues-url] and also the [project board][project-url], for any other proposed features or known issues, which may not be listed below.\n\n| Feature/Task/Bugfix | Details | Version \u003ci\u003e(if released)\u003c/i\u003e | Notes |\n|:---|:---|:---|:---|\n| \u003ci\u003eBug#1\u003c/i\u003e | \u003ci\u003eBug details...\u003c/i\u003e | \u003ci\u003e0.0.1\u003c/i\u003e | \u003ci\u003eexample#1\u003c/i\u003e |\n| \u003ci\u003eFeature#4\u003c/i\u003e | \u003ci\u003eFeature details...\u003c/i\u003e |   | \u003ci\u003eexample#2\u003c/i\u003e |\n| Automatic Database Startup \u0026 Configuration | Auto-build database and table(s), and auto-populate data or test account (seeding). | | |\n| Fix ID=0, On Register and Login | User's ID is shown as 0, but only when registering and logging in for first time, (re-log fixes, \u0026 no DB issues seen). | | |\n| Remove SQL From Server.ts | Remove any sql/db related stuff from Server.ts class and add into Database.ts class. | | |\n| Add Promises | Add Promises etc. | | |\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- CHANGELOG --\u003e\n## Changelog\n\n|Version | Date | Changes |\n|:---|:---|:---|\n|Version 0.0.1 | [2020-03-08] | \u003cul\u003e\u003cli\u003eInitial Commit.\u003c/li\u003e\u003cli\u003eAdd initial directory structure and files.\u003c/li\u003e\u003cli\u003eBuild enables users to join, set a name (or not) and chat with each other.\u003c/li\u003e\u003cli\u003eAdd dynamic 'who is typing' live indicator\u003c/li\u003e\u003cli\u003eSet un-changeable unique ID to users, to trace all messages back to users.\u003c/li\u003e\u003cli\u003eAdd logging/informative details about who connects/disconnects.\u003c/li\u003e\u003cli\u003eAdd timestamp and further styling to messages.\u003c/li\u003e\u003cli\u003eAdd Screenshots dir, and image screenshot files.\u003c/li\u003e\u003cli\u003eAdd README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.0.2 | [2020-03-09] | \u003cul\u003e\u003cli\u003eAdd new set to store chat/conversation history, which is sent to newly connected clients (enables full chat when client joins later/last).\u003c/li\u003e\u003cli\u003eRemove 'dist' and 'modules' folders. (After adding gitignore.)\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.1.0 | [2020-03-10] | \u003cul\u003e\u003cli\u003eAdd connected users list to client-side.\u003c/li\u003e\u003cli\u003eAdd new IUser type for user's details, and create new set to hold these (and amend IMessage type to accept this new type in place of existing props).\u003c/li\u003e\u003cli\u003eUpdate front-end DOM and appearance, to be more coherent.\u003c/li\u003e\u003cli\u003eUpdate public script to accept newly updated types/interfaces.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.2.0 | [2020-03-11] | \u003cul\u003e\u003cli\u003eUpdate connected users list on client-side, plus styling.\u003c/li\u003e\u003cli\u003eUpdate chatroom/message-list to have a scroll (overscroll) feature, for large amounts of messages.\u003c/li\u003e\u003cli\u003eAdd feature to always scroll to bottom of chatroom/messages-list.\u003c/li\u003e\u003cli\u003eUpdate the user set list to remove contacts on disconnection, and send updated list out to remaining.\u003c/li\u003e\u003cli\u003eGeneral code sharpening.\u003c/li\u003e\u003cli\u003eUpdate 'Screenshots' dir, with new images.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.2.1 | [2020-03-12] | \u003cul\u003e\u003cli\u003eAdd feature to show all users who may be typing concurrently (so more than one at a time).\u003c/li\u003e\u003cli\u003eAdd server messages feature, to alert connected users of updates to other connected users. I.e. connecting/disconnecting.\u003c/li\u003e\u003cli\u003eFix bug, where when any user sends a message it would clear all user's input field of text.\u003c/li\u003e\u003cli\u003eGeneral code sharpening/tidying, and minor client-side DOM adjustments.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.2.2 | [2020-03-13] | \u003cul\u003e\u003cli\u003eFriday the 13th Update, spoooky.\u003c/li\u003e\u003cli\u003eAdd basic mySQL database infrastructure and connection.\u003c/li\u003e\u003cli\u003eUpdate Screenshots.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.2.3 | [2020-03-17] | \u003cul\u003e\u003cli\u003eAdd further mySQL database infrastructure, including add a new entry row comprised of ID(Pri Key), Username and Password(Hashed).\u003c/li\u003e\u003cli\u003eAdd new front-end form, for use to make a post request on register button, to add new user details to db.\u003c/li\u003e\u003cli\u003eAdd new dependency/module, for parsing request body.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.3.0 | [2020-03-20] | \u003cul\u003e\u003cli\u003eBig Update - Full SQL Database Integration and Support.\u003c/li\u003e\u003cli\u003eAdd full user authentication to login client page, in order to access chatroom.\u003c/li\u003e\u003cli\u003eComplete the login client page registration feature, including adding new users as a row to sql db.\u003c/li\u003e\u003cli\u003eFull chatroom username and unique ID integration with sql db - all details are pulled from db.\u003c/li\u003e\u003cli\u003eAdd my account section to chatroom client page, with an account overview.\u003c/li\u003e\u003cli\u003eAbility to change password in the my account section of chatroom, reflected into db also.\u003c/li\u003e\u003cli\u003eUpdate change username to also update account section and sql database entry.\u003c/li\u003e\u003cli\u003eRedirection: When not logged in, always redirect too the login client page. When logged in, always redirect to chatroom client page.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.3.1 | [2020-03-21] | \u003cul\u003e\u003cli\u003eAdd full catch and redirection system, built up from previous implementation: Now catches any attempted unresolved urls, or unauthorized access (not logged-in), and redirects appropriately.\u003c/li\u003e\u003cli\u003eUpgrade Account section, when logged in: A further check on changing password, and also move change username to this section. Also add collapsing menu, for all options currently available.\u003c/li\u003e\u003cli\u003eAdjusted and refine code all around, as well as check and sure up comments. Adjusted so all data now come from server too.\u003c/li\u003e\u003cli\u003eBug Fixes and Testing.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.4.0 | [2020-03-23] | \u003cul\u003e\u003cli\u003ePicture Day Update!\u003c/li\u003e\u003cli\u003eRedesign front-end/client-side: Updated better visuals and slightly altered chatroom layout.\u003c/li\u003e\u003cli\u003eAdjust css/html for better scaling - Now much more viewable across a range devices/screen sizes.\u003c/li\u003e\u003cli\u003eAdd logout button/feature to account section in ChatRoom which disconnects from chat, logs user out (clears session data), to be returned to login page.\u003c/li\u003e\u003cli\u003eAdjusted sockets to use session data, rather than exported variables, for login status and username/id.\u003c/li\u003e\u003cli\u003eMinor routing changes.\u003c/li\u003e\u003cli\u003eBug Fixes and Tidy-up.\u003c/li\u003e\u003cli\u003eMoves sensitive/destructive data to external json file (git-ignored), that is imported and read from.\u003c/li\u003e\u003cli\u003eUpdated all screenshots in Screenshot Directory.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.4.1 | [2020-03-24] | \u003cul\u003e\u003cli\u003eMinor request type changes (post -\u003e delete/put, etc).\u003c/li\u003e\u003cli\u003eCSS/HTML minor adjustments and fine-tune.\u003c/li\u003e\u003cli\u003eAdd Delete account check and action (with route and request), to delete account from db, log user out and redirect to login/register page.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.4.2 | [2020-03-25] | \u003cul\u003e\u003cli\u003eAdd check/feature to prevent multiple instances (or log-in) of the same account.\u003c/li\u003e\u003cli\u003eAdd further error handling/catching for requests/socket-connections, preventing db changes or chatroom/account access, if user is no longer logged in.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 0.4.3 | [2020-03-26] | \u003cul\u003e\u003cli\u003eAdd check/feature to registering, requiring the user to confirm chosen password when signing up, and accompanying client-side error handling (not necessary to be done on server-side, as it is not damaging/deleting any assets if the user is able to skip this check).\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 1.0.0 | [2020-04-02] | \u003cul\u003e\u003cli\u003e1.0 Release!\u003c/li\u003e\u003cli\u003eUpdate Types in routing.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 2.0.0 | [2020-05-18] | \u003cul\u003e\u003cli\u003eTypeScript \u0026 Class Update - Whilst already a TypeScript project, it has been further updated to make more and better use of TypeScript features, as well as reconstructed into a more object oriented and class based design. Also sharpened up the code, fixing any mistakes, inconsistencies, or general improvements.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 2.1.0 | [2020-05-19] | \u003cul\u003e\u003cli\u003eEJS Update - Whilst already a EJS Templated project, it has been further updated to make more and better use of ejs engine features, as well as compacting the code, fixing any mistakes/bugs, inconsistencies, and general improvements.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 2.1.1 | [2020-05-20] | \u003cul\u003e\u003cli\u003eEJS Update - Further and general improvements.\u003c/li\u003e\u003cli\u003eClient-side Scripting restructure \u0026 tidy-up.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 2.2.0 | [2020-05-20] | \u003cul\u003e\u003cli\u003eFinal EJS Update \u0026 Cleanup\u003c/li\u003e\u003cli\u003eFurther client-side Scripting restructure \u0026 tidy-up.\u003c/li\u003e\u003cli\u003eCSS stylesheets consolidation (2=\u003e1).\u003c/li\u003e\u003cli\u003eComments rewriting and tidy.\u003c/li\u003e\u003cli\u003eFinal check over and tidy up + Testing.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 2.2.0 | [2020-05-20] | \u003cul\u003e\u003cli\u003eRenaming and descriptions editing.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 3.0.0 | [2021-07-29] | \u003cul\u003e\u003cli\u003eProject-wide update, reformat and clean-up, including modules.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 3.0.1 | [2021-07-31] | \u003cul\u003e\u003cli\u003eUpdates to session management implementation, plus a new interface.\u003c/li\u003e\u003cli\u003eUpdates to database interactivity and infrastructure, creating new separate class.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 3.0.2 | [2021-08-01] | \u003cul\u003e\u003cli\u003eDifferentiate SocketServer further, into it's own service class, rather than a parent class of the server infrastructure.\u003c/li\u003e\u003cli\u003eMinor updates to Database class and implementation.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 3.0.3 | [2021-08-03] | \u003cul\u003e\u003cli\u003eFix spelling.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n|Version 3.0.4 | [2021-08-04] | \u003cul\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e|\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- CONTRIBUTING --\u003e\n## Contributing\nContributions are welcomed and, of course, **greatly appreciated**.\n\n1. Fork the Project.\n2. Create your Feature Branch (`git checkout -b feature/Feature`)\n3. Commit your Changes (`git commit -m 'Add some Feature'`)\n4. Push to the Branch (`git push origin feature/Feature`)\n5. Open a Pull Request.\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- CONTACT --\u003e\n### Contact\n\n\u003cb\u003eTom Berey\u003c/b\u003e; \u003ci\u003eProject Manager, Lead Developer, Principal Tester \u0026 Customer Services\u003c/i\u003e;\u003cbr\u003etomberey1@gmail.com;\n\n* [Issues \u0026 Requests][issues-url]\n* [My Other Projects](https://github.com/tberey?tab=repositories)\n* [Personal Website](https://tberey.github.io/)\n* [Linked In](https://uk.linkedin.com/in/thomas-berey)\n\n\u003cbr\u003e\n\n\u003c!-- ACKNOWLEDGEMENTS --\u003e\n### Acknowledgements\n\n* [Me](https://github.com/tberey)\n\n\n\n\u003cbr\u003e\u003cbr\u003e\u003chr\u003e\u003cdiv align=\"center\"\u003eTomCo\u0026trade; (Technology \u0026 Online Media Company \u0026copy;)\u003c/div\u003e\n\n\n\n\n\u003c!-- SPECIFIC URLS - NEED CHANGING PER PROJECT --\u003e\n[workflow-shield]: https://github.com/tberey/ts-node-chatroom/actions/workflows/codeql-analysis.yml/badge.svg\n[workflow-url]: https://github.com/tberey/ts-node-chatroom/actions\n[version-shield]: https://img.shields.io/github/v/release/tberey/ts-node-chatroom\n[version-url]: https://github.com/tberey/ts-node-chatroom/releases/\n[stars-shield]: https://img.shields.io/github/stars/tberey/ts-node-chatroom.svg\n[stars-url]: https://github.com/tberey/ts-node-chatroom/stargazers\n[contributors-shield]: https://img.shields.io/github/contributors/tberey/ts-node-chatroom.svg\n[contributors-url]: https://github.com/tberey/ts-node-chatroom/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/tberey/ts-node-chatroom.svg\n[forks-url]: https://github.com/tberey/ts-node-chatroom/network/members\n[issues-shield]: https://img.shields.io/github/issues/tberey/ts-node-chatroom.svg\n[issues-url]: https://github.com/tberey/ts-node-chatroom/issues\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?logo=linkedin\u0026colorB=555\n[linkedin-url]: https://uk.linkedin.com/in/thomas-berey\n[project-url]: https://github.com/tberey/ts-node-chatroom/projects","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftberey%2Fts-node-chatroom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftberey%2Fts-node-chatroom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftberey%2Fts-node-chatroom/lists"}