A React Native mobile app for discovering books through a Tinder-style swipe interface. Swipe right to add to your reading list, left to skip. Built with a recommendation engine, gamification system, and real-time Firebase sync.
- React Native + Expo (SDK 51+)
- Firebase Authentication + Cloud Firestore
- Django REST API + Supabase PostgreSQL (book data)
- React Navigation v6 (Stack + Bottom Tabs)
- Reanimated 2 (60fps swipe animations on UI thread)
- AsyncStorage (local rate limiting)
- Tinder-style swipe cards with haptic feedback
- Infinite pagination — new pages load silently as you swipe
- Batch Firestore writes (10 swipes → 1 write, reduces cost)
- Barcode scanner (EAN-13) for ISBN lookup
- Recommendation engine weighted by swipe/save behavior
- Gamification: points, 7 levels, streak tracking, badges
- Rate limiting (client-side, no server required)
- Weekly popularity ranking from aggregated like events
React Native frontend communicates with two backends:
- Book data: Django REST API + Supabase PostgreSQL
- User data: Firebase Firestore (favorites, streaks, swipe history, points)
Firebase Auth gates all Firestore access. Security rules enforce:
- Users write only to their own
users/{uid}subcollections itemscollection is read-only for authenticated usersuserPoints: max ±15 points per write, all fields ≥ 0likeEvents: document ID format{uid}_{bookId}enforced
- Backend: SwipeBooksBackend
git clone https://github.com/Busrwa/swipeit.git
cd swipeit
npm install
npx expo install expo-linear-gradient expo-haptics expo-camera
# Add your Firebase config to firebaseConfig.js
npx expo start --clear