Skip to content

aritzmmartinez/libdex

Repository files navigation

Libdex

Read. Highlight. Remember.

A minimal, bilingual book-notes app for logging chapter-by-chapter learnings and carrying knowledge into your real life.

hero

Motivation

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.

Screenshots

Library Book Detail
library book-detail

Features

  • 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

Stack

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

Getting Started

1. Clone and install

git clone https://github.com/aritzmmartinez/libdex.git
cd libdex
pnpm install

2. Set up environment variables

Copy .env.example to .env.local and fill in your values:

cp .env.example .env.local
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key

3. Run the database schema

  1. Open your Supabase project → SQL Editor → New query
  2. Paste the contents of supabase/schema.sql and run it
  3. This creates books, chapters, tags, book_tags, glossary_entries and chapter_quotes with Row Level Security enabled

4. Start the dev server

pnpm dev

Project Structure

src/
├── 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

Contributing

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.

License

MIT

About

Personal book-notes app for reading with intention — chapter editor, quotes, glossary and markdown export.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages