P2P Book Exchange
SoloJun 2026View code
- 8 features
- auth, book CRUD, search, exchange requests, messaging, ratings, wishlist, AI recommendations
- POC
- no metrics reported; the goal was proving the mechanism, not evaluating a model
The problem
A proof of concept for giving unread physical books a second life: list a book, browse what others have listed, request an exchange, message the other side, and rate them once it's done. No metrics here by design; it's a POC meant to prove the mechanism works, not a model to evaluate.
Approach
- Built the eight-feature loop end to end in Laravel: auth and profiles, book CRUD with cover images, search that excludes your own listings, the request/accept/reject/complete exchange flow, in-app messaging between the two parties, and post-exchange ratings surfaced on public profiles.
- Kept the discovery and management surfaces separate on purpose: a dedicated 'My Books' page for managing your own listings, and a dashboard for browsing everyone else's, so the same screen isn't asked to do both jobs.
- Added a lightweight OpenAI-powered 'Recommended for You' feature that suggests books from a user's listed genres, deliberately without deep behavioural modelling, since a POC doesn't need a recommender system to prove the exchange mechanism works.
- Chose SQLite for local development specifically so anyone cloning the repo can run it with zero database setup, with a documented path to MySQL/PostgreSQL for production.
Scoping a proof of concept honestly instead of padding it
It would have been easy to bolt on a fake benchmark or an invented adoption number to make this look more finished than it is. It doesn't have one, because a marketplace mechanism doesn't produce a metric until real users are exchanging real books. What it does have is a complete, working loop across eight features and a documented three-milestone roadmap (notifications and richer search, then location matching and ISBN autofill, then production hardening) for what a next version would need.
Stack
- Laravel
- Blade
- Alpine.js
- Tailwind
- SQLite
- OpenAI API