Skip to content
Kai edited this page Nov 21, 2023 · 16 revisions
lambiengcode

Waterbus: Online Meeting App using Flutter and WebRTC SFU (Selective Forwarding Unit)

This is an Online Meeting App that utilizes Flutter and WebRTC technologies to provide users with a platform to conduct virtual meetings, conferences, and webinars. The app is built to provide seamless audio and video communication, as well as screen sharing, chat functionality, and file sharing.

The Waterbus concept has been used for physical transportation, but it can also be applied to online meeting platforms. A virtual Waterbus platform would allow users to travel along a virtual route and stop at designated locations to attend meetings. The platform could also incorporate gamification elements for increased engagement. This approach provides a unique and fun way for remote teams to collaborate while acknowledging the trend of using waterways for transportation.

Online Meeting Diagram

lambiengcode

πŸ“‚ Repository Structure

└── waterbus/
    β”œβ”€β”€ .githooks/
    β”‚   β”œβ”€β”€ pre-commit
    β”‚   └── pre-push
    β”œβ”€β”€ .github/
    β”‚   β”œβ”€β”€ FUNDING.yml
    β”‚   β”œβ”€β”€ ISSUE_TEMPLATE/
    β”‚   β”œβ”€β”€ dependabot.yml
    β”‚   └── workflows/
    β”‚       β”œβ”€β”€ ci.yml
    β”‚       └── release.yml
    β”œβ”€β”€ .metadata
    β”œβ”€β”€ analysis_options.yaml
    β”œβ”€β”€ android/
    β”‚   β”œβ”€β”€ app/
    β”‚   β”‚   β”œβ”€β”€ build.gradle
    β”‚   β”‚   β”œβ”€β”€ google-services.json
    β”‚   β”‚   β”œβ”€β”€ proguard-rules.pro
    β”‚   β”‚   └── src/
    β”‚   β”œβ”€β”€ build.gradle
    β”‚   β”œβ”€β”€ gradle/
    β”‚   β”‚   └── wrapper/
    β”‚   └── settings.gradle
    β”œβ”€β”€ benchmark/
    β”‚   β”œβ”€β”€ benchmark.txt
    β”‚   └── plot_benchmark_results.gp
    β”œβ”€β”€ codecov.yml
    β”œβ”€β”€ ios/
    β”‚   β”œβ”€β”€ BroadcastAppGroup/
    β”‚   β”‚   └── BroadcastAppGroupHandler.swift
    β”‚   β”œβ”€β”€ BroadcastWaterbus/
    β”‚   β”‚   β”œβ”€β”€ Atomic.swift
    β”‚   β”‚   β”œβ”€β”€ BroadcastWaterbus.entitlements
    β”‚   β”‚   β”œβ”€β”€ DarwinNotificationCenter.swift
    β”‚   β”‚   β”œβ”€β”€ Info.plist
    β”‚   β”‚   β”œβ”€β”€ SampleHandler.swift
    β”‚   β”‚   β”œβ”€β”€ SampleUploader.swift
    β”‚   β”‚   └── SocketConnection.swift
    β”‚   β”œβ”€β”€ Flutter/
    β”‚   β”‚   β”œβ”€β”€ AppFrameworkInfo.plist
    β”‚   β”‚   β”œβ”€β”€ Debug.xcconfig
    β”‚   β”‚   └── Release.xcconfig
    β”‚   β”œβ”€β”€ Podfile
    β”‚   β”œβ”€β”€ Podfile.lock
    β”‚   β”œβ”€β”€ Runner/
    β”‚   β”‚   β”œβ”€β”€ AppDelegate.swift
    β”‚   β”‚   β”œβ”€β”€ Assets.xcassets/
    β”‚   β”‚   β”œβ”€β”€ Base.lproj/
    β”‚   β”‚   β”œβ”€β”€ GoogleService-Info.plist
    β”‚   β”‚   β”œβ”€β”€ Info.plist
    β”‚   β”‚   β”œβ”€β”€ Runner-Bridging-Header.h
    β”‚   β”‚   └── Runner.entitlements
    β”‚   β”œβ”€β”€ Runner.xcodeproj/
    β”‚   β”‚   β”œβ”€β”€ project.pbxproj
    β”‚   β”‚   β”œβ”€β”€ project.xcworkspace/
    β”‚   β”‚   └── xcshareddata/
    β”‚   β”œβ”€β”€ Runner.xcworkspace/
    β”‚   β”‚   β”œβ”€β”€ contents.xcworkspacedata
    β”‚   β”‚   └── xcshareddata/
    β”‚   └── clean-pods.sh
    β”œβ”€β”€ launcher_icon_setup.yaml
    β”œβ”€β”€ lib/
    β”‚   β”œβ”€β”€ core/
    β”‚   β”‚   β”œβ”€β”€ app/
    β”‚   β”‚   β”œβ”€β”€ constants/
    β”‚   β”‚   β”œβ”€β”€ error/
    β”‚   β”‚   β”œβ”€β”€ helpers/
    β”‚   β”‚   β”œβ”€β”€ injection/
    β”‚   β”‚   β”œβ”€β”€ navigator/
    β”‚   β”‚   β”œβ”€β”€ types/
    β”‚   β”‚   β”œβ”€β”€ usecase/
    β”‚   β”‚   └── utils/
    β”‚   β”œβ”€β”€ features/
    β”‚   β”‚   β”œβ”€β”€ app/
    β”‚   β”‚   β”œβ”€β”€ auth/
    β”‚   β”‚   β”œβ”€β”€ chats/
    β”‚   β”‚   β”œβ”€β”€ common/
    β”‚   β”‚   β”œβ”€β”€ conversation/
    β”‚   β”‚   β”œβ”€β”€ home/
    β”‚   β”‚   β”œβ”€β”€ meeting/
    β”‚   β”‚   β”œβ”€β”€ notifications/
    β”‚   β”‚   β”œβ”€β”€ profile/
    β”‚   β”‚   β”œβ”€β”€ schedule/
    β”‚   β”‚   └── settings/
    β”‚   β”œβ”€β”€ gen/
    β”‚   β”‚   β”œβ”€β”€ assets.gen.dart
    β”‚   β”‚   └── fonts.gen.dart
    β”‚   └── main.dart
    β”œβ”€β”€ packages/
    β”‚   β”œβ”€β”€ auth/
    β”‚   β”‚   β”œβ”€β”€ .metadata
    β”‚   β”‚   β”œβ”€β”€ analysis_options.yaml
    β”‚   β”‚   β”œβ”€β”€ lib/
    β”‚   β”‚   β”œβ”€β”€ pubspec.yaml
    β”‚   β”‚   └── test/
    β”‚   └── sizer/
    β”‚       β”œβ”€β”€ .metadata
    β”‚       β”œβ”€β”€ analysis_options.yaml
    β”‚       β”œβ”€β”€ lib/
    β”‚       └── pubspec.yaml
    β”œβ”€β”€ pubspec.lock
    β”œβ”€β”€ pubspec.yaml
    β”œβ”€β”€ run.sh
    β”œβ”€β”€ screenshots/
    β”œβ”€β”€ splash-setup.yaml
    β”œβ”€β”€ test/
    β”‚   β”œβ”€β”€ constants/
    β”‚   β”‚   └── sample_file_path.dart
    β”‚   β”œβ”€β”€ features/
    β”‚   β”‚   β”œβ”€β”€ auth/
    β”‚   β”‚   β”œβ”€β”€ meeting/
    β”‚   β”‚   └── profile/
    β”‚   └── fixtures/
    β”‚       β”œβ”€β”€ auth/
    β”‚       β”œβ”€β”€ fixture_reader.dart
    β”‚       └── meeting/
Clone this wiki locally