YouWillLearn is a web application that allows users to create, share, comment on, and watch educational videos. It provides an intuitive interface for users to engage with educational content.
- Video Library: Browse through a collection of educational videos.
- Video Playback: Watch videos with playback controls.
- Video Details: View video information, including title, description, and upload date.
- Comments: Leave comments on videos and view comments from other users.
- Add Videos: Share new educational videos by providing a title, description, and video URL.
- Playback Controls: Adjust video playback speed and volume.
- Full Screen Mode: Watch videos in full screen.
- Responsive Design: Works on desktop and mobile devices.
- React: Frontend library for building user interfaces
- TypeScript: Type-safe JavaScript
- React Router: For application routing
- React Player: For video playback
- React Icons: For UI icons
- Axios: For API calls
- CSS: For styling components
- Node.js (v14.0.0 or later)
- npm (v6.0.0 or later)
-
Clone the repository:
git clone https://github.com/yourusername/youwilllearn.git cd youwilllearn -
Install dependencies:
npm install
-
Start the development server:
npm start
-
Open http://localhost:3000 in your browser to view the application.
The application comes with mock data for demonstration purposes. You can:
- Browse the list of pre-loaded educational videos
- Select a video to watch it and view its details
- Add comments to a video (they will persist only during the session)
- Add your own videos using the "Add New Video" button
- Control video playback with the custom player controls
Note: Since this is a demo using mock data, all changes are stored in memory and will be lost upon page refresh.
To build the application for production, run:
npm run buildThis will create a build directory with optimized production-ready files.
The application interacts with the backend API at https://take-home-assessment-423502.uc.r.appspot.com/api with the following endpoints:
GET /videos: Fetch all videosGET /videos/:id: Fetch a specific videoPOST /videos: Create a new videoGET /videos/:id/comments: Fetch comments for a videoPOST /videos/:id/comments: Add a comment to a video
The user_id format for creating videos should be your name in snake_case format, for example: john_smith.
- User authentication and profiles
- Video categories and tags
- Video search functionality
- Video ratings and likes
- User playlists
- Video recommendations
This project is licensed under the MIT License - see the LICENSE file for details.
For any questions or feedback, please contact:
- Email: [email protected]
- GitHub: Your GitHub Profile


