The Problem

You finish the book. A month later, you can't remember a thing.

Highlights live in Kindle. Notes live in a notebook. Reviews live on Goodreads. Margin stitches them together - a personal reading companion that connects your highlights, notes, and reviews directly to books. Build a library that's actually yours - organized into reading, read, and want-to-read - then share it with friends who care about books as much as you do.

Margin app screenshot
Margin app screenshot
How It Works
Tech Stack
React TypeScript Vite Tailwind shadcn/ui TanStack Query Node Express PostgreSQL Drizzle ORM Zod Open Library API PWA Service Worker node-cron Nodemailer
Lessons Learned

Cost-check the API on day one.

Built on Google Books, didn't think about cost until the bill showed up. Switched to Open Library (free), kept Google as fallback, added a cache so common searches never hit the API twice.

People connect with names, not handles.

At launch, users only had usernames. Adding friends felt like searching strangers at a party. One extra field - a display name - fixed almost all the friction.

Build the exit before the entrance.

Shipped groups and libraries without delete or leave. People got stuck. Now if a user can join something, the way out goes in the same PR.

Invites beat links every time.

V1: copy a URL, paste in a text. Nobody bothered. V2: in-app invite flow. Adoption picked up immediately. The bar for action has to be low or people don't act.

Data you don't collect is data you can't use.

Built a daily digest - active users, books added, insights logged - and it changed how I decide what to build next. Should've set it up in week one, not month six.

Test the flows, not just the happy path.

Book clubs only surfaced books already in your library - a silent bug that made the feature feel broken. Fixed so any book can be added directly, with each person's notes private by default.

What I'd Build Next

01

Kindle Plugin

Auto-import Kindle highlights directly into Margin

02

Multi-Language

Read and annotate in any language

03

App Store

Launch on the App Store as a native app

Try it for yourself.

Build your library. Stitch your notes back to the books they came from.