Watch your favorite shows and movies in real-time with friends!
Check It Out
·
Report Bug
·
Request Feature
TurtleTV was made with the goal of making it as easy as possible to have a virtual watch party. Hosting a watch party with friends or loved ones can be done in as little as two steps!
- Supports a variety of video URLs:
- YouTube
- Netflix**
- direct URLs ending in .mp4, .webm, .ogv, .mp3, and .m3u8
- Vimeo
- Streamable
- Available on Chromium browsers (Chrome, Firefox, Edge) and Safari, on both mobile and desktop
- Chat interface
**Netflix playback requires installation of the browser extension, available only on Chrome and Firefox
Frameworks and technologies were chosen with simplicity in mind, as well as the possibility of platform agnostic.
- Ionic Framework
- starter app was made from Ionic CLI
- Ionic UI library used in most UI components
- used to deploy iOS and Android projects (not yet implemented)
- React + Typescript
- most development was done with this combination
- Firebase
- User Authentication (anonymous)
- Firestore and Realtime Database used as databases
- Firebase Hosting for web hosting
- Cloud Functions for database maintenance (not yet implemented)
- Javascript
- Used to develop browser extension
Overview of how to run the project locally (instructions are a work in progress).
- npm
npm install npm@latest -g
- Clone the repo
git clone https://github.com/shuang854/Turtle.git
- Install NPM packages
npm install
-
Create src/services/firebase.ts file
Firebase credentials have been omitted from this repository for security reasons. Instead, link the credentials from your own Firebase project.
src/services/firebase.ts
import firebase from 'firebase/app';
import 'firebase/database';
import 'firebase/firestore';
import 'firebase/auth';
import 'firebase/analytics';
var firebaseConfig = {
apiKey: 'yourApiKey',
authDomain: 'yourAuthDomain',
databaseURL: 'yourDatabaseURL',
projectId: 'yourProjectId',
storageBucket: 'yourStorageBucket',
messagingSenderId: 'yourMessagingSenderId',
appId: 'yourAppId',
measurementId: 'yourMeasurementId',
};
firebase.initializeApp(firebaseConfig);
firebase.analytics();
export const db = firebase.firestore();
export const rtdb = firebase.database();
export const auth = firebase.auth();
export const timestamp = firebase.firestore.FieldValue.serverTimestamp();
export const currTime = firebase.firestore.Timestamp.fromDate(new Date());
export const sessionPersist = firebase.auth.Auth.Persistence.SESSION;
export const increment = firebase.database.ServerValue.increment(1);
export const decrement = firebase.database.ServerValue.increment(-1);
export const arrayUnion = (object: any) => {
return firebase.firestore.FieldValue.arrayUnion(object);
};
See the open issues for a list of proposed features (and known issues).
- iOS and Android apps
- Microphone/Webcam support
- Support for more streaming services
Any contributions would be greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
To be determined
Simon Huang - [email protected]
Discord Link: https://discord.gg/NEw3Msu