Read. Highlight. Remember.
A minimal, bilingual book-notes app for logging chapter-by-chapter learnings and carrying knowledge into your real life.
I built Libdex for myself. After getting into investing and wanting to read more intentionally, I needed a place to log what I was actually learning — chapter by chapter — and connect it to real life, not just highlight and forget.
No existing app fit the way I think, so I built one. It lives at libdex.aritzmmartinez.dev and I use it daily.
The instance at that domain is private (single-user, my data). But the code is fully open — if the concept resonates with you, fork it, self-host it, or contribute. PRs and issues are welcome.
| Library | Book Detail |
|---|---|
![]() |
![]() |
- Auth — Email/password via Supabase · Single-user by default (registration closed on the live instance)
- Dashboard — Stats at a glance and currently reading card
- Library — Card/list view, status filters and global search
- Book detail — Cover, rating, summary, top ideas, tags and next book
- Chapter editor — Four note fields (main idea, highlights, real-life connection, doubts) with 1s autosave
- Quotes — Save memorable quotes per chapter
- Glossary — Term/definition pairs per book
- Custom tags — Color-coded, reusable across books
- Markdown export — Export any book's notes as
.md - Bilingual — ES / EN toggle
- Theming — Dark / Light mode, collapsible sidebar
- Responsive — Works on mobile and desktop
| Layer | Technology |
|---|---|
| Frontend | React 19, TypeScript, Vite |
| Styling | Tailwind CSS v4, shadcn/ui |
| State | Zustand |
| Routing | React Router v7 |
| Backend / DB | Supabase (PostgreSQL + RLS) |
| Auth | Supabase Auth (email/password) |
| Covers | Open Library API |
git clone https://github.com/aritzmmartinez/libdex.git
cd libdex
pnpm installCopy .env.example to .env.local and fill in your values:
cp .env.example .env.localVITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key- Open your Supabase project → SQL Editor → New query
- Paste the contents of
supabase/schema.sqland run it - This creates
books,chapters,tags,book_tags,glossary_entriesandchapter_quoteswith Row Level Security enabled
pnpm devsrc/
├── components/
│ ├── layout/ # Sidebar, Header, Layout
│ ├── books/ # BookCard, BookForm
│ ├── chapters/ # ChapterEditor
│ └── ui/ # shadcn/ui components
├── pages/ # Login, Dashboard, Library, BookDetail, Settings
├── hooks/ # useAuth, useBooks, useChapters, useGlossary, useQuotes
├── lib/ # supabase.ts, openLibrary.ts, i18n.ts
├── store/ # Zustand stores
└── types/ # Global TypeScript types
supabase/
├── schema.sql # Full database schema (run once on setup)
└── migrations/ # Incremental migrations
This is a personal project but open to contributions. If you find a bug, have a feature idea, or want to improve something — open an issue or a PR. No formal guidelines yet; just be clear about what and why.
MIT


