{"id":15375030,"url":"https://github.com/lganzzzo/canchat","last_synced_at":"2025-09-08T20:35:12.582Z","repository":{"id":46133336,"uuid":"243115462","full_name":"lganzzzo/canchat","owner":"lganzzzo","description":"Feature-complete rooms-based chat for tens of thousands users. Client plus Server. Built with Oat++ Web Framework.","archived":false,"fork":false,"pushed_at":"2024-05-19T23:24:15.000Z","size":124,"stargazers_count":71,"open_issues_count":3,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-08T20:35:11.322Z","etag":null,"topics":["async","chat","chatroom-server","cpp","high-performance","oatpp","secure"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lganzzzo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"ko_fi":"lganzzzo"}},"created_at":"2020-02-25T22:22:37.000Z","updated_at":"2025-07-12T10:22:17.000Z","dependencies_parsed_at":"2024-05-19T23:31:00.844Z","dependency_job_id":"a1388693-4664-4388-82c6-4bb7476562d5","html_url":"https://github.com/lganzzzo/canchat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lganzzzo/canchat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lganzzzo%2Fcanchat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lganzzzo%2Fcanchat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lganzzzo%2Fcanchat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lganzzzo%2Fcanchat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lganzzzo","download_url":"https://codeload.github.com/lganzzzo/canchat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lganzzzo%2Fcanchat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274231507,"owners_count":25245601,"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-09-08T02:00:09.813Z","response_time":121,"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":["async","chat","chatroom-server","cpp","high-performance","oatpp","secure"],"created_at":"2024-10-01T14:00:49.655Z","updated_at":"2025-09-08T20:35:12.529Z","avatar_url":"https://github.com/lganzzzo.png","language":"C++","funding_links":["https://ko-fi.com/lganzzzo"],"categories":[],"sub_categories":[],"readme":"# Can-Chat [![Build Status](https://dev.azure.com/lganzzzo/lganzzzo/_apis/build/status/lganzzzo.canchat?branchName=master)](https://dev.azure.com/lganzzzo/lganzzzo/_build/latest?definitionId=24\u0026branchName=master)\n\n![Can-Chat](https://upload.wikimedia.org/wikipedia/commons/0/0a/Tr%C3%A5dtelefon-illustration.png)\n\nFeature-complete rooms-based chat for tens of thousands users. Client plus Server. Built with [Oat++ Web Framework](https://oatpp.io/).   \n`Single-Node` `In-Memory` `WebSocket` `TLS`.\n\n\n## Quick Start\n\n- Run your own chat in Docker:\n   ```bash\n   docker run -p 8443:8443 -e EXTERNAL_ADDRESS=localhost -e EXTERNAL_PORT=8443 -it lganzzzo/canchat\n   ```\n- [Build from source](#build-from-source)\n\n## Chat\n\n### Rooms\n\nAll communication happens in chat-rooms.  \nEach room has a unique URL.  \nAnyone who has room-URL can join the room.\nGenerating random long enough room-URL gives privacy to participants. Be sure to share room-URL with wanted participants only. \n\nRooms are automatically created when the first participant joins the room, and\nare automatically deleted when the last participant leaves the room.\n\nChat-history is available for newly joined participants.\nHistory is rounded when the number of messages in the room exceeds the `maxRoomHistoryMessages` config parameter.\nHistory is deleted and no-longer-available once the room is deleted.\n\n### File Sharing\n\nUsers can share multiple files at once.\n\nFiles are streamed directly from the host-peer machine. \nNothing is uploaded to the server nor stored in any 3d-party place.\n\nOnce host-peer cancels file-sharing, files are no longer available.  \nIf host-peer exits the room, all of his file-sharing is canceled.\n\n\n## Build And Run\n\n### Build From Source\n\n#### Pre-Requirements\n\n- Install `LibreSSL` version `3.0.0` or later.\n- Install [oatpp](https://github.com/oatpp/oatpp) - Oat++ Web Framework (main module)\n- Install [oatpp-websocket](https://github.com/oatpp/oatpp-websocket) - Oat++ WebSocket extension module.\n- Install [oatpp-libressl](https://github.com/oatpp/oatpp-libressl) - Libressl adaptor for Oat++.\n\n*To install oatpp modules you can use `utility/install-oatpp-modules.sh` script*\n\n#### Build Chat Server\n\n```bash\n$ cd \u003cthis-repo\u003e/server/\n$ mkdir build/ \u0026\u0026 cd build/\n$ cmake ..\n$ make\n```\n\nNow run chat server\n\n```bash\n$ canchat-exe --host localhost --port 8443\n```\n\n### Docker\n\n```bash\n$ docker build -t canchat .\n$ docker run -p 8443:8443 -e EXTERNAL_ADDRESS=localhost -e EXTERNAL_PORT=8443 -it canchat\n```\n*Then goto https://localhost:8443/ in browser. (accept self-signed certificate)*\n\nImage parameters:\n- `-e EXTERNAL_ADDRESS` - Address to which the client is supposed to connect to.\n- `-e EXTERNAL_PORT` - Port at `EXTERNAL_ADDRESS` to which the client is supposed to connect to. *Chat server will also be running on this port*.\n- `-e TLS_FILE_PRIVATE_KEY` - Path to TLS private-key file.\n- `-e TLS_FILE_CERT_CHAIN` - Path to TLS certificate chain file.\n\n## Repository Content\n\n```\n- front/                            # - Front-end sources are here\n- server/                           # - Server sources are here\n- cert/                             # - test TLS certificate is here\n- utility/\n    |\n    |- install-oatpp-modules.sh     # - useful script to install required oatpp modules\n```\n\n## License\n\nThis project is released under `Apache License 2.0`.\n\n---\n\nEnjoy!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flganzzzo%2Fcanchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flganzzzo%2Fcanchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flganzzzo%2Fcanchat/lists"}