Back to Projects

irrational reading

December 2, 2025View Repository

Landing Page

What it is

Irrational Reading is a book club I started with a few friends. I built this application to manage our discussion groups, reading plans, polls, newsletter, and book reviews in one place instead of juggling spreadsheets and email tools.

Over time the project grew into a full-featured platform with subscription tiers, reading sub-groups, book discovery, and progress tracking. In practice, the app ended up more powerful than the club actually needed, which was a key lesson in scoping and choosing the right level of complexity.

We still meet regularly, but now manage the club through chat and email, and the site has been simplified to a single page that records what we’ve read.

Key Features

  • Reading Groups: Users can discover, join, and create reading groups, with filtering and search to find books that match their interests.

Community Page

Reading groups

  • Reading Management: Structured reading plans and simple progress tracking help groups stay in sync and make it easy to see where everyone is in the book.
  • Interactive Engagement: Built-in polls, discussions, and reviews give members ways to vote on upcoming reads, share thoughts, and keep conversations going between meetings.

Club books

  • Multi-tier Administration: Role-based access control lets group admins manage their own sub-groups (books, members, polls) while platform-level tools support overall moderation.
  • Premium Features: A subscription system powers supporter tiers, unlocking additional features and capabilities for members who want to back the club.

Group management

Site admin

How it's built

The app is a full-stack web application built with Next.js and React on the frontend, and PostgreSQL with Prisma on the backend. It uses NextAuth.js for authentication (with GitHub/Google OAuth) and AWS SES for transactional email.

Frontend

  • Next.js with server-side rendering
  • React + TypeScript
  • Tailwind CSS, Radix UI, and Framer Motion for styling, accessible components, and light animation

Backend

  • PostgreSQL + Prisma ORM
  • Data access layer with service modules for users, clubs, books, and subscriptions
  • Role-based access control for members vs. admins
  • Integration with AWS SES for email notifications (reading plans, supporter access, etc.)

Lessons learned

  • Scope vs. needs I overbuilt compared to what the book club actually needed. It was a great technical exercise, but it taught me to validate how much complexity is truly necessary.
  • Modeling relationships in the database Designing tables for users, clubs, books, and reading activity pushed me to think carefully about many-to-many relationships and indexing.
  • OAuth and email verification quirks Implementing OAuth with multiple providers surfaced edge cases, especially around email verification. I learned to handle provider-specific behaviour and build safer fallback checks.
  • Designing a flexible subscription system Supporting free and paid subscriptions made me think about subscriptions as a product. I learned to separate “who pays,” “what they get,” and “how access is enforced,”.

Overall, this project deepened my understanding of full-stack architecture, relational data modeling, authentication, and subscription logic, and gave me a concrete reminder to keep product scope aligned with real user needs.