PlayTogether is a WebRTC-based shared media player. Written in Flutter, it allows you to enjoy your local media with your friends in real-time while having a video call with them 📹📷
⚠️ Note: The app only uses a STUN
server right now, therefore you can only connect to the peers on your same/local network. So make sure to use the same WiFi/LAN when using the app.
Feature | Screenshot |
---|---|
Video Demo | PlayTogether.Demo.mp4 |
Authentication | |
Dashboard | |
Profile | |
Incoming Call | |
Video Call |
This project uses FVM to lock onto a specific Flutter version. Right now, it uses Flutter 3.22.3
, so please make sure to set up FVM on your system and run pub use 3.22.3
before starting up the project.
This app uses Firebase, make sure to use flutterfire to set up your own Firebase project with this app.
This project also uses the following environment variables using envied:
GOOGLE_CLIENT_ID
- You can find this in your Google Cloud Platform console (from theAPIs & Services
>Credentials
tab)GOOGLE_CLIENT_SECRET
- You can find this in your Google Cloud Platform console (from theAPIs & Services
>Credentials
tab)
Therefore please make sure to manually create an .env
file in the root of the project that has the following content (replace values with your own):
GOOGLE_CLIENT_ID=90xxxx298xxx-xxxxxgv1a9bxxxxxxtb4fthxxxxxxlg6.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxx99KnByxxxxxxxSuLhvpxxx
If you are a viewer/user and want to install the provided MSIX file (in releases) on your Windows system, please follow this guide to install the certificate to be able to do so:
- Select
Properties
from the right-click menu of the MSIX package. - Go to the
Digital Signature
tab. - From the
Signature List
choose the certificate. - Click on
Details
. - Click on
View Certificate
. - Click
Install Certificate
. - Choose Local Machine from Store Location.
- Allow the app to install certificates.
- Choose Place all certificates in the following store.
- Click Browse and select
Trusted People
. - Click
OK
and ClickNext
then ClickFinish
- Then you should see a popup window with the message
Import was successful
All builds are supposed to be debug
builds because the app does NOT run in profile
or release
mode due to the following issue (possibly because of the media_kit
library):
fatal error LNK1120: 7 unresolved externals
Ref: flutter/flutter#32746
Therefore, the only way to differentiate between builds is by its flavor
, i.e. either development
or production
. And since there is no way to set flavor
via the msix:create
command, we are defaulting to production
if no flavor values are passed, and to run the development
flavor, you will have to pass --dart-define FLAVOR=development
flag to your flutter run
command (in VSCode, you can do it by writing "args": ["--dart-define", "FLAVOR=development"] inside your configuration(s)).
-
Generate your own MSIX signing certificate using MSIX Hero app on Microsoft Store. Open the app, tap on
Tools
, and underCERTIFICATES AND SIGNING
category, selectCreate self-signed certificate
. Enter your details and it should generate a.cer
and a.pfx
files in your user'sDocuments\Certificates
folder. -
Once the certificate is generated, set up the MSIX pub package and after setting it up, execute the following commands in PowerShell:
fvm dart run msix:create --debug --certificate-path {YOUR_FILE_PATH} --certificate-password {YOUR_PASSWORD}
Here, {YOUR_FILE_PATH}
refers to the complete path of your .pfx
certificate file. For example: C:\Users\shubh\Documents\Certificates\PlayTogether.pfx
and {YOUR_PASSWORD}
refers to the password you used with MSIX Hero
to generate this certificate file.
- fvm dart run build_runner watch --delete-conflicting-outputs
- firebase emulators:start
- fvm flutter pub upgrade --major-versions; fvm flutter pub upgrade --tighten