{"id":20625377,"url":"https://github.com/vadniks/exchatgedesktopclient","last_synced_at":"2026-07-14T19:31:30.760Z","repository":{"id":169871748,"uuid":"645933594","full_name":"vadniks/ExchatgeDesktopClient","owner":"vadniks","description":"A secured real-time message and file exchanger (desktop client)","archived":false,"fork":false,"pushed_at":"2024-03-29T17:47:08.000Z","size":2238,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-20T09:47:28.661Z","etag":null,"topics":["asynchronous-programming","binary-protocol","c","cmake","e2e-encryption","gui","libsodium","low-level-memory-manipulation","modern-c","multithreading","nuklear","realtime-messaging","responsive-design","sdl2","sdl2-net","secured-communication","socket-client","socket-programming","sqlite3","thread-synchronization"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vadniks.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}},"created_at":"2023-05-26T19:45:54.000Z","updated_at":"2024-02-18T21:00:20.000Z","dependencies_parsed_at":"2024-01-06T18:25:25.641Z","dependency_job_id":"f3ea7b74-6315-45e6-a106-db3455666ba9","html_url":"https://github.com/vadniks/ExchatgeDesktopClient","commit_stats":null,"previous_names":["vadniks/exchatgedesktopclient"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vadniks/ExchatgeDesktopClient","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadniks%2FExchatgeDesktopClient","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadniks%2FExchatgeDesktopClient/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadniks%2FExchatgeDesktopClient/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadniks%2FExchatgeDesktopClient/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vadniks","download_url":"https://codeload.github.com/vadniks/ExchatgeDesktopClient/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadniks%2FExchatgeDesktopClient/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35476728,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-14T02:00:06.603Z","response_time":114,"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":["asynchronous-programming","binary-protocol","c","cmake","e2e-encryption","gui","libsodium","low-level-memory-manipulation","modern-c","multithreading","nuklear","realtime-messaging","responsive-design","sdl2","sdl2-net","secured-communication","socket-client","socket-programming","sqlite3","thread-synchronization"],"created_at":"2024-11-16T13:09:26.063Z","updated_at":"2026-07-14T19:31:30.744Z","avatar_url":"https://github.com/vadniks.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Exchatge - a secured message exchanger (desktop client)\n\n```\n_______ _     _ _______ _     _ _______ _______  ______ _______\n|______  \\___/  |       |_____| |_____|    |    |  ____ |______\n|______ _/   \\_ |_____  |     | |     |    |    |_____| |______\n```\n\n![Icon](exchatgeIcon.svg \"Icon\")\n\nThe purpose of this project is to easily exchange messages \nvia binary protocol using an encrypted communication channel \nin the realtime. Each client-to-server connection is encrypted, \neach client-to-client connection is also encrypted. All messages \ngo through server, but because of presence of the second layer \nof encryption between clients, any interception of messages by \nthe server or anyone else is useless. File exchange is supported.\n\nProject is created for Linux x86_64 desktop platforms (PCs).\n\n## Key features:\n* Double end-to-end encryption (each connection between client and server is encrypted, as well as the each conversation channel between 2 clients),\n* Encrypted file exchanging via binary protocol,\n* Authentication and authorization (each client has login and password, ephemeral token based protection),\n* User roles (one admin and $(MAX_USERS_COUNT - 1) users),\n* Asynchronous execution,\n* Missing messages fetching,\n* Graphical user interface,\n* Human-readable options file,\n* Multiple active simultaneous connections,\n* Digital signatures checking between clients and server,\n* Broadcasting (only one layer of encryption - between client and server, from admin to all others),\n* Instant messages delivery,\n* Different languages support.\n\n## Dependencies\n\nClient side is written entirely in C (C11, with GNU extensions).\n\nBuild is performed via [GNU Make](https://www.gnu.org/software/make) \nor via [Ninja](https://ninja-build.org/) \nwith help of [CMake](https://cmake.org) build system generator. \nCompilation is performed via [CLang](https://clang.llvm.org/).\n\nClient side uses the following libraries: \n* [SDL2](https://github.com/libsdl-org/SDL); \n* [SDL2Net](https://github.com/libsdl-org/SDL_net); \n* [LibSodium](https://github.com/jedisct1/libsodium); \n* [Nuklear](https://github.com/Immediate-Mode-UI/Nuklear); \n* [SQLite3](https://sqlite.org); \n* [GNU C Library (GLIBC)](https://www.gnu.org/software/libc) - therefore project targets Linux systems. \n\n## The project is currently in `Beta`\n\n[The server](https://github.com/vadniks/ExchatgeServer) \\\n[Android client](https://github.com/vadniks/ExchatgeAndroidClient)\n\n## Screenshots\n\n![A](screenshots/a.png \"A\")\n![B](screenshots/b.png \"B\")\n![C](screenshots/c.png \"C\")\n![D](screenshots/d.png \"D\")\n![E](screenshots/e.png \"E\")\n![F](screenshots/f.png \"F\")\n![G](screenshots/g.png \"G\")\n![H](screenshots/h.png \"H\")\n![I](screenshots/i.png \"I\")\n![J](screenshots/j.png \"J\")\n![K](screenshots/k.png \"K\")\n\n## Build\n\nFor convenience, build is performed automatically via shell scripts. \nExecute the following commands to download \u0026 build dependencies, \nthen, to extract the executable \u0026 it's libraries, and finally, to run \nthe executable itself:\n```shell\n# build\nchmod +x buildDependencies.sh \u0026\u0026 ./buildDependencies.sh\nmkdir build \u0026\u0026 (cd build; cmake .. \u0026\u0026 make)\n# test\n(cd build; ctest tests)\n# prepare to run\nchmod +x extract.sh \u0026\u0026 ./extract.sh\npatchelf --set-rpath '$ORIGIN' extracted/ExchatgeDesktopClient\n# run\n(cd extracted; ./ExchatgeDesktopClient)\n```\n\n## Documentation\n\n`TODO`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvadniks%2Fexchatgedesktopclient","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvadniks%2Fexchatgedesktopclient","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvadniks%2Fexchatgedesktopclient/lists"}