diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..a100f06 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,33 @@ +# Contributing to DecapStream + +## Running locally + +```bash +npm install +npm run dev +``` + +In dev mode, all `supervisorctl` and `captureThumb` calls are mocked with console logs — no Supervisord or ffmpeg required. + +## Before submitting a PR + +- Run `npm run lint` and fix any errors +- Run `npx tsc --noEmit` if you changed types, interfaces, or added imports +- Keep changes focused — one concern per PR + +## What's welcome + +- Bug fixes +- Documentation improvements +- New stream configuration options +- UI improvements + +## What to discuss first + +For larger changes (new architecture, new dependencies, significant behavior changes), open an issue first to align on the approach before investing time in implementation. + +## Stack + +- Next.js 15 + TypeScript + Tailwind CSS v4 +- Flat file persistence (`streams.json`) — no database +- Supervisord for process management (mocked in dev) diff --git a/LICENSE b/LICENSE index b1896a1..ca2291f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ -MIT License +# MIT License -Copyright (c) 2026 Kralot +Copyright 2026 Eduardo Riguetto (kralot / riguettodev) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 5d1c7dc..f2e335c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,19 @@ -# DecapStream +

+ +

+

Decap Stream

Turn any web page into an RTMP/HLS stream. Chromium renders the page, ffmpeg captures it, MediaMTX publishes it. Built for NOC environments and digital signage. +## Screenshots + +![Dashboard](./screenshots/dashboard.png) + +

+ Stream Config + Login Page +

+ ## How it works Each stream runs its own isolated stack inside the container: @@ -149,8 +161,9 @@ In dev mode (`NODE_ENV !== "production"`), all `supervisorctl` and `captureThumb - [MediaMTX](https://github.com/bluenviron/mediamtx) - [HLS.js](https://github.com/video-dev/hls.js/) - [noVNC](https://novnc.com/) -- Chromium, ffmpeg +- [FFmpeg](https://ffmpeg.org) +- [Chromium](https://www.chromium.org) ## License -MIT +[MIT](/LICENSE) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..ce59215 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,14 @@ +# Security Policy + +## Reporting a Vulnerability + +If you discover a security vulnerability, **please do not open a public issue**. This allows time to investigate and release a fix before the issue is publicly disclosed. + +Report vulnerabilities by email to: **contact@riguetto.dev** + +Include in your report: +- Description of the vulnerability +- Steps to reproduce +- Potential impact + +You can expect a response within 72 hours. Once the issue is confirmed, a fix will be prioritized and a patched release will be made available before any public disclosure. diff --git a/screenshots/dashboard.png b/screenshots/dashboard.png new file mode 100644 index 0000000..f575d3e Binary files /dev/null and b/screenshots/dashboard.png differ diff --git a/screenshots/login.png b/screenshots/login.png new file mode 100644 index 0000000..99d453d Binary files /dev/null and b/screenshots/login.png differ diff --git a/screenshots/player-hls.png b/screenshots/player-hls.png new file mode 100644 index 0000000..8371ef2 Binary files /dev/null and b/screenshots/player-hls.png differ diff --git a/screenshots/stream-config.png b/screenshots/stream-config.png new file mode 100644 index 0000000..f9d6ddd Binary files /dev/null and b/screenshots/stream-config.png differ diff --git a/screenshots/vnc-view.png b/screenshots/vnc-view.png new file mode 100644 index 0000000..bdf10fa Binary files /dev/null and b/screenshots/vnc-view.png differ