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,