This application can be used to create interactive videos to engage viewers by the video creators. You can import Youtube videos by simply using URL and can start adding interactions on the videos.
To run the project, clone this repo and use the following commands
Install all the dependencies by running npm install
and then execute following command npm run start:server
in one tab of terminal
Firstly, install json-server using npm install -g json-server
globally. Then run npm run start:server
, this command will start json-server at port 3004. This applications use these fake api's to store and retrieve the data.
Before running this command, please make sure json-server is running. You can use npm run start:server
to run json-server. Make sure you have json-server installed globally on your system
Open http://localhost:3000 to view it in the browser.
This is the screenshot of one of the page.
This command will start running test cases and will produce result. I have used @testing-library/react
to write test cases. Various strategies have been used by me for instance I have mocked redux store with redux-mock-store
package.
If there was some more time I would have completed 90% of code coverage, currently code coverage is 80% and above.
I used lighthouse to run a performance check on the build generated by npm run build
. Result can be seen in the image, all of them are above 92/100.
- Should work with videos that are hosted on a site like Wistia or Youtube - Implemented
- Should allow creators to prompt viewers with a question - Implemented
- Prompt should be possible at any video time specified by the creator (etc. 2min 30s of a 6 minute video) - Implemented
- Prompt should allow space for a question, and between 2 and 6 text responses - Implemented
- For each response, the behavior can be to resume playback, or link to another URL - Implemented
- Prompt and responses overlaid on video. - Implemented
- The interactive video link can be embedded into another page using HTML and a simple - Implemented
- Custom design (positioning, images for options)
- Collect an email to keep playing the video - Implemented
- Tweet/share on facebook/linked in to continue playing video
- Allow responses to trigger files downloads (.pdf, .txt, .xls)
- Creator can see results of which responses people choose
- Show the results of polls to viewers after they select a response
- Anything else that makes it fun and engaging
Below is the list of library/framework I used in this project.
- ReactStrap for UI
- React
- Redux
- Redux-Saga
- React Testing Library
Mock Api's are created using json-server
and data is being stored in server/db.json
The features I wish to implement in the future.
- Edit Interaction
- Remove window alerts and use proper Modal with reusable mechanism
- View Responses for User/Creator
- Delete Video
- Error Handling (currently it is partially done)
- Confirmation of the video being saved
- User login
- Real NodeJS express API with mongoDB as database
- Display Thumbnails of videos in myideos page in each card
- Custom controls of the video player i.e. seekBar, volume and play button
- Make it progressive web app at least for myVideos page