{"id":13455157,"url":"https://github.com/SpacingBat3/WebCord","last_synced_at":"2025-03-24T07:32:24.787Z","repository":{"id":36980009,"uuid":"307479783","full_name":"SpacingBat3/WebCord","owner":"SpacingBat3","description":"A Discord and SpaceBar :electron:-based client implemented without Discord API.","archived":false,"fork":false,"pushed_at":"2025-02-19T23:02:35.000Z","size":4362,"stargazers_count":2088,"open_issues_count":85,"forks_count":101,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-03-21T10:01:44.379Z","etag":null,"topics":["aarch64","app","arm","arm64","armhf","armv7","armv7l","discord","discord-css","discord-theme","discord-web","electron","electron-discord","fosscord","javascript","nodejs","spacebar","typescript","web","webapp"],"latest_commit_sha":null,"homepage":"","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/SpacingBat3.png","metadata":{"files":{"readme":"docs/Readme.md","changelog":null,"contributing":"docs/Contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/Support.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["SpacingBat3"]}},"created_at":"2020-10-26T19:15:04.000Z","updated_at":"2025-03-20T21:40:18.000Z","dependencies_parsed_at":"2023-02-19T15:16:26.104Z","dependency_job_id":"3fcf698b-1a9e-4570-ae70-1fa251a03ae4","html_url":"https://github.com/SpacingBat3/WebCord","commit_stats":{"total_commits":976,"total_committers":18,"mean_commits":54.22222222222222,"dds":"0.052254098360655754","last_synced_commit":"6912b8aae99fb432a7931ff5ca5524af8183e679"},"previous_names":[],"tags_count":103,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpacingBat3%2FWebCord","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpacingBat3%2FWebCord/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpacingBat3%2FWebCord/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpacingBat3%2FWebCord/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SpacingBat3","download_url":"https://codeload.github.com/SpacingBat3/WebCord/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245227573,"owners_count":20580898,"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":["aarch64","app","arm","arm64","armhf","armv7","armv7l","discord","discord-css","discord-theme","discord-web","electron","electron-discord","fosscord","javascript","nodejs","spacebar","typescript","web","webapp"],"created_at":"2024-07-31T08:01:01.884Z","updated_at":"2025-03-24T07:32:24.247Z","avatar_url":"https://github.com/SpacingBat3.png","language":"TypeScript","readme":"\u003ctable class=\"alert-warn\" align=center\u003e\n\u003ctr\u003e\n    \u003ctd\u003e 🚧️ \u003c/td\u003e\n    \u003ctd\u003e\n        \u003cb\u003eA major rewrite of the client is being worked on!\u003c/b\u003e That means, most efforts around WebCord\n\twill be kept at minimum – there might be no time-intensive and major updates done on top\n\tof the existing code. However, WebCord should still receive maintenance updates along with\n\tnew features or improvements that don't cost investing too much of my time.\n    \u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003cp align='right'\u003e\u003csub\u003e\n  Znasz 🇵🇱? Przejdź \u003ca href='pl/Readme.md' title='Polski plik README'\u003etutaj\u003c/a\u003e.\n\u003c/sub\u003e\u003c/p\u003e\n\u003cdiv align='center'\u003e\n\u003ca href='https://github.com/SpacingBat3/WebCord' title=\"WebCord's GitHub Repository\"\u003e\n  \u003cpicture\u003e\n    \u003csource srcset='https://raw.githubusercontent.com/SpacingBat3/WebCord/master/sources/assets/icons/app.png'\u003e\n    \u003cimg src='../sources/assets/icons/app.png' height='192' alt=\"WebCord Logo\"\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n\n\u003c!-- BEGIN Readable part of the Readme file. --\u003e\n\n# WebCord\n\n[![CodeQL][codeql-badge]][codeql-url] [![Build][build-badge]][build-url]\n[![Weblate badge][l10nbadge]][l10n] [![GitHub downloads][dlbadge]][downloads]\n[![Discord server][discord-badge]][discord-url]\n\nA Discord and [Spacebar] client implemented directly without [Discord API][discordapi].\nMade in 🇵🇱 with the [Electron][electron] framework.\n\n\u003c/div\u003e\n\n## Philosophy / key features\n\nNowadays, WebCord is quite complex project; it can be summarized as a pack of\nsecurity and privacy hardenings, Discord features reimplementations, Electron /\nChromium / Discord bugs workarounds, stylesheets, internal pages and wrapped\n\u003chttps://discord.com\u003e page, designed to conform with ToS as much as it is\npossible (or hide the changes that might violate it from Discord's eyes). For\nall features, take a look at [Features.md](Features.md).\n\n - 🕵️ **Hardened for privacy**\n\nWebCord does a lot to improve the privacy of the users. It blocks known tracing\nand fingerprinting methods, but it does not end on it. It also manages the\npermissions to sensitive APIs like camera or microphone, sets its own user agent\nto the one present in Chromium browsers and spoof web API modifications in order\nto prevent distinguishing it from the real Chrome/Chromium browsers.\n\n- 🛡️ **Follows the best security practises**\n\nWebCord cares a lot about your security. Being fully written in TypeScript, it\nbrings the power of static types to help detecting common bugs without the need\nof testing the app at runtime. All of this is hardened by ESLint, which forbidds\nsome TypeScript practises like the use of `any` type and enforces some cosmetic\naspects of the code to keep it more consistent.\n\nUnlike the official Discord client, WebCord's policy about Electron also makes it\nto use the latest major release currently supported and available at the package\ntime. This makes WebCord use more up-to-date Electron releases with more recent\nChromium engine.\n\nBuilt on top Electron and Chromium, WebCord's security is also highly dependant\nfrom Chrome's [vulnerability rewards program][chromiumbounty], which is probably\none of the most known programs like this when comparing to different popular\nbrowser engines choices. Electron is also well-prepared for loading remote\ncontent, using their process model to the advantage and different Chromium\nsandboxing techniques to split Node.js from browser scripts. WebCord also tries\nits best to follow practises from the [Electron#Security].\n\n- 🛠️ **Customizable**\n\nWebCord can be configured to your needs and the preferences – you can harden it\neven more by blocking unnecesarry third-party websites in Content Security\nPolicy settings, improve your privacy by blocking typing indicator and much more!\nMoreover, a support for custom stylesheets is on its way, allowing you to theme\nWebCord the way you like!\n\n- 📱 **ARM-friendly and Linux mobile support**\n\nAlthough Electron is not designed to work on mobile devices, WebCord tries its\nbest to be responsive even on devices with the smaller screens and touch\nscreens. It's still not ideal, but should work for basic Discord usage. However\nI plan to focus on it someday and to make it look and work closer to the\nofficial Discord Android client.\n\n## Documentation:\n\nFor newcomers I recommend to read at least the [FAQ](FAQ.md) (to fix common issues and not report them as *bugs*). \nYou may also read [Features](Features.md) to know which features have been implemented and are supported. \nIt is strongly advised to read the [application license](../LICENSE) as well.\n\n- [List of WebCord's features](Features.md)\n- [Community maintained repositories providing WebCord](Repos.md)\n- [Frequently Asked Questions](FAQ.md)\n  - *[Which file I should download?](FAQ.md#1-which-file-i-should-download)*\n  - *[Content does not load properly...](FAQ.md#2-imagevideocontent-does-not-load-properly-is-there-anything-i-can-do-about-it)*\n  - *[How to grant permission to microphone?](FAQ.md#3-how-to-get-a-microphone-permission-for-webcord)*\n  - *[Why Electron?](FAQ.md#4-why-electron)*\n  - *[What about ToS?](FAQ.md#5-is-this-project-violating-discords-terms-of-service)*\n- [Command line / build flags](Flags.md)\n  - [Command line (runtime) flags](Flags.md#command-line-runtime-flags)\n  - [Build Flags](Flags.md#build-flags)\n- [Contributing in the application development](Contributing.md)\n- [Building, packaging and testing the source code](Build.md)\n  - [Installing app dependencies](Build.md#install-app-dependencies)\n  - [Compiling and directly running the code](Build.md#compile-code-and-run-app-directly-without-packaging)\n  - [Linting and validating the code](Build.md#run-linter-and-validate-the-code)\n  - [Packaging and creating the distributables](Build.md#packaging-creating-distributables)\n- [Source code directory structure](Files.md)\n- [Translations](Contributing.md#how-to-translate-webcord)\n- [Supported platforms](Support.md)\n- [License](../LICENSE)\n- [Privacy policy](Privacy.md)\n\n## History\n\nAt first, this project was a fork of the [Discord-Electron], but then eventually\nI rewrote it as *Electron Discord Web App* project, which is now\nrefered to as *WebCord*.\n\nAt its early days, it had a very simple concept: a better web app implementation\nthan Nativefier was, at least in terms of the features. Since I were too young\nto understand how to keep things private and secure, this project's code was\nfull of flaws. It was like that until `1.x.y`, when the privacy and the security\nof the code has slowly been shaping, with `1.2.0` being a major step forward,\nsince TypeScript was started to being adopted. Later, I've added the default\nlinter to the project's documentation and configured the rules for it and\nfocused on child window design, which added the *documentation*, *settings* and\n*about* windows to the Discord page. I've then also realized there's a serious issue with the current screen share\ndialog – it was injected to the page, meaing Discord could technically access\nthe windows' thumbnails and *simulate* the mouse click events to trigger sharing\nthe screen even without any interaction. This flaw was thankfully fixed thanks\nto the BrowserViews in more modern WebCord releases.\n\nWith the code quality, a new philosophies and goals has shaped for this project\n– it now approaches to wrap Discord website and develop its own UI (todo) for\nnon-Discord instances primarly based on the Discord API (might decide some\nday that WebCord will also support other APIs as well). With that, I want to\nreimplement Discord in a way it is a trully FOSS client, without any risk that\nusers will get banned by either breaking the ToS or being detected as self-bot\nbecause of the suspicious use of Discord REST API. This is what WebCord mainly\nfocuses to achieve nowadays.\n\nAnd it should be said that before I knew much about how Electron does work,\n[**@GyozaGuy**](https://github.com/GyozaGuy)'s project help me to begin on my\nown with developing a Discord webapp. Without his work, it is unknown whenever I\nwould begin developing WebCord or not.\n\n## Wiki pages\n\nBecause **GitHub Wiki Pages** of this project **are meant to be maintained by**\n**the community**, they should be considered as a potentially malicious or\nmisleading source of the information. It is recommended to read the official\ndocumentation first before you will proceed reading the community-maintained\nWiki pages.\n\n## License\nThis project is redistributed under the terms of **[MIT License][license]**:\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n\n## Want to contribute to my project?\n\nPlease take a look at [`Contributing.md`](./Contributing.md) – it describes more\nabout ways of giving your help to improve quality of WebCord. And for some tasks\nyou don't even need to be familiar with programming at all!\n\n[dlbadge]: https://img.shields.io/github/downloads/SpacingBat3/WebCord/total.svg?label=Downloads\u0026color=%236586B3\n[downloads]: https://github.com/SpacingBat3/WebCord/releases \"Releases\"\n[build-badge]: https://img.shields.io/github/actions/workflow/status/SpacingBat3/WebCord/build.yml?label=Build\u0026logo=github\u0026branch=master\u0026event=push\n[build-url]: https://github.com/SpacingBat3/WebCord/actions/workflows/build.yml \"Build state\"\n[l10nbadge]: https://hosted.weblate.org/widgets/webcord/-/svg-badge.svg\n[l10n]: https://hosted.weblate.org/engage/webcord/ \"Help at WebCord's localization\"\n[Sentry]: https://sentry.io \"Application Monitoring and Error Tracking Software\"\n[Discord-Electron]: https://github.com/GyozaGuy/Discord-Electron \"An Electron Discord app designed for use on Linux systems.\"\n[electron]: https://www.electronjs.org/ \"Build cross-platform desktop apps with JavaScript, HTML, and CSS.\"\n[electron-forge]: https://www.electronforge.io/ \"A complete tool for creating, publishing, and installing modern Electron applications.\"\n[license]: ../LICENSE \"WebCord license\"\n[Spacebar]: https://spacebar.chat \"Free, open source and selfhostable Discord compatible chat, voice and video platform.\"\n[discordapi]: https://discord.com/developers/docs/reference \"Official Discord REST API documentation\"\n[chromiumbounty]: https://bughunters.google.com/about/rules/5745167867576320/chrome-vulnerability-reward-program-rules \"Chrome Vulnerability Reward Program Rules\"\n[Electron#Security]: https://www.electronjs.org/docs/latest/tutorial/security \"Security | Electron Documentation\"\n[codeql-badge]: https://img.shields.io/github/actions/workflow/status/SpacingBat3/WebCord/codeql-analysis.yml?label=Analysis\u0026logo=github\u0026logoColor=white\u0026branch=master\u0026event=push\n[codeql-url]: https://github.com/SpacingBat3/WebCord/actions/workflows/codeql-analysis.yml \"CodeQL Analysis status\"\n[discord-badge]: https://img.shields.io/discord/972965161721811026?color=%2349a4d3\u0026label=Support\u0026logo=discord\u0026logoColor=white\n[discord-url]: https://discord.gg/aw7WbDMua5 \"Official support server on Discord!\"\n","funding_links":["https://github.com/sponsors/SpacingBat3"],"categories":["Clients","Video and Audio Conferencing","Applications","TypeScript","应用","discord"],"sub_categories":["Public Bots","Imgur","Chat Clients","聊天客户端"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSpacingBat3%2FWebCord","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSpacingBat3%2FWebCord","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSpacingBat3%2FWebCord/lists"}