How readrace-ages/readrace works
ReadRace is a mobile reading-habit app using casual gamification. Readers browse books, manage reading lists and progress, then participate in friend challenges, clubs, forums, and community feeds. The mobile app’s feature hooks call its API modules and shared HTTP client; backend controllers delegate to services, which access persistence or book-search adapters. The README documents PostgreSQL and the Google Books integration. Sampled code confirms book-search and library paths; other feature wiring is represented only where supported by the tree and documented product structure.
Main entry points: app App routes · controller REST controllers · client.ts HTTP client · repository Data repositories
Components 21
Mobile experience
- App routes
mobile/src/app - HTTP client
mobile/src/api/client.ts - My books
mobile/src/features/biblioteca/MeusLivrosView.tsx - Library state
mobile/src/features/biblioteca/useBiblioteca.ts - Book search
mobile/src/features/busca/BuscaView.tsx - Book details
mobile/src/features/livro/LivroDetalheScreen.tsx - Community screens
mobile/src/features/feed/FeedComunidadesView.tsx - Challenges
mobile/src/features/desafios/DesafioScreen.tsx
Backend API
- REST controllers
backend/src/main/java/com/readrace/api/controller - Book endpoint
backend/src/main/java/com/readrace/api/controller/BookController.java - Book search service
backend/src/main/java/com/readrace/api/service/BookService.java - Library service
backend/src/main/java/com/readrace/api/service/BibliotecaService.java - Book detail service
backend/src/main/java/com/readrace/api/service/LivroService.java - Challenge service
backend/src/main/java/com/readrace/api/service/DesafioService.java - Community services
backend/src/main/java/com/readrace/api/service
Persistence and search
- Search port
backend/src/main/java/com/readrace/api/service/BookSearchPort.java - Local catalog
backend/src/main/java/com/readrace/api/adapter/local/LocalBooksAdapter.java - Google Books
backend/src/main/java/com/readrace/api/adapter/google/GoogleBooksAdapter.java - Data repositories
backend/src/main/java/com/readrace/api/repository - PostgreSQL
Other components
- Reader
Connections 27
- Reader → App routes: uses
- App routes → My books: opens
- App routes → Book search: opens
- App routes → Book details: opens
- App routes → Community screens: opens
- App routes → Challenges: opens
- My books → Library state: reads state
- Library state → HTTP client: requests pages
- Book search → HTTP client: requests search
- Book details → HTTP client: requests details
- Community screens → HTTP client: requests feed
- Challenges → HTTP client: requests challenges
- HTTP client → REST controllers: sends HTTP
- REST controllers → Library service: delegates
- REST controllers → Book detail service: delegates
- REST controllers → Community services: delegates
- REST controllers → Challenge service: delegates
- REST controllers → Book endpoint: routes search
- Book endpoint → Book search service: delegates
- Book search service → Search port: searches
- Search port → Local catalog: dispatches
- Search port → Google Books: dispatches
- Library service → Data repositories: queries
- Book detail service → Data repositories: queries
- Challenge service → Data repositories: queries
- Community services → Data repositories: queries
- Data repositories → PostgreSQL: reads/writes