{"id":28474245,"url":"https://github.com/athlon1600/chat","last_synced_at":"2025-08-29T21:40:24.990Z","repository":{"id":88403070,"uuid":"583692824","full_name":"Athlon1600/chat","owner":"Athlon1600","description":"💬 Chat application written in TypeScript with a Vue frontend","archived":false,"fork":false,"pushed_at":"2023-01-14T17:05:01.000Z","size":198,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-19T17:15:28.065Z","etag":null,"topics":["chat","chat-application","chat-sdk","chatroom","express","javascript","live","livestream","realtime-chat","redis","self-hosted","socket-io","typescript","vue","websocket"],"latest_commit_sha":null,"homepage":"https://chat-athlon1600.netlify.app/lofi.html","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/Athlon1600.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2022-12-30T15:40:24.000Z","updated_at":"2023-06-28T23:28:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"0ae7e75b-f9a8-4bd5-8388-b2c8fe44f0f3","html_url":"https://github.com/Athlon1600/chat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Athlon1600/chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athlon1600%2Fchat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athlon1600%2Fchat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athlon1600%2Fchat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athlon1600%2Fchat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Athlon1600","download_url":"https://codeload.github.com/Athlon1600/chat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athlon1600%2Fchat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272766957,"owners_count":24989408,"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-08-29T02:00:10.610Z","response_time":87,"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":["chat","chat-application","chat-sdk","chatroom","express","javascript","live","livestream","realtime-chat","redis","self-hosted","socket-io","typescript","vue","websocket"],"created_at":"2025-06-07T13:06:29.548Z","updated_at":"2025-08-29T21:40:24.681Z","avatar_url":"https://github.com/Athlon1600.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chat Application\r\n\r\n![GitHub last commit](https://img.shields.io/github/last-commit/athlon1600/chat)\r\n![Top language](https://img.shields.io/github/languages/top/athlon1600/chat)\r\n![Lines of code](https://img.shields.io/tokei/lines/github/athlon1600/chat)\r\n\r\nHighly customizable chat server/application that is easy to deploy, and can be integrated with any sort of website.\r\nHost your own **chat server** on your own terms.\r\n\r\nMay be used by Twitch streamers who want to host their own chat server\r\naway from Twitch infrastructure and moderation.\r\n\r\n## Live demo\r\n\r\n- https://chat-athlon1600.netlify.app/\r\n\r\nPlayground for developers showing things you can do using HTTP/Websocket API.\r\n\r\n- https://chat-athlon1600.netlify.app/lofi.html\r\n\r\nA more real-world example showing chat embedded alongside a live stream.\r\n\r\n![Imgur](https://i.imgur.com/8unZ1yl.png)\r\n\r\n## :warning: Work in progress...\r\n\r\nThis project is still in its beta stage. Nothing is guaranteed until v1.0.0.\r\n\r\n## 🔥 Features\r\n\r\n- First-class TypeScript support - IDE should be doing half the work for you\r\n- Single repository (why monorepo? https://monorepo.tools/)\r\n- :whale: Dockerized\r\n- Not tied to any particular infrastructure or service - we are in a world where AWS, Firebase and Twitch do not exist\r\n- Infinitely scalable with minimal changes\r\n- Minimal dependencies\r\n\r\n## Repository Structure\r\n\r\nEntire application is **self-contained** within this single repository\r\nwhich has many advantages during development.\r\n\r\n- `/apps` folder contains \"launchable\" apps that can be started by calling `npm run start` within that application's directory. Neither application can depend on another. Apps can only depend on `packages`.\r\n- `/packages` folder contains \"shared\" code used by apps and by other packages too.\r\n\r\n## :whale2: Local Development using Docker\r\n\r\nTwo things you need installed first:\r\n\r\n- Node.js (\u003e=16) - https://nodejs.org/\r\n- Docker - https://www.docker.com/products/docker-desktop/\r\n\r\nNow run these commands:\r\n\r\n```shell\r\ngit clone https://github.com/Athlon1600/chat\r\ncd chat\r\nnpm run docker:dev\r\n```\r\n\r\nThis will take a while, but once up and running\r\nyou will be able to access the following services\r\non your local computer:\r\n\r\n- localhost:8080 = frontend\r\n- localhost:3000 = server/backend\r\n- localhost:9000 = adminer (for browsing/editing db contents)\r\n- localhost:8001 = Redis Insight\r\n\r\n## :rocket: One-click install\r\n\r\nRent a server from Linode or such (preferably of Ubuntu variety),\r\nand paste the following command into your terminal:\r\n\r\n```\r\ncurl -s https://raw.githubusercontent.com/Athlon1600/chat/master/scripts/install.sh | bash\r\n```\r\n\r\nEverything will be installed all at once without needing any further input from you.\r\n\r\nIf install was a success, you can then access the application via the IP address that was assigned to your server. See\r\nthe demo links above of what that would look like.\r\n\r\n### Caddy Server\r\n\r\nOne-click install:\r\n\r\n```shell\r\ncurl -sS https://raw.githubusercontent.com/Athlon1600/chat/master/scripts/caddy.sh | sh\r\n```\r\n\r\nOnce Caddy is installed, you need to modify these files:\r\n\r\n- `.env.production` - rename to `.env` and change values inside\r\n- `docker-compose-prod.yml` - adjust values there accordingly too\r\n- `etc/Caddyfile`\r\n\r\n```shell\r\ncaddy run --config ./etc/Caddyfile\r\n```\r\n\r\n## :construction: To-do list\r\n\r\n- Build a proper `/admin` backend instead of doing management directly via database (adminer).\r\n- https://typedoc.org/\r\n- https://palantir.github.io/tslint/usage/cli/\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathlon1600%2Fchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fathlon1600%2Fchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathlon1600%2Fchat/lists"}