Borough Books is a community book-sharing mobile app that helps readers lend and borrow books from friends while keeping track of their personal libraries.
Instead of letting books gather dust on shelves, Borough Books makes it easy to share books within your community, discover what your friends are reading, and track loans so nothing gets lost.
Think of it as a social network for your bookshelf.
Watch the demo here:
π https://drive.google.com/file/d/1RN2zuiqxOQrbBdTBXWxmz7Pi7WbcmN4w/view?usp=sharing
The demo walks through the full user flow:
- Scanning a book barcode
- Adding it to your personal library
- Browsing a friend's collection
- Requesting to borrow a book
- Messaging to arrange pickup
- Tracking borrowed and lent books
Users can scan a book's ISBN barcode using their phone camera. Book data (title, author, description, cover image) is automatically fetched using the Google Books API.
Users can maintain a digital catalogue of books they own and easily manage their collection.
Users can add friends and browse their libraries to discover new books.
Users can request books from friends and track:
- Books they've lent out
- Books they've borrowed
- Who currently has each book
Built-in chat allows users to coordinate book exchanges without leaving the app. Messages update instantly using Supabase Realtime.
- React Native
- Expo
- TypeScript
- Expo Camera (barcode scanning)
- Node.js
- Express
- PostgreSQL
- Supabase (database + realtime)
- REST API architecture
Backend Repository:
π https://github.com/NGalletly/BoroughBooks-BE
- Jest
- Supertest
- Test Driven Development (TDD)
- Backend hosted on Render
- PostgreSQL database hosted on Supabase
The system consists of three main components:
A React Native mobile application built with Expo that handles the user interface, book scanning, library management, and messaging.
A Node.js + Express REST API responsible for managing:
- Users
- Books
- Friend relationships
- Loans
- Conversations
- Messages
A PostgreSQL database hosted on Supabase with the following tables:
usersbooksusers_booksloanswishlistconversationsmessagesuser_relationships
Supabase Realtime (WebSockets) powers the live messaging feature, allowing messages to appear instantly without refreshing.
git clone https://github.com/YOUR-FRONTEND-REPO
cd borough-booksnpm installCreate a .env file in the project root.
EXPO_PUBLIC_GOOGLE_BOOKS_API_KEY=YOUR_GOOGLE_API_KEY
EXPO_PUBLIC_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY
EXPO_PUBLIC_SUPABASE_URL=YOUR_SUPABASE_PROJECT_URL
The Google Books API key is used when scanning a barcode to fetch book details from the Google Books API.
npx expo startYou can run the application using:
- iOS Simulator
- Android Emulator
- Expo Go mobile app
To enable messaging functionality, ensure the following setup steps are completed in your Supabase project.
npm install @supabase/supabase-jsAdd the following values to your .env file:
EXPO_PUBLIC_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY
EXPO_PUBLIC_SUPABASE_URL=YOUR_SUPABASE_PROJECT_URL
- Open your Supabase Dashboard
- Go to Database β Publications
- Select supabase_realtime
- Enable replication for:
messagesconversations
This allows Supabase to broadcast database changes to connected clients.
For this project prototype, Row Level Security must be disabled.
- Navigate to Database β Tables
- Select the
messagestable - Click Edit
- Ensure:
- Enable Row Level Security (RLS) is OFF
- Realtime is ON
Repeat the same process for the conversations table.
The backend API is maintained in a separate repository.
π https://github.com/NGalletly/BoroughBooks-BE
Follow the instructions in that repository to:
- create local databases
- seed development data
- run the server locally
With more development time, we would add:
Allow users to see approximate friend locations to simplify book exchanges.
Personalised book suggestions based on:
- reading history
- friends' libraries
- new releases
Push notifications reminding users when books have been borrowed for extended periods.
A rating or borrowing history system to help users identify reliable borrowers.
Community groups for readers to discuss books and share recommendations.
Built in two weeks as part of the Northcoders bootcamp by:
- Naomi β Frontend Architect
- Joe β Backend Architect
- Gavin β Backend Architect & UI Design
- Neville β Full Stack Developer
Many readers already lend books to friends, but it's easy to lose track of:
- who borrowed what
- where your books are
- which friend owns the book you want to read
Borough Books solves this by combining library tracking, messaging, and book discovery into one mobile app.