|
1 | | -# Frappe Meet |
| 1 | +<div align="center"> |
2 | 2 |
|
3 | | -A video conferencing app built with Frappe. |
| 3 | +<a href="https://github.com/frappe/meet"> |
| 4 | + <img src="https://raw.githubusercontent.com/frappe/meet/develop/frontend/public/meet_logo.png" height="80" alt="Frappe Meet Logo"> |
| 5 | +</a> |
4 | 6 |
|
5 | | -## Architecture |
| 7 | +<h1>Frappe Meet</h1> |
6 | 8 |
|
7 | | -``` |
8 | | -┌─────────────┐ HTTP/WS ┌─────────────────────┐ |
9 | | -│ Client │ ◄─────────────► │ Frappe Server │ |
10 | | -│ (Frontend) │ │ (Auth, Perms etc) │ |
11 | | -│ │ └─────────────────────┘ |
12 | | -│ │ |
13 | | -│ │ Socket.IO (JWT Auth) |
14 | | -│ │ ◄────────────────────────────────┐ |
15 | | -└─────────────┘ │ |
16 | | - ▼ |
17 | | - ┌─────────────┐ |
18 | | - │ SFU Server │ |
19 | | - │ (mediasoup) │ |
20 | | - └─────────────┘ |
21 | | -``` |
| 9 | +**Simple, High Quality Video Conferencing** |
22 | 10 |
|
23 | | -### Components |
| 11 | +</div> |
24 | 12 |
|
25 | | -1. **Client (Frontend)**: Vue.js application with WebRTC capabilities and direct SFU communication |
26 | | -2. **Frappe Server**: Handles authentication, permissions, and meeting management |
27 | | -3. **SFU Server (mediasoup)**: Handles transports, producers/consumers and media routing. |
| 13 | +> [!WARNING] |
| 14 | +> Frappe Meet is an alpha product and is not yet ready for production! |
28 | 15 |
|
29 | | -### Prerequisites |
| 16 | +## Frappe Meet |
30 | 17 |
|
31 | | -- Frappe Framework (v15+) |
32 | | -- Node.js 18+ (recommended for mediasoup) |
33 | | -- Python 3.10+ |
34 | | -- System deps for mediasoup (libc++, libsrtp, etc.) |
| 18 | +Frappe Meet is a video conferencing app built with simplicity, quality, and reliability in mind. |
35 | 19 |
|
36 | | -### 1. Install the Frappe App |
| 20 | +### Key Features |
37 | 21 |
|
38 | | -```bash |
39 | | -cd $PATH_TO_YOUR_BENCH |
40 | | -bench get-app $URL_OF_THIS_REPO --branch develop |
41 | | -bench install-app meet |
42 | | -``` |
| 22 | +- **High-quality meetings:** Low-latency, scalable multi-party video with adaptive streaming. |
| 23 | +- **Meeting Management:** Create meetings and control meeting access for guests, participants, or hosts. |
| 24 | +- **Multimedia features:** Features like background effects, noise suppression, and push-to-talk elevate the meeting experience. |
43 | 25 |
|
44 | | -### 2. Setup SFU Server |
| 26 | +### Under the Hood |
45 | 27 |
|
46 | | -```bash |
47 | | -# Navigate to SFU server directory |
48 | | -cd apps/meet/sfu-server |
| 28 | +- [Mediasoup](https://github.com/versatica/mediasoup): Cutting Edge WebRTC Video Conferencing. |
| 29 | +- [Frappe Framework](https://github.com/frappe/frappe): A full-stack web application framework. |
| 30 | +- [Frappe UI](https://github.com/frappe/frappe-ui): A Vue-based UI library, to provide a modern user interface. |
49 | 31 |
|
50 | | -# Install dependencies (including new JWT support) |
51 | | -npm install |
52 | | - |
53 | | -cp .env.example .env |
54 | | -# Minimum required settings in .env: |
55 | | -# JWT_SECRET=your_jwt_secret_here |
56 | | -# PORT=3000 |
57 | | -# HOST=0.0.0.0 |
58 | | -# WEBRTC_ANNOUNCED_IP=<public_ip_or_domain> |
59 | | - |
60 | | -# Start SFU server |
61 | | -npm start |
62 | | -``` |
63 | | - |
64 | | -### 3. Configure Frappe Site |
65 | | - |
66 | | -Add to your site config: |
67 | | - |
68 | | -Add to `site_config.json` (values must match SFU): |
69 | | - |
70 | | -```jsonc |
71 | | -{ |
72 | | - "sfu_secret": "your_jwt_secret_here", |
73 | | - "sfu_server_url": "https://your-domain.example" |
74 | | -} |
75 | | -``` |
76 | | - |
77 | | -### 4. Build Frontend |
78 | | - |
79 | | -```bash |
80 | | -cd apps/meet/frontend |
81 | | -yarn install |
82 | | -yarn build |
83 | | -``` |
84 | | - |
85 | | -### Contributing |
86 | | - |
87 | | -This app uses `pre-commit` for code formatting and linting. Please [install pre-commit](https://pre-commit.com/#installation) and enable it for this repository: |
88 | | - |
89 | | -```bash |
90 | | -cd apps/meet |
91 | | -pre-commit install |
92 | | -``` |
93 | | - |
94 | | -Pre-commit is configured to use the following tools for checking and formatting your code: |
95 | | - |
96 | | -- ruff |
97 | | -- eslint |
98 | | -- prettier |
99 | | -- pyupgrade |
100 | | - |
101 | | -### CI |
102 | | - |
103 | | -This app can use GitHub Actions for CI. The following workflows are configured: |
104 | | - |
105 | | -- CI: Installs this app and runs unit tests on every push to `develop` branch. |
106 | | -- Linters: Runs [Frappe Semgrep Rules](https://github.com/frappe/semgrep-rules) and [pip-audit](https://pypi.org/project/pip-audit/) on every pull request. |
107 | 32 |
|
108 | 33 | ### License |
109 | 34 |
|
110 | 35 | AGPL-3.0 |
| 36 | + |
| 37 | +<br> |
| 38 | +<br> |
| 39 | +<div align="center"> |
| 40 | + <a href="https://frappe.io" target="_blank"> |
| 41 | + <picture> |
| 42 | + <source media="(prefers-color-scheme: dark)" srcset="https://frappe.io/files/Frappe-white.png"> |
| 43 | + <img src="https://frappe.io/files/Frappe-black.png" alt="Frappe Technologies" height="28"/> |
| 44 | + </picture> |
| 45 | + </a> |
| 46 | +</div> |
0 commit comments