Lectum is a focused reading tracker for managing what you are reading now, what is next, and what you have finished. It is designed for quick capture, clean organization, and useful reading stats while keeping your data local.
Screenshots are not added to this repository README yet.
- Add, edit, and delete books
- Manage three practical states:
- Reading now
- Next to read
- Finished
- Mark a next book as currently reading in one action
- Finish a book with date and rating
- Reopen finished books when needed
- Optional custom thumbnail support per book
- Dedicated finished-books library view
- Filter by:
- Rating
- Format (Print, Digital, Audiobook)
- Category (Fiction, Non-fiction)
- Sort by finished date, title, author, and publication year
- Reading stats built from finished books
- Per-year and per-month completion charts
- Rating, format, and category distributions
- Decade and publication spread visualizations
- Export and import your Lectum data as JSON
- Safe import validation (
app: lectum) before applying data - Clear app data back to a starter state from settings
- Theme preference: system / light / dark
- Date format preference: DMY / MDY
- Installable web app support where available
- Service worker registration via
vite-plugin-pwa - Update-aware install flow in settings
/syncpage documents planned optional sync functionality- Local-first workflow remains fully supported without sync
- No required login
- Local-first by default
- Data is stored in IndexedDB when available (with an in-memory fallback)
- Export/import gives full control of portability and backups
Note: Lectum stores your data on-device. Keep periodic JSON exports if you want backup copies outside the browser.
- React 18 + TypeScript
- Vite
- Tailwind CSS
- Zustand
- Framer Motion
- date-fns
- Lucide React
- Vitest + Testing Library
pnpm install
pnpm run devUse mkcert for trusted local certs:
- Install mkcert (macOS):
brew install mkcert nssand runmkcert -install - Generate certs:
mkdir -p certs
pnpm run gen:certs- Start with host mode:
pnpm run dev:hostBuild + preview:
pnpm run build
pnpm run previewRun full CI checks locally:
pnpm run ciHigh-level layout:
src/App.tsx,main.tsx- app shell and routingfeatures/home/- current reading and next queuelibrary/- finished-books browsing, filters, sortingstats/- aggregated reading insights and chartssync/- planned sync direction page
shared/store/- state stores and actionscomponents/- reusable UI components and modalsutils/- stats, storage, import/export, date helperstypes/- shared type definitionsstyles/- shared styling
public/- icons, fonts, web manifestdev-dist/- generated service worker artifacts
PRs are welcome.
- Keep changes scoped and easy to review
- Add or update tests when behavior changes
- Preserve local-first behavior for core tracking
Original work by Kyle Brooks.