Am pornit totul de la o idee pe care o aveam în cap, iar cu timpul, pas cu pas, am dezvoltat-o până am ajuns să creez acest site. Pe măsură ce lucram, am învățat tot mai multe lucruri legate de programare, iar ideea inițială s-a transformat într-un proiect complet, funcțional și bine structurat.
Site-ul este conectat la serverul meu personal Emby, o platformă media pe care o administrez și care oferă un API foarte util. Prin acest API pot prelua automat informații despre filme, seriale, colecții și alte materiale media, fără să fie nevoie să le introduc manual. Tot conținutul se actualizează singur, direct din serverul meu Emby, așa că oricine intră pe site vede mereu informații actualizate. Adică dacă iese un film nou pe Emby, automat apare și pe acest site. (pentru că se actualizează și pe API prin niște informații JSON apare și pe acest site AUTOMAT)
Pentru a face legătura dintre site și serverul Emby, am creat un server în Node.js, care acționează ca un proxy securizat. Acel proxy l-am configurat pe serverul meu și l-am expus pe internet cu ajutorul unui Cloudflare Worker, care îmi oferă un domeniu cu HTTPS. În felul acesta, am reușit să public site-ul în mod sigur, protejând totodată token-ul API și traficul între client și server.
Asta înseamnă că atunci când site-ul are nevoie de date noi, trimite cererea către serverul Node.js, nu direct către Emby, trimite cererea mai departe către Emby, ia datele, le prelucrează dacă e nevoie, și apoi le trimite înapoi către browser. În felul acesta, token-ul API nu este niciodată expus public, iar site-ul poate fi accesibil pe internet fără riscuri.
Site-ul este scris complet în HTML, CSS și JavaScript, fără framework-uri externe. Am folosit fetch() pentru a lua datele de la serverul Node.js și le afișez în pagină cu ajutorul JavaScript. Răspunsurile sunt în format JSON, pe care le parcurg și le afișez în structura paginii.
Concepte cheie folosite:
- Node.js + Express – pentru serverul backend
- Proxy server – pentru a proteja accesul la API
- Token-based authentication – ca să nu expun date sensibile
- Fetch API – pentru a face cereri HTTP din JavaScript
- JSON parsing – pentru a lucra cu datele primite de la API
- Async/Await – pentru programare asincronă în JavaScript