Full‑stack platform for video upload, live restreaming, playback, and recording built with React/Vite, Node.js/Express, Node‑Media‑Server and MongoDB. Out‑of‑the‑box Docker deployment lets you spin up a personal streaming service in seconds.
Demo: After running docker compose up -d, open http://localhost and register a new user.
| Category | Highlights |
|---|---|
| Live Streaming | Upload an MP4 and the backend restreams it to viewers via HLS in real time. It is also possible to send streams via external devices. |
| Recording | One‑click start/stop while watching; recordings are stored as MP4 and listed in Library. |
| Authentication | JWT‑based login/registration with password hashing (bcrypt). |
| Favourites | Mark recordings with ★ and access them under the Favourites tab. |
| Low‑latency HLS | 1‑second segments and playlist size 2. |
| Dockerised stack | Frontend, API, Multimedia Server (NMS) and MongoDB ready to ship. |
More technical detail lives in the Reference Manual.
Prerequisites: Docker 24+ and Docker Compose v2
$ git clone https://github.com/DotCSanova/nms_multadvser_epsl.git
$ cd nms_multadvser_epsl/web-server
$ cp .env.example .env # adjust JWT_SECRET etc.
$ cd ..
$ docker compose up -d --build- Frontend: http://localhost
- API: http://localhost:3000
- NMS HTTP: http://localhost:8000
- RTMP ingest:
rtmp://localhost:1935/live
See section 4.2 of the Reference Manual for step‑by‑step instructions.
- Frontend: React 18 · Vite 5
- Backend: Node.js 20 · Express 4 · Mongoose 8
- Media Server: Node‑Media‑Server 2.6 · FFmpeg 6.1
- Database: MongoDB 5+
The REST endpoints are located in web-server/src/api/*and are fully documented in the Reference Manual, section 6.
We welcome contributions of all kinds!
Please follow these steps:
-
Fork the repository and create a new branch:
git checkout -b feat/my-feature
-
Lint and test your changes before committing:
pnpm lint && pnpm test
-
Submit a Pull Request (PR) against the
mainbranch with a clear and concise description of your changes. -
For larger changes, we recommend opening a draft PR or starting a discussion first.
Thank you for helping make this project better! 🚀
- Open an issue if you encounter any problems.
- Alternatively, you can submit a Pull Request (PR) with improvements or fixes.
We aim to respond as soon as possible!
This project is licensed under the MIT License.
See LICENSE.md for complete details.
