diff --git a/README.md b/README.md index 074f209..f0f9f00 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,191 @@ -# Turtle -Watch movies/shows together + +
+

+ + Turtle + -Made with Ionic + React + Firebase, uses [React Player](https://github.com/CookPete/react-player) +

TurtleTV

+ +

+ Watch your favorite shows and movies in real-time with friends! +
+ Check It Out + · + Report Bug + · + Request Feature +

+

+ + + +## Table of Contents + +- [About the Project](#about-the-project) + - [Features](#features) + - [Built With](#built-with) +- [Local Setup](#local-setup) + - [Prerequisites](#prerequisites) + - [Installation](#installation) +- [Roadmap](#roadmap) +- [Contributing](#contributing) +- [License](#license) +- [Contact](#contact) +- [Acknowledgements](#acknowledgements) + +## About The Project + +![A Turtle Room][product-screenshot] + +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! + +### Features + +- Supports a variety of video URLs: + - YouTube + - Netflix\*\* + - direct URLs ending in .mp4, .webm, .ogv, .mp3, and .m3u8 + - Facebook + - 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 + +### Built With + +Frameworks and technologies were chosen with simplicity in mind, as well as the possibility of platform agnostic. + +- [Ionic Framework](https://ionicframework.com/) + - 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](https://reactjs.org/) + Typescript + - most development was done with this combination +- [Firebase](https://firebase.google.com/) + - 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 + +## Local Setup + +Overview of how to run the project locally (instructions are a work in progress). + +### Prerequisites + +- npm + +```sh +npm install npm@latest -g +``` + +### Installation + +1. Clone the repo + +```sh +git clone https://github.com/shuang854/Turtle.git +``` + +2. Install NPM packages + +```sh +npm install +``` + +3. [Start a new Firebase project](https://console.firebase.google.com/) + +4. 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_ + +```typescript +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); +}; +``` + +## Roadmap + +See the [open issues](https://github.com/shuang854/Turtle/issues) for a list of proposed features (and known issues). + +- iOS and Android apps +- Microphone/Webcam support +- Support for more streaming services + + + +## Contributing + +Any contributions would be greatly appreciated. + +1. Fork the Project +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) +3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) +4. Push to the Branch (`git push origin feature/AmazingFeature`) +5. Open a Pull Request + + + +## License + +To be determined + + + +## Contact + +Simon Huang - shuang85497@gmail.com + +Discord Link: [https://discord.gg/NEw3Msu](https://discord.gg/NEw3Msu) + + + +## Acknowledgements + +- [Best README Template](https://github.com/othneildrew/Best-README-Template) +- [React Player](https://github.com/CookPete/react-player) +- [Metastream](https://github.com/samuelmaddock/metastream) +- [Stream Party](https://github.com/jengmicah/streamparty) + + + + +[product-screenshot]: public/assets/screenshot.png diff --git a/public/assets/screenshot.png b/public/assets/screenshot.png new file mode 100644 index 0000000..430cfad Binary files /dev/null and b/public/assets/screenshot.png differ