{"id":19259829,"url":"https://github.com/norlandz/tlightchat-main-preview","last_synced_at":"2026-04-09T13:51:06.419Z","repository":{"id":208145852,"uuid":"713173295","full_name":"Norlandz/tlightchat-main-preview","owner":"Norlandz","description":"Real time video \u0026 text communication.","archived":false,"fork":false,"pushed_at":"2024-01-02T04:10:07.000Z","size":2647,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-05T09:42:25.795Z","etag":null,"topics":["chat","communication-application","expressjs","nextjs","react","redux","video-streaming","webrtc"],"latest_commit_sha":null,"homepage":"https://tlightchat.netlify.app","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/Norlandz.png","metadata":{"files":{"readme":"docs/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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-02T01:39:28.000Z","updated_at":"2024-01-02T04:12:54.000Z","dependencies_parsed_at":"2024-01-02T04:39:35.670Z","dependency_job_id":null,"html_url":"https://github.com/Norlandz/tlightchat-main-preview","commit_stats":null,"previous_names":["norlandz/tlightchat-main-preview"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Norlandz%2Ftlightchat-main-preview","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Norlandz%2Ftlightchat-main-preview/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Norlandz%2Ftlightchat-main-preview/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Norlandz%2Ftlightchat-main-preview/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Norlandz","download_url":"https://codeload.github.com/Norlandz/tlightchat-main-preview/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240356753,"owners_count":19788609,"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","communication-application","expressjs","nextjs","react","redux","video-streaming","webrtc"],"created_at":"2024-11-09T19:18:00.193Z","updated_at":"2025-12-30T19:04:44.129Z","avatar_url":"https://github.com/Norlandz.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!DOCTYPE html\u003e\n    \u003chtml\u003e\n    \u003chead\u003e\n        \u003cmeta charset=\"UTF-8\"\u003e\n        \u003ctitle\u003eIntroduction\u003c/title\u003e\n        \u003cstyle\u003e\n/* From extension vscode.github */\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.vscode-dark img[src$=\\#gh-light-mode-only],\n.vscode-light img[src$=\\#gh-dark-mode-only] {\n\tdisplay: none;\n}\n\n\u003c/style\u003e\n        \n        \n        \u003cstyle\u003e\n.task-list-item {\n    list-style-type: none;\n}\n\n.task-list-item-checkbox {\n    margin-left: -20px;\n    vertical-align: middle;\n    pointer-events: none;\n}\n\u003c/style\u003e\n        \u003cstyle\u003e\n\npre {\n  position: relative;\n}\n\npre, pre code {\n  font-family: Consolas;\n  font-size: 12px;\n}\n\nh1 {\n  font-family: Consolas;\n  font-size: 32px;\n}\n\nh2 {\n  font-family: Bell MT;\n  font-size: 30px;\n}\n\nh3 {\n  font-family: Lucida Fax;\n  font-size: 22px;\n}\n\nh4 {\n  font-family: Bookman Old Style;\n  font-size: 18px;\n}\n\nh5 {\n  font-family: Palatino Linotype;\n  font-size: 16px;\n}\n\nh6 {\n  font-family: Arial;\n  font-size: 14px;\n}\n\nh1, h2, h3, h4, h5, h6 {\n  margin: 0;\n  padding: 0;\n  margin-top: 0.25em;\n  margin-bottom: 0.25em;\n}\n\ntable, th, td {\n  border: 1px solid;\n}\n\ntable {\n  margin: 1em;\n  border-collapse: collapse;\n  width: -moz-max-content;\n  width: max-content;\n  max-width: 1500px;\n}\n\ntbody tr:nth-child(even) {\n  background-color: rgba(245, 248, 255, 0.8);\n}\n\ntbody {\n  border: 5px solid rgba(147, 174, 207, 0.9);\n  border-top: 10px solid rgba(147, 174, 207, 0.9);\n}\n\ntable p {\n  margin-bottom: 0.3em;\n}\n\ntd {\n  padding: 0.3em;\n  text-align: left;\n  vertical-align: top;\n  font-size: 90%;\n}\n\ndl {\n  display: block;\n  margin: 0;\n  padding: 0;\n  position: relative;\n}\n\ndt {\n  display: block;\n}\n\ndd {\n  display: block;\n  margin: 0;\n  padding: 0;\n  margin-left: 1em;\n  position: relative;\n  line-height: 110%;\n  margin-bottom: 1.5em;\n}\n\nol, ul {\n  display: block;\n  margin: 0;\n  padding: 0;\n  position: relative;\n}\n\nli {\n  margin: 0;\n  padding: 0;\n  margin-left: 1em;\n  /* padding-left: 1em; */\n}\n\n:is(ol, ul, dl)::before {\n  content: \"\";\n  background: linear-gradient(180deg, rgba(182, 182, 182, 0.5) 0%, rgba(241, 241, 241, 0.5) 15%, rgba(241, 241, 241, 0.5) 95%, rgba(182, 182, 182, 0.5) 100%);\n  display: block;\n  height: 100%;\n  width: 2px;\n  position: absolute;\n}\n\nimg {\n  -o-object-fit: scale-down;\n     object-fit: scale-down;\n  max-width: 650px;\n  max-height: 200px;\n  text-align: center;\n}\n\nimg {\n  cursor: zoom-in;\n}\n\nfigure {\n  text-align: center;\n}\n\n\na {\n  color: rgb(70, 2, 122);\n  text-decoration: none;\n}\n\n\nblockquote {\n  padding: 1px 0px 1px 1em;\n  border-left: 4px solid rgba(203, 203, 203, 0.8);\n  background-color: rgba(248, 248, 248, 0.8);\n}\n\n/*  */\n\np {\n  margin: 0;\n}\n\nblockquote {\n  margin: 0.3em 0 0 0;\n}\n\u003c/style\u003e\n    \u003c/head\u003e\n    \u003cbody class=\"vscode-body vscode-light\"\u003e\n        \u003ch3 id=\"introduction\"\u003eIntroduction\u003c/h3\u003e\n\u003cp\u003eReal time video \u0026amp; text communication.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003ego to tlightchat.netlify.app\n\u003cul\u003e\n\u003cli\u003e(if the Server in \u003ca href=\"https://tlightchat.netlify.app\"\u003ehttps://tlightchat.netlify.app\u003c/a\u003e is down,\u003cbr\u003e\nuse offline mode in \u003ca href=\"https://tlightchat-offline.netlify.app\"\u003ehttps://tlightchat-offline.netlify.app\u003c/a\u003e\u003cbr\u003e\nor \u003ca href=\"https://norlandz.github.io/tlightchat-main-preview/dist/index.html\"\u003ehttps://norlandz.github.io/tlightchat-main-preview/dist/index.html\u003c/a\u003e )\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ego to \u003ccode\u003eWebrtcVideoCommunication\u003c/code\u003e in nav bar\u003c/li\u003e\n\u003cli\u003ewait for SignalServer respond\u003c/li\u003e\n\u003cli\u003ewait for \u003ccode\u003eWebrtcVideoCommunication\u003c/code\u003e fully loaded\u003c/li\u003e\n\u003cli\u003efollow instruction on \u003ccode\u003eWebrtcVideoCommunication\u003c/code\u003e -- choose a Peer to Connect with\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"demo-image\"\u003eDemo image\u003c/h3\u003e\n\u003ch3 id=\"internal-design\"\u003eInternal design\u003c/h3\u003e\n\u003cp\u003e// todo (i will go brief on this, since i went some detailed on the other project, but was not worth it)\u003c/p\u003e\n\u003ch4 id=\"techstack--servers\"\u003etechstack / servers\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eVite -- frontend Ui\u003c/li\u003e\n\u003cli\u003eWebRtc -- P2P video connection\u003c/li\u003e\n\u003cli\u003eXstate -- state management \u0026amp; event dispatch\u003c/li\u003e\n\u003cli\u003eSignalServer -- backend Server -- uses Websocket\u003c/li\u003e\n\u003cli\u003eAws -- host for the Services\u003c/li\u003e\n\u003cli\u003eNetlify -- domain name \u0026amp; reverse proxy\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"main-design\"\u003emain design\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eH:\\Using\\TLightChat\\tlightchat-main\\src\\webrtcVideoCommunication\\dataStructure\\WebrtcConnectionAnchor.ts\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003ecentral data structure (/ model)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eH:\\Using\\TLightChat\\tlightchat-main\\src\\webrtcVideoCommunication\\service\\WebrtcConnectionService.ts\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003ecentral service (-- app logic; webrtc connection; state management; event dispatch;)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e--\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eH:\\Using\\TLightChat\\tlightchat-main\\src\\webrtcVideoCommunication\\panel\\WebrtcConnectionAnchorGridPanel.tsx\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003ecentral panel for video connection\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eH:\\Using\\TLightChat\\tlightchat-main\\src\\webrtcVideoCommunication\\panel\\VideoConnectionControlPanel.tsx\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003ecentral panel for video connection control\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e--\u003cbr\u003e\n--\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eH:\\Using\\TLightChat\\tlightchat-main\\src\\SignalServer.ts\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eSignalServer\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e--\u003cbr\u003e\n--\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eH:\\Using\\TLightChat\\tlightchat-main\\src\\webrtcVideoCommunication\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003emain folder for webrtcVideoCommunication\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eH:\\Using\\TLightChat\\tlightchat-main\\src\\webrtcVideoCommunication\\service\\xstate\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003estate machine\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eH:\\Using\\TLightChat\\tlightchat-main\\src\\session\\AppSession.ts\u003c/code\u003e\u003cbr\u003e\n\u003ccode\u003eH:\\Using\\TLightChat\\tlightchat-main\\src\\webrtcVideoCommunication\\service\\EventEmitterNested_forWebrtcConnection.ts\u003c/code\u003e\u003cbr\u003e\n\u003ccode\u003eH:\\Using\\TLightChat\\tlightchat-main\\src\\webrtcVideoCommunication\\App_WebrtcVideoCommunication_connectToServer.tsx\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003esession management\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eH:\\Using\\TLightChat\\tlightchat-main\\src\\webrtcVideoCommunication\\redux\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eredux\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"demo-image-design----state-machine-class-uml\"\u003edemo image design -- state machine; class uml;\u003c/h4\u003e\n\u003ch3 id=\"problems-facing\"\u003eProblems facing\u003c/h3\u003e\n\u003ch4 id=\"domain-name--websocket\"\u003eDomain name \u0026amp; Websocket\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003edomain name is \u0026quot;borrowed\u0026quot; from Netlify (I have no money to buy a domain name)\u003cbr\u003e\n//repeat: Aws is the actual place where all the Services are hosted\u003cbr\u003e\n//repeat: Netlify serves as a reverse proxy\u003c/li\u003e\n\u003cli\u003esince Im using a reverse proxy, there is a issue with the Websocket\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"security\"\u003eSecurity\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ethis is an experimental project\u003c/li\u003e\n\u003cli\u003edo not post any important information on the Chat -- this is insecure, though it appears to be https\u003cbr\u003e\n(the database may be destroyed when server is down)\u003c/li\u003e\n\u003c/ul\u003e\n\n        \n        \n    \u003c/body\u003e\n    \u003c/html\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorlandz%2Ftlightchat-main-preview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnorlandz%2Ftlightchat-main-preview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorlandz%2Ftlightchat-main-preview/lists"}