 
Project flat is the Web(under development), Windows and macOS client of Agora Flat open source classroom.
 
- Optimized teaching experience
- Big class
- Small class
- One on one
 
- Real-time interaction
- Multifunctional interactive whiteboard
- Real-time video/audio chat(RTC)
- Real-time messaging(RTM)
- Participant hand raising
 
- Login via
- GitHub
 
- Classroom management
- Join, create and schedule classrooms
- Support periodic rooms
- View room history
 
- Classroom recording and replaying
- Whiteboard replaying
- Cloud recording for video and audio
- Messaging replaying
 
- Cloud Storage for multi-media courseware
- Device self-check
- Auto Updater
UI and business logic are separated in Flat. You can run flat with full build or quickly develop UI via Storybook.
Note that full-built Flat requires Agora Flat Server backend.
- Create two files config/.env.development.localandconfig/.env.production.local.
- Add environment variables following the config/.envformat.
- See Environment Variables Reference bellow.
- See Files under version control for more about .env.* naming.
- Fork this repo so that Github Actions can work properly.
- Then git clonethe forked repo to local.
- At project root:
yarn install --frozen-lockfile 
Run yarn start at project root.
- Run yarn shipat project root to package base on current system type.
- Or run yarn ship:macoryarn ship:winat project root to package for the specified system.
Many Flat components UI can be quickly viewed and developed via Storybook (Online address).
- Run yarn --cwd packages/flat-components storybookat project root to run Storybook locally.
| Variable | Description | Note | 
|---|---|---|
| NETLESS_APP_IDENTIFIER | Whiteboard Access Key | See Projects and permissions | 
| AGORA_APP_ID | Agora App ID | For RTC and RTM. See Use an App ID for authentication | 
| CLOUD_STORAGE_OSS_ALIBABA_ACCESS_KEY | Agora Cloud Recording OSS | For storing RTC Cloud Recording media files. See 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 | 
| WECHAT_APP_ID | Wechat Open Platform 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: yesorno | 
| APPLE_API_ISSUER | Apple notarizing issuer. Skip notarizing if not provided | See: electron-updater | 
| APPLE_API_KEY | Apple notarizing key. Skip notarizing if not provided | See: 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 |