Skip to content
John Quevedo

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.
Shelf landing page showing social reading features and interface preview.

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.