← cd ../proiecte

Campus Book Player

Player de audiobook-uri cross-platform cu import din LibriVox, FTP, SMB și Chromecast — proiectat pentru accesibilitate totală.

ExpoReact NativeTypeScriptreact-native-track-playerSQLiteChromecastSMBFTPLibriVoxmusic-metadataReanimated
Captură ecran Campus Book Player

Context

Campus Book Player este un player de audiobook-uri cross-platform (Android + iOS) care permite utilizatorilor să-și construiască o bibliotecă personală din multiple surse: fișiere locale, dispozitivul media library, catalogul LibriVox (cărți audio din domeniul public), servere FTP și partaje SMB/CIFS.

Aplicația este construită cu Expo SDK 56 și pune accesibilitatea pe primul loc — fiecare ecran a fost proiectat mai întâi pentru VoiceOver și TalkBack, apoi pentru interfața vizuală.

Caracteristici principale

  • Import din multiple surse — fișiere locale, biblioteca media, LibriVox, FTP, SMB/CIFS (NTLMv2)
  • Player audio în background — redare pe ecranul blocat, Bluetooth, căști, cu controale OS
  • Capitole — cărți cu multiple fișiere (un fișier per capitol) sau cu metadate embedded (.m4b chpl, ID3 CHAP)
  • Viteză de redare — 0.5×–3× cu presetări și viteză personalizată
  • Sleep timer — temporizat (5–90 min), sfârșit de capitol, sfârșit de carte
  • Sincronizare progres — poziția se păstrează per carte și per capitol
  • Chromecast — redare pe dispozitive Google Cast cu handoff complet
  • Coperte automate — interogare iTunes, Audible, Google Books APIs; fallback pe coperți SVG procedurale
  • Gestionar descărcări — coadă persistentă cu pauză/reluare, reluare byte-level
  • Sistem de teme — light/dark cu 4 accente de culoare (amber, terracotta, forest, indigo)

Repere tehnice

  • Expo SDK 56 — arhitectură nouă React Native 0.85, React 19, TypeScript 6 strict, New Architecture activată
  • react-native-track-player 4 — redare background cu queue de capitole, control viteză, salt, auto-rewind
  • Import dinamic — track-player se încarcă lazy la primul touch pentru a evita crash-uri New Architecture
  • Server HTTP audio local — server TCP loopback pe react-native-tcp-socket pentru Chromecast (streaming http:// în loc de file://)
  • Detecție junk headers — scanare JS pură a header-elor MPEG pentru identificarea și stripping-ul preambulurilor proprietare
  • Client SMB2/3 în JS purv9u-smb2 adaptat pentru React Native prin shim-uri Metro (net → tcp-socket, crypto-browserify, MD4/MD5)
  • 3 baze de date SQLite — cărți & capitole, cache coperte, metadate; acces sincron prin libraryStore.ts
  • Coperți din 3 API-uri — iTunes, Audible, Google Books cu prioritate configurabilă și fallback SVG procedural
  • Descărcări rezumabile — manifest JSON persistent cu offset byte-level și viteză EMA-smoothed
  • Galerie de ecrane — navigare cu react-navigation (NativeStack + BottomTabs), 18 ecrane, provider ierarhic

Aplicații

De pe blog

Redarea MP3-urilor corupte pe Android: Dincolo de Expo15 iul 2026Construirea unei librării media cross-platform pe mobil13 iul 2026