Skip to content

Arhitectura Tehnică a Platformei Jellyseerr

1. Arhitectura Serverului Jellyseerr

1.1 Componentele de Bază ale Serverului

Jellyseerr este o aplicație web construită pentru gestionarea cererilor media, cu următoarele straturi principale:

  • Frontend React - Interfața utilizatorului scrisă în React
  • Backend Node.js - Serverul API construit cu Express.js
  • Database - Baza de date pentru stocarea cererilor și setărilor
  • External APIs - Integrări cu servicii externe

1.2 Tehnologii și Limbaje de Programare

Jellyseerr este dezvoltat în:

  • Node.js pentru backend
  • React pentru frontend
  • TypeScript pentru ambele părți
  • PostgreSQL/SQLite pentru baze de date
  • CSS/SASS pentru styling
Arhitectura Jellyseerr

2. Sistemul de Baze de Date

2.1 Structura Bazelor de Date

Jellyseerr folosește o bază de date relațională cu tabele specializate:

settings.db - Setările aplicației și configurația

requests.db - Cererile utilizatorilor și istoricul

users.db - Datele utilizatorilor și permisiunile

2.2 Schemele de Tabele Principale

sql
CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    email VARCHAR(255) UNIQUE NOT NULL,
    username VARCHAR(255),
    password VARCHAR(255),
    permissions INTEGER DEFAULT 0,
    avatar VARCHAR(255),
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
sql
CREATE TABLE media_requests (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    type VARCHAR(50) NOT NULL,
    tmdb_id INTEGER NOT NULL,
    tvdb_id INTEGER,
    status INTEGER DEFAULT 1,
    requested_by INTEGER NOT NULL,
    modified_by INTEGER,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (requested_by) REFERENCES users(id),
    FOREIGN KEY (modified_by) REFERENCES users(id)
);
sql
CREATE TABLE settings (
    key VARCHAR(255) PRIMARY KEY,
    value TEXT,
    type VARCHAR(50) DEFAULT 'string',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
sql
CREATE TABLE notification_logs (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    type VARCHAR(100) NOT NULL,
    subject TEXT,
    message TEXT,
    sent_to INTEGER,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (sent_to) REFERENCES users(id)
);

3. Serverul Web și API-ul

3.1 Arhitectura Backend

Jellyseerr rulează pe un server Node.js cu Express.js care:

  • Gestionează cereri HTTP REST
  • Servește aplicația React
  • Comunică cu baza de date
  • Integrează cu API-uri externe

3.2 Endpoint-uri API Principale

/api/v1/auth - Autentificare și management utilizatori

/api/v1/request - Operațiuni pe cererile media

/api/v1/movie - Operațiuni specifice filmelor

/api/v1/tv - Operațiuni specifice serialelor

/api/v1/settings - Management setări

3.3 Sistemul de Autentificare

Jellyseerr folosește JWT (JSON Web Tokens) pentru:

  • Autentificare stateless
  • Securitate îmbunătățită
  • Expirare controlată a sesiunilor
  • Revocare token-uri

4. Integrări cu Servicii Externe

4.1 Conexiunea cu Jellyfin/Emby

Jellyseerr se conectează la serverul media prin:

  • API-ul nativ Jellyfin/Emby
  • Autentificare cu token
  • Sincronizare utilizatori
  • Verificare disponibilitate conținut (pe Emby)

4.2 The Movie Database (TMDb)

Integrare cu TMDb pentru:

  • Căutare filme și seriale
  • Metadata detaliată
  • Imagini și poster-e
  • Informații despre echipa de producție

4.3 Servicii de Notificări

Suport pentru multiple platforme:

  • Discord webhooks
  • Email (SMTP)
  • Pushbullet
  • Telegram
  • Slack

5. Sistemul de Cereri Media

5.1 Fluxul unei Cereri

Procesul complet al unei cereri:

  1. Utilizatorul caută media pe TMDb
  2. Sistemul verifică disponibilitatea pe serverul media
  3. Dacă nu este disponibil, se creează cererea
  4. Administratorii aprobă/resping cererea
  5. La aprobare, se notifică utilizatorii
  6. Sistemul monitorizează adăugarea automată

5.2 Managementul Cererilor

Jellyseerr gestionează:

  • Cereri noi în așteptare
  • Cereri aprobate
  • Cereri respinse
  • Cereri completate automat
  • Limitări de cereri per utilizator

6. Sistemul de Permisiuni

6.1 Roluri și Drepturi

Jellyseerr suportă multiple niveluri de acces:

  • Administrator - Acces complet
  • Moderator - Poate aproba cereri
  • User - Poate face cereri
  • Guest - Doar vizualizare

6.2 Controlul Accesului

Sistemul implementează:

  • Autentificare obligatorie
  • Verificare permisiuni pe endpoint-uri
  • Limitări bazate pe rol
  • Logging al acțiunilor

7. Sistemul de Notificări

7.1 Tipuri de Notificări

Jellyseerr trimite notificări pentru:

  • Cereri noi
  • Aprobări/respingeri
  • Media adăugată
  • Erori în sistem
  • Actualizări aplicație

7.2 Configurarea Notificărilor

Administratorii pot configura:

  • Platforme de notificări
  • Șabloane de mesaje
  • Frecvența notificărilor
  • Tipurile de evenimente

8. Procesul de Inițializare

8.1 Secvența de Pornire

La start, Jellyseerr execută:

  1. Încărcare variabile de mediu
  2. Conexiune la baza de date
  3. Verificare configurație
  4. Testare conexiuni API externe
  5. Pornire server web
  6. Inițializare cache-uri

9. Sistemul de Securitate

9.1 Măsuri de Securitate

Jellyseerr implementează:

  • Validare input
  • Sanitizare date
  • Rate limiting
  • CORS configuration
  • HTTPS enforcement
  • Secure headers

© 2025 Popica Adelin. Toate drepturile rezervate.