# flat
**Repository Path**: unicode233/Agora-Flat
## Basic Information
- **Project Name**: flat
- **Description**: fork@ https://github.com/netless-io/flat
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2021-08-11
- **Last Updated**: 2021-08-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Agora Flat
Project flat is the Web, Windows and macOS client of Agora Flat open source classroom.
中文
## Try it now
- [Start using Flat Web][flat-web]
- [Download artifact][flat-homepage]
- [Flat Components Storybook][flat-storybook]
## Features
- Open sourced front-end and back-end
- [x] [Flat Web][flat-web]
- [x] Flat Desktop ([Windows][flat-homepage] and [macOS][flat-homepage])
- [x] [Flat Android][flat-android]
- [x] [Flat Server][flat-server]
- Optimized teaching experience
- [x] Big class
- [x] Small class
- [x] One on one
- Real-time interaction
- [x] Multifunctional interactive whiteboard
- [x] Real-time video/audio chat(RTC)
- [x] Real-time messaging(RTM)
- [x] Participant hand raising
- Login via
- [x] Wechat
- [x] GitHub
- [ ] Google
- Classroom management
- [x] Join, create and schedule classrooms
- [x] Support periodic rooms
- [x] View room history
- Classroom recording and replaying
- [x] Whiteboard replaying
- [x] Cloud recording for video and audio
- [x] Messaging replaying
- [x] Cloud Storage for multi-media courseware
- [x] Device self-check
- [x] Auto Updater
## Development
UI and business logic are separated in Flat. You can run flat with [development mode](#development-mode) or quickly develop UI via [Storybook](#storybook).
### Installation
At project root:
```shell
yarn run bootstrap
```
### Development Mode
At project root:
```shell
yarn run start
```
### Package Executable
- Run `yarn ship` at project root to package base on current system type.
- Or run `yarn ship:mac` or `yarn ship:win` at project root to package for the specified system.
## Storybook
Many Flat components UI can be quickly viewed and developed via Storybook ([Online address][flat-storybook]).
- Run `yarn --cwd packages/flat-components storybook` at project root to run Storybook locally.
## Environment Variables Reference
| Variable | Description | Note |
| ------------------------------------ | -------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| NETLESS_APP_IDENTIFIER | Whiteboard Access Key | See [Projects and permissions][netless-auth] |
| AGORA_APP_ID | Agora App ID | For RTC and RTM. See [Use an App ID for authentication][agora-app-id-auth] |
| CLOUD_STORAGE_OSS_ALIBABA_ACCESS_KEY | Agora Cloud Recording OSS | For storing RTC Cloud Recording media files. See [Cloud Recording][cloud-recording] |
| CLOUD_STORAGE_OSS_ALIBABA_BUCKET | Agora Cloud Recording OSS | As above |
| CLOUD_STORAGE_OSS_ALIBABA_REGION | Agora Cloud Recording OSS | As above |
| CLOUD_RECORDING_DEFAULT_AVATAR | Agora Cloud Recording default user avatar URL | See: [Set the background color or background image][cloud-recording-background] |
| WECHAT_APP_ID | [Wechat Open Platform][open-wechat] App ID | |
| FLAT_SERVER_DOMAIN | Flat Server deployed address | e.g. `flat-api.whiteboard.agora.io` |
| UPDATE_DOMAIN | Flat upgrade OSS address for storing artifacts | e.g. `https://flat-storage.oss-cn-hangzhou.aliyuncs.com/versions` |
| SKIP_MAC_NOTARIZE | Whether to skip the mac notarization step | value: `yes` or `no` |
| APPLE_API_ISSUER | Apple notarizing issuer. Skip notarizing if not provided | See: [electron-updater][electron-updater] |
| APPLE_API_KEY | Apple notarizing key. Skip notarizing if not provided | See: [electron-updater][electron-updater] |
| WINDOWS_CODE_SIGNING_CA_PATH | Windows Code Signing CA file path. Skip if not provided | Relative to `desktop/main-app` |
| WINDOWS_CODE_SIGNING_CA_PASSWORD | Windows Code Signing CA password. Skip if not provided | |
[flat-homepage]: https://flat.whiteboard.agora.io/en/#download
[flat-web]: https://flat-web.whiteboard.agora.io/
[flat-server]: https://github.com/netless-io/flat-server
[flat-android]: https://github.com/netless-io/flat-android
[flat-storybook]: https://netless-io.github.io/flat/storybook/
[open-wechat]: https://open.weixin.qq.com/
[netless-auth]: https://docs.agora.io/en/whiteboard/generate_whiteboard_token_at_app_server?platform=RESTful
[agora-app-id-auth]: https://docs.agora.io/en/Agora%20Platform/token#a-name--appidause-an-app-id-for-authentication
[cloud-recording]: https://docs.agora.io/en/cloud-recording/cloud_recording_api_rest?platform=RESTful#storageConfig
[cloud-recording-background]: https://docs.agora.io/en/cloud-recording/cloud_recording_layout?platform=RESTful#background
[electron-updater]: https://github.com/electron-userland/electron-builder/tree/master/packages/electron-updater