← 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
Captură ecran Babilon Audiobooks

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

Galerie

De pe blog

AudioBookshelf pe server propriu: lecții după un an09 apr 2026