Specyfikacja wymagań funkcjonalnych
w projekcie Quickstream

1. Opis projektu
2. Zakres projektu
3. Wymagania techniczne i projektowe
a) Preferowany stack technologiczny projektu:
- Backend dla quickstream-tools [Część wykonawcza]
- Frontend dla quickstream-tools i quickstream-cloud [Interfejs użytkownika]
- Aplikacja web:
-Aplikacja na komputery:
- Backend dla quickstream-cloud [Interfejs użytkownika]
- Aplikacja:
-Testy:
- Devops dla quickstream-tools [Interfejs użytkownika]
4. Architektura
5. Specyfikacja wymagań funkcjonalnych i projektowych
- Wymagania Quickstream Tools
- Wymagania Quickstream Cloud
- Wymagania Quickstream Platform


1. Opis projektu


Przedmiotem projektu jest wykonanie systemu informatycznego Quickstream, którego głównym celem jest przekazywanie i wymiana audio-wizualnych sygnałów live. System Quickstream ma dostarczyć niezawodny, efektywny kosztowo i łatwy w konfiguracji sposób na zestawiania połączeń poprzez sieci IP w tym rozległe sieci IP.

System Quickstream będzie składać się z trzech produktów:

a) Quickstream Tools – narzędzie umożliwiające odbiór sygnałów live video oraz ich przekazanie po sieciach IP w sieciach rozległych w sposób niezawodny, z minimalnym możliwym opóźnieniem i korekcją błędów z wykorzystaniem różnych wejść i wyjść audio wizualnych

b) Quickstream Platform – platforma umożliwiająca zarządzanie sygnałami w infrastrukturze nadawcy.

c) Quickstream Cloud – usługa umożliwiająca wymianę sygnałów w chmurze pomiędzy partnerami. Dodatkowo quickstream cloud będzie umożliwiać zarządzanie licencjami do quickstream tools i platform.

2. Zakres projektu

Na zakres wykonania projektu składają się:
a) Wykonanie i wdrożenie systemu informatycznego zgodnie z wymaganiami opisanymi w niniejszym dokumencie.
b) Przygotowanie i konfiguracja przestrzeni serwerowej ze szczególnym uwzględnieniem CI/CD dla elementów cloud oraz CI/CD dla testów backendowych.
c) Przygotowanie dokumentacji technicznej opisującej słownie oraz graficznie architekturę systemu wraz z opisem implementowanych rozwiązań technologicznych.
d) Wykonanie specyfikacji wszystkich wykonanych interfejsów systemowych ze szczegółowym opisem (specyfikacja powdrożeniowa) - funkcjonalna i techniczna.
e) Wykonanie dokumentacji użytkowej.
f) Wdrożenie identyfikacji wizualnej projektu, w szczególności logotypów i layoutów systemu

3. Wymagania techniczne i projektowe
Zespół projektowy powinien składać się co najmniej z osób, w tym jednego devOpsa, jednego project managera, dwóch frontend developerów, dwóch backend developerów.

Preferowany stack technologiczny projektu
a) Backend dla quickstream-tools [Część wykonawcza]
- ffmpeg == 4.1.4
- libsrt == 1.3.2
- QT == 5.12
- QtWebAppServer
- Crypto++
- QtCipherSqlitePlugin

b) Frontend dla quickstream-tools i quickstream-cloud [Interfejs użytkownika]
Aplikacja web:
- Ant Design >= 3.20.1 (framework CSS)
- Prop-types >= 15.7.x (typowanie kodu)
- React >= 16.8.0 (biblioteka JS)
- Redux >= 4.0.3 (biblioteka JS)
- Immutable >= 4.0.0 (biblioteka JS - optymalizacja operacji na store)
- Styled Components >= 4.3.2 (stylowanie CSS component scoped)
- Create React App (biblioteka JS - podstawowa konfiguracja projektu)
- Eslint >= 5.16.0 (sprawdzanie zgodności składnie JS)
- Prettier >= 1.18.2 (auto formatowanie kodu)

Aplikacja na komputery:
Wszystko co zawiera powyżej opisana aplikacja web oraz poniżej wymienione biblioteki:
- Electron >= 4.0.5 (tworzenie aplikacji możliwej do uruchomienia lokalnie)
- Webpack >= 4.29.5 (konfiguracja projektu - kompilacji kodu wykonawczego)

Backend dla quickstream-cloud [Interfejs użytkownika]
Aplikacja:
- Koa >= 2.7.0 (node framework)
- Bcrypt >= 3.0.6 (tworzenie hasha dla hasła zapisanego w bazie)
- Jsonwebtoken >= 8.5.1 (generowanie JWT Token)
- Knex >= 0.16.5 (obsługa zapytań do bazy danych)
- Moment >= 2.24.0 (biblioteka JS, obsługa daty)
- Mysql >= 2.17.0 (baza danych mariaDB)
- Eslint >= 4.3.0 (sprawdzanie zgodności składnie JS)
- Prettier >= 1.18.2 (auto formatowanie kodu)

Testy:
- Chai >= 4.2.0 (biblioteka JS do testów w node)
- Mocha >= 6.1.4 (framework do testów jednostkowych w node)

Devops dla quickstream-tools [Interfejs użytkownika]
- Gitlab + CI/CD
- snapcraft
- debuilder
- dh_make
- dpkg

Repozytoria przechowywane na Gitlab. Prace przedwdrożeniowe prowadzone na dedykowanych, zawsze dostępnych środowiskach serwerowych. Zautomatyzowany deploy. Continuous Integration oparte o infrastrukturę AWS.

4. Architektura

Architektura wszystkich komponentów aplikacji: http://bit.ly/2KIYaCD

5. Specyfikacja wymagań funkcjonalnych i projektowych

System Quickstream będzie składał się z trzech produktów: Quickstream Tools, Quickstream Platform, Quickstream Cloud.

Wymagania Quickstream Tools
- Możliwość zainstalowania oprogramowania na systemach operacyjnych:
a) Debian 9
b) Debian 10
c) Ubuntu 18.04 LTS
d) Ubuntu 19.04
e) MacOS X > 10.12
f) Windows 10 > 1607
- Możliwość zestawienia jednego lub wielu niezawodnych połączeń do przesyłania strumieni audio/wideo przez sieci IP. Obsługiwane protokoły:
Wejściowe:
a) MPEG-TS over UDP
b) MPEG-TS over RTP
c) MPEG-TS over SRT
d) RTMP Pull
e) RTMP Push
f) SDI (Serial Digital Interface) (Przynajmniej do rozdzielczości 1080i 25fps/29,97fps)
g) NDI by Newtek (Network Digital Interface) (Przynajmniej do rozdzielczości 1080i 25fps/29,97fps)
Wyjściowe:
a) MPEG-TS over UDP
b) MPEG-TS over RTP
c) MPEG-TS over SRT
d) RTMP Pull
e) RTMP Push
f) SDI (Serial Digital Interface) (Przynajmniej do rozdzielczości 1080i 25fps/29,97fps)
g) NDI by Newtek (Network Digital Interface) (Przynajmniej do rozdzielczości 1080i 25fps/29,97fps)
- Możliwość korzystania z systemu w środowisku zamkniętym bez połączenia z siecią publiczną,
- Możliwość zmiany języka aplikacji:
a) system powinien obsługiwać język polski,
b) system powinien obsługiwać język angielski,
- Możliwość połączenia się z zdalnym węzłem quickstream-wrapper przez REST API:
- Możliwość uwierzytelnienia (JWT token)
- Możliwość pobierania konfiguracji kanałów,
- Możliwość dodania wejścia (inputs) kanałów w postaci mpeg-ts,
- Możliwość dodania wyjścia (outputs) kanałów w postaci mpeg-ts,
- Możliwość usunięcia wejścia kanału (input),
- Możliwość usunięcia wejścia kanału (output),
- Możliwość przeglądania list wejść (inputs) i wyjść (outputs),
- Możliwość dodawania, usuwania, edytowania nowych kanałów,
- Możliwość zapisu bieżących konfiguracji kanałów,
- Wyświetlanie informacji o połączeniu lub rozłączeniu z node,
- Wyświetlanie statusu danego kanału,
- Możliwość zmiany statusu danego kanału,
- Możliwość włączania/wyłączania routes,
- Możliwość wyświetlania logów routes,
- Możliwość wyświetlania informacji o błędach/notyfikacji,
- Automatyczne uruchamianie routes po restarcie aplikacji,
- Możliwość wyświetlania podstawowych informacji o serwerze
a) adresy sieciowe interfejsów i nazwy
b) obciążenie CPU, RAM i interfejsów sieciowych
c) wersja systemu i wersja nadzorcy i jednostek wykonawczych
- Możliwość zmiany hasła do aplikacji,
- Możliwość przeglądania statystyk konkretnych kanałów w wybranych okresie czasowym,
- Zbieranie logów i statystyk oraz możliwość ich zapisu do pliku,
- Możliwość przeglądania statystyk na wykresach,

Wymagania Quickstream Cloud
Funkcjonalności dostępne dla roli - admin
- Możliwość zalogowania się (uwierzytelnienie JWT token),
- Możliwość zmiany hasła oraz nazwy użytkownika (własnego),
- Możliwość dodawania lub usuwania użytkowników,
- Możliwość przeglądania listy użytkowników,
- Możliwość wygenerowania licencji przez admina na podstawie hardware ID (fingerprint - unikatowy identyfikator maszyny),
- Możliwość przypisania licencji do użytkownika,
- Możliwość ustawienia ważności licencji,
- Możliwość ustawienia rodzaju licencji,
- Możliwość określenia ilości engine które dana licencja obsługuje,
- Możliwość pobrania licencji,
- Możliwość przeglądania listy licencji przypisanych do użytkowników,

Funkcjonalności dostępne dla roli - użytkownik
- Możliwość rejestracji (email + hasło),
- Możliwość zalogowania się (uwierzytelnienie JWT token),
- Możliwość zmiany hasła oraz nazwy użytkownika,
- Możliwość przeglądania przypisanych do konta licencji,
- Możliwość zakupu licencji,
- Możliwość udostępniania kanałów między partnerami,
- Możliwość przeglądania listy udostępnianych kanałów,
- Możliwość skontaktowania się z supportem poprzez formularz kontaktowy,

Wymagania Quickstream Platform
Funkcjonalności dostępne dla roli - admin
a) możliwość zalogowania się (uwierzytelnienie JWT token),
b) możliwość zmiany hasła oraz nazwy użytkownika (własnego),
c) możliwość dodawania lub usuwania użytkowników,
d) możliwość przeglądania listy użytkowników,
- Możliwość przechowywania informacji o kanałach:
a) generowanie ID kanału,
b) sprawdzanie poprawności ID kanału,
c) podawanie statusu kanału,
- Możliwość uwierzytelniania użytkowników (JWT token),
- Możliwość udostępniania serwera brzegowego do połączeń audio/video,
- Możliwość rejestracji użytkowników,



O nas
Spółka tvhive jest częścia grupy 4vod. Jesteśmy zespołem ekspertów działających na pograniczu świata mediów i telekomunikacji . Wykorzystujemy najnowsze, innowacyjne technologie do budowania rozwiązań dla nadawców telewizyjnych.
Kontakt
+48 22 349 25 56
info@tvhive.io

Biuro w Krakowie
tvhive sp. z o.o.
ul. Kalwaryjska 69
30-504 Kraków

Oddział w Warszawie
ul.Powstańców Śląskich 127/201
00-355 Warszawa

NIP PL 679-318-54-62
REGON: 383522233
KRS: 0000789337