← cd ../proiecte
Babilon Audiobooks
Platformă completă de audiobookuri cu streaming, abonamente și sincronizare cross-platform — Angular + Capacitor pe iOS/Android și backend Node.js.
AngularCapacitorNode.jsKeycloakStripeSQLiteHLSIndexedDB

Context
Babilon Audiobooks este o platformă completă de streaming audiobook — aplicație nativă iOS/Android construită cu Angular și Capacitor, backend Node.js și infrastructură self-hosted. Peste 1000 de cărți audio disponibile, cu streaming HLS, descărcare offline, abonament lunar și sincronizare completă între dispozitive.
Spre deosebire de soluțiile generice, platforma este construită pentru piața românească: bibliotecă organizată pe genuri (proză, poezie, teatru radiofonic, dezvoltare personală), autori și naratori români, cu suport complet pentru diacritice și interfață în limba română.
Caracteristici principale
- Bibliotecă cu peste 1000 de titluri — organizată pe genuri, autori și naratori, cu metadate complete, rating și durată
- Streaming adaptiv HLS — redare optimizată pentru orice viteză de conexiune, cu fallback pe fișier direct și descărcare offline
- Player audio complet — control viteză (0.5×–3×), sleep timer, capitole, jump-to-time, control din notificări și ecranul de blocare
- Progres sincronizat — poziția de redare se păstrează pe toate dispozitivele, poți continua o carte de pe telefon exact de unde ai rămas pe tabletă
- Autentificare prin Keycloak — SSO cu cont Google sau înregistrare locală, sesiune persistentă pe device
- Abonament lunar — plată prin Stripe (card) sau Apple IAP, cu limita de 20 min/zi pentru utilizatorii gratuiti
- Accesibilitate nativă — skip-link, ARIA pe toate componentele, comenzi rapide de tastatură, anunțuri vocale pentru cititoarele de ecran, VoiceOver și TalkBack testate
- Offline-first — metadata cărților se cache-uiesc în IndexedDB; utilizatorii pot naviga întreaga bibliotecă fără conexiune, iar abonații pot descărca cărți complete
- Căutare globală — autocomplete pe titluri, autori, naratori, cu suport pentru diacritice
- Trei biblioteci specializate — gratuită (fără limită de timp), premium (abonați), teatru radiofonic
Arhitectură
┌────────────────────────────────────────────────┐
│ app.radiobabilon.ro │
│ Angular 20 / Capacitor 7 (iOS/Android) │
├───────────────────────┬────────────────────────┤
│ auth.radiobabilon.ro │ api.radiobabilon.ro │
│ Keycloak SSO │ Node.js / Express │
│ │ SQLite · Redis │
│ │ Stripe · Bull · MySQL │
└───────────────────────┴────────────────────────┘
Repere tehnice
- Angular 20 + Angular Material — arhitectură standalone, lazy loading, control flow syntax, componente reactive cu Signals
- Capacitor 7 — aplicația rulează nativ pe iOS și Android dintr-un cod TypeScript, cu acces direct la API-urile device-ului (notificări locale, cumpărături in-app, sesiuni media)
- Backend Node.js / Express — API REST cu autentificare JWT, integrare Stripe (abonamente lunare), coadă de job-uri Redis/Bull, baze multiple: SQLite (date aplicație), MySQL (tracking), Redis (cache/sesiuni)
- Keycloak SSO — autentificare centralizată cu OIDC, suport Google OAuth și înregistrare locală, token refresh automat
- Streaming HLS — redare adaptivă cu hls.js, fallback pe fișier direct și descărcare offline pentru abonați
- Stripe + Apple IAP — abonament lunar cu plată prin card sau App Store, verificare server-side și sincronizare status
## Galerie
- Pagina principală — bibliotecă cu carduri de cărți, căutare și banner
- Player audio — controls de redare, progres, capitol curent
- Detaliu carte — autor, narator, descriere, durată și rating
- Autentificare — login cu Keycloak, suport Google OAuth
- Bibliotecă offline — cărți descărcate, redare fără internet
- Statistici — grafice de ascultare, timp total, cărți terminate
- Player — ecran complet cu sleep timer și control viteză
- Setări — preferințe cont, notificări, aspect
- Biblioteca — listă cărți cu sortare și filtre avansate