Updated Jan 25, 2026
Full-Stack Social Reading Platform
Built a full-stack social reading app with search, personal bookshelves, reviews, follows, and activity tracking.
- - Designed PostgreSQL/Prisma schema and APIs for authentication, notifications, comments, likes, and follows.
- - Implemented responsive UI and secure authentication, enabling persistent user profiles and social interactions.

Problem
Shelf addresses fragmented reading workflows by combining discovery, organization, social activity, and journal tracking in one product.
Approach
- - Built a full-stack TypeScript app on Next.js App Router with PostgreSQL and Prisma.
- - Implemented credentials auth with verification and password reset, plus secure social interactions (reviews, likes, comments, follow/unfollow).
- - Added Open Library discovery with canonical local caching and Goodreads CSV import with idempotent merge behavior.
- - Shipped responsive navigation, notifications, reading journal stats, and profile settings with image uploads in production.
Results
- - Users can discover books, manage shelves, track reading progress, and engage with social activity in one app.
- - Production deployment is live with documented architecture and test coverage (Vitest and Playwright).
- - The app supports import from existing Goodreads history to reduce onboarding friction.
Technical Evaluation
- - Stack: Next.js 14, TypeScript, Tailwind, PostgreSQL, Prisma, NextAuth, Zod, React Hook Form.
- - Testing: Vitest + Playwright.
- - Deployment: https://shelf.johnfquevedo.com
Tradeoffs
- - Import and merge logic increases backend complexity compared to a clean-slate-only approach.
- - Feed and explore views rely on real database queries and may need additional caching as load increases.