WhiteBlob Streaming is a React.js-based web application that allows users to stream videos, including movies and shows, in multiple resolutions ranging from 144p to 1080p. Registered users can also upload their own videos and stream them on the platform. The application leverages modern web technologies and libraries to provide a seamless streaming experience.
- Video Streaming: Stream videos in resolutions from 144p to 1080p.
- User Registration: Register and log in to upload and manage your own videos.
- Video Uploading: Registered users can upload videos to the platform.
- Responsive Design: Optimized for various devices and screen sizes.
- Customizable Player: Integrated with
react-player
for flexible video playback.
- React: Frontend library for building user interfaces.
- HLS.js: JavaScript library for playing HLS (HTTP Live Streaming) videos.
- React Player: A customizable video player component for React.
- Axios: HTTP client for making requests to the backend.
- React Router: For handling routing within the application.
- Tailwind CSS: Utility-first CSS framework for styling.
- UUID: For generating unique identifiers.
- Testing Libraries: Jest, React Testing Library for testing components.
- Prettier: Code formatter to ensure consistent code style.
Ensure you have the following installed on your system:
- Node.js (>= 14.x)
- npm (>= 6.x) or yarn (>= 1.x)
-
Clone the repository:
git clone https://github.com/tidancadlab/whiteBLOB.git cd whiteBLOB
-
Install dependencies:
npm install
To start the application in development mode, run:
npm start
This will start the application on port 80.
To create a production build of the application, run:
npm run build
The build artifacts will be stored in the build/
directory.
To execute the tests for the application, run:
npm test
whiteBLOB/
├── public/
│ ├── index.html
│ └── ...
├── src/
│ ├── components/
│ │ ├── VideoPlayer.js
│ │ ├── VideoUpload.js
│ │ └── ...
│ ├── pages/
│ │ ├── HomePage.js
│ │ ├── LoginPage.js
│ │ └── ...
│ ├── App.js
│ ├── index.js
│ └── ...
├── .eslintrc.js
├── .prettierrc
├── package.json
└── ...
- React (
react
,react-dom
): Core library for building the user interface. - React Router (
react-router-dom
): For navigation and routing. - React Player (
react-player
): Video player component. - HLS.js (
hls.js
): For handling HLS video streaming. - Axios (
axios
): For making HTTP requests. - Tailwind CSS (
tailwindcss
,tailwind-merge
): For styling. - UUID (
uuid
): For generating unique identifiers. - Testing Libraries (
@testing-library/react
,@testing-library/jest-dom
,@testing-library/user-event
): For testing the application. - Prettier (
prettier
,prettier-plugin-tailwindcss
): For code formatting.
Create a .env
file in the root directory to define any necessary environment variables. Example:
REACT_APP_API_URL=http://localhost:5000/api
The application uses Prettier for code formatting. The configuration is defined in .prettierrc
:
{
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"useTabs": false,
"endOfLine": "auto",
"arrowParens": "always",
"printWidth": 160,
"bracketSameLine": true,
"trailingComma": "all",
"plugins": [
"prettier-plugin-tailwindcss"
]
}
To deploy the application, follow these steps:
-
Build the application:
npm run build
-
Deploy the contents of the
build/
directory to your web server or hosting service.
We welcome contributions to improve WhiteBlob Streaming. To contribute, follow these steps:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature-name
- Make your changes.
- Commit your changes:
git commit -m "Add your message"
- Push to the branch:
git push origin feature/your-feature-name
- Open a pull request on GitHub.
This project is licensed under the MIT License.
For any further questions or support, please contact us at [email protected].