← 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

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-socketpentru Chromecast (streaminghttp://în loc defile://) - Detecție junk headers — scanare JS pură a header-elor MPEG pentru identificarea și stripping-ul preambulurilor proprietare
- Client SMB2/3 în JS pur —
v9u-smb2adaptat 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


