{"id":13406522,"url":"https://github.com/netless-io/flat","last_synced_at":"2025-05-14T00:08:45.155Z","repository":{"id":36972139,"uuid":"290373467","full_name":"netless-io/flat","owner":"netless-io","description":"Project flat is the Web, Windows and macOS client of Agora Flat open source classroom.","archived":false,"fork":false,"pushed_at":"2025-04-30T23:26:03.000Z","size":81851,"stargazers_count":5877,"open_issues_count":10,"forks_count":829,"subscribers_count":76,"default_branch":"main","last_synced_at":"2025-05-06T10:25:59.232Z","etag":null,"topics":["agora","agora-flat","cloud-recording","e-class","e-learning","electron","flat","online-classroom","virtual-classroom","whiteboard"],"latest_commit_sha":null,"homepage":"https://flat.whiteboard.agora.io","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/netless-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-08-26T02:21:53.000Z","updated_at":"2025-05-06T00:41:41.000Z","dependencies_parsed_at":"2024-01-15T22:42:34.452Z","dependency_job_id":"121572f0-e758-4212-a8fc-86fa8fc67be5","html_url":"https://github.com/netless-io/flat","commit_stats":{"total_commits":2331,"total_committers":35,"mean_commits":66.6,"dds":0.7142857142857143,"last_synced_commit":"5ee45b597a888bde56c7fa5c2b1a2320f9dbfd3e"},"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netless-io%2Fflat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netless-io%2Fflat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netless-io%2Fflat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netless-io%2Fflat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netless-io","download_url":"https://codeload.github.com/netless-io/flat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253465864,"owners_count":21913057,"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":["agora","agora-flat","cloud-recording","e-class","e-learning","electron","flat","online-classroom","virtual-classroom","whiteboard"],"created_at":"2024-07-30T19:02:32.536Z","updated_at":"2025-05-14T00:08:40.146Z","avatar_url":"https://github.com/netless-io.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg width=\"92\" height=\"92\" style=\"display: block;\" src=\"./assets/flat-logo.svg\"\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/netless-io/flat?color=9cf\u0026style=flat-square\"\u003e\n    \u003cimg alt=\"GitHub repo size\" src=\"https://img.shields.io/github/repo-size/netless-io/flat?color=9cf\u0026style=flat-square\"\u003e\n    \u003cimg alt=\"GitHub commit activity\" src=\"https://img.shields.io/github/commit-activity/m/netless-io/flat?color=9cf\u0026style=flat-square\"\u003e\n    \u003ca target=\"_blank\" href=\"https://github.com/netless-io/flat/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22\"\u003e\n        \u003cimg alt=\"GitHub issues by-label\" src=\"https://img.shields.io/github/issues/netless-io/flat/good%20first%20issue?color=9cf\u0026label=good%20first%20issue\u0026style=flat-square\"\u003e\n    \u003c/a\u003e\n    \u003cbr\u003e\n    \u003ca target=\"_blank\" href=\"https://twitter.com/AgoraFlat\"\u003e\n    \u003cimg alt=\"Twitter URL\" src=\"https://img.shields.io/badge/Twitter-AgoraFlat-9cf.svg?logo=twitter\u0026style=flat-square\"\u003e\n    \u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://github.com/netless-io/flat/issues/926\"\u003e\n        \u003cimg alt=\"Slack URL\" src=\"https://img.shields.io/badge/Slack-AgoraFlat-9cf.svg?logo=slack\u0026style=flat-square\"\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003eAgora Flat\u003c/h1\u003e\n    \u003cp\u003eProject flat is the Web, Windows and macOS client of \u003ca href=\"https://flat.agora.io/\"\u003eAgora Flat\u003c/a\u003e open source classroom.\u003c/p\u003e\n    \u003cp\u003e\u003ca href=\"./docs/readme/README-zh.md\"\u003e中文\u003c/a\u003e\u003c/p\u003e\n    \u003cimg src=\"./assets/flat-showcase-en.png\"\u003e\n\u003c/div\u003e\n\n## Features\n\n-   Real-time interaction\n    -   Multifunctional interactive whiteboard\n    -   Real-time video/audio chat (RTC)\n    -   Real-time messaging (RTM)\n-   Login via\n    -   GitHub\n    -   WeChat\n-   Classroom management\n    -   Join, create and schedule classrooms\n    -   Support periodic rooms\n-   Classroom recording and replaying\n    -   Whiteboard replaying\n    -   Cloud recording for video and audio\n    -   Messaging replaying\n-   Cloud Storage for multi-media courseware\n-   Screen sharing\n\n## Quickstart\n\nYou can build and run the Flat client without a server. This repository includes the following projects:\n\n-   [Flat Electron client](./desktop) is an Electron implementation of Flat client.\n-   [Flat Web client](./web) is a web implementation of Flat client.\n\n### Installation\n\n\u003e If you don't have pnpm installed:\n\u003e\n\u003e ```bash\n\u003e npm i -g pnpm\n\u003e ```\n\nClone or fork this project, at project root run:\n\n```bash\npnpm i\n```\n\n### Build and run Flat Electron client\n\nRun the following commands at the root of the repository to build and run Flat Electron client.\n\n```shell\npnpm start\n```\n\nYou can use one of the following methods to package your executable:\n\n-   Run `pnpm ship` at project root to package based on current system.\n-   Alternatively, run `pnpm ship:mac` or `pnpm ship:win` at project root to package for a specified system.\n\n### Build and run Flat Web client\n\nRun the following command at the root of the repository to build and run Flat web client.\n\n```shell\npnpm start:web\n```\n\nAlternatively, run the following command:\n\n```shell\ncd ./web/flat-web/ \u0026\u0026 pnpm start\n```\n\nUI and business logic are separated in Flat. You can view and develop Flat components UI via Storybook. You can either visit the ([Online address][flat-storybook]) or run `pnpm storybook` at the root of the repository to run Storybook locally.\n\n## References\n\n-   [Release Version Description](docs/releases)\n-   [Environment Variables Reference](docs/env/README.md)\n-   [Debugging Flat](docs/debugging/README.md)\n\n## Related Projects\n\n-   [Flat Android client][flat-android]\n-   [Flat Server][flat-server]\n-   [Flat Website HomePage][flat-homepage]\n\n## Contributing\n\nWriting code is great, but there are many other ways to make meaningful contributions to the project:\n\n-   [Improve documentation](CONTRIBUTING.md#improve-documentation)\n-   [Improve issues](CONTRIBUTING.md#improve-issues)\n-   [Give feedback on issues](CONTRIBUTING.md#give-feedback-on-issues)\n\nFor more info about how to contribute, see [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Code Contributors\n\nThank you to all the people who already contributed to Flat!\n\n\u003ca href=\"https://github.com/netless-io/flat/graphs/contributors\"\u003e\u003cimg src=\"https://opencollective.com/agora-flat/contributors.svg?width=890\u0026button=false\"/\u003e\u003c/a\u003e\n\n## Disclaimer\n\nYou may use Flat for commercial purposes but please note that we do not accept customizational commercial requirements and deployment supports. Nor do we offer customer supports for commercial usage. Please head to [Flexible Classroom](https://www.agora.io/en/products/flexible-classroom) for such requirements.\n\n## License\n\nCopyright © Agora Corporation. All rights reserved.\n\nLicensed under the [MIT license](LICENSE).\n\nWhen using the Flat or other GitHub logos, be sure to follow the [GitHub logo guidelines][github-logo].\n\n[flat-homepage]: https://flat.agora.io/#download\n[flat-web]: https://web.flat.agora.io/\n[flat-server]: https://github.com/netless-io/flat-server\n[flat-android]: https://github.com/netless-io/flat-android\n[flat-storybook]: https://netless-io.github.io/flat/\n[github-logo]: https://github.com/logos\n","funding_links":[],"categories":["TypeScript","electron","Education","Table of Contents","Work"],"sub_categories":["Canvas"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetless-io%2Fflat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetless-io%2Fflat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetless-io%2Fflat/lists"}