No description
  • TypeScript 82.4%
  • JavaScript 16.6%
  • Dockerfile 0.7%
  • HTML 0.3%
Find a file
Freydis Mende 9dad81d718
All checks were successful
CI / Typecheck & Lint (push) Successful in 21s
CI / Docker build & push (push) Successful in 16s
CI / Deploy (push) Successful in 12s
add readme
2026-06-07 18:42:10 +02:00
.forgejo/workflows fix ci 2026-06-01 18:03:39 +02:00
.github improve copilot instructions 2026-06-07 18:42:04 +02:00
.husky add husky with lint-staged 2026-05-31 22:52:44 +02:00
client add arc support 2026-06-07 14:04:35 +02:00
e2e add e2e tests 2026-05-31 21:44:08 +02:00
.dockerignore initial 2026-05-06 16:16:13 +02:00
.gitignore add e2e tests 2026-05-31 21:44:08 +02:00
compose.yaml initial 2026-05-06 16:16:13 +02:00
db.js add arc support 2026-06-07 14:04:35 +02:00
Dockerfile add schema to docker image 2026-05-31 21:05:57 +02:00
package-lock.json add husky with lint-staged 2026-05-31 22:52:44 +02:00
package.json fix docker build 2026-06-01 13:45:58 +02:00
playwright.config.ts add e2e tests 2026-05-31 21:44:08 +02:00
README.md add readme 2026-06-07 18:42:10 +02:00
schemas.js add arc support 2026-06-07 14:04:35 +02:00
server.js add Jikan to CSP 2026-06-03 21:58:34 +02:00

manga-lib

A personal manga collection tracker. Track which volumes you own, who has read what, manage wishlists, and see what to buy next — for multiple users sharing a single library.

Stack

  • Backend: Node.js + Express + SQLite (node:sqlite, requires Node ≥ 22.5)
  • Frontend: React 18 + Vite + Tailwind CSS + TanStack Query
  • Validation: Zod
  • Testing: Vitest (unit) + Playwright (E2E)

Getting Started

Local development

npm run setup   # install all deps (root + client)
npm run dev     # backend on :3001, Vite on :5173

Docker (production)

docker compose up -d

The app is served on port 3000. The SQLite database is persisted in a named volume (manga-data).

Scripts

Command Description
npm run setup Install all dependencies (root + client)
npm run dev Start dev servers (backend :3001, frontend :5173)
npm run build Production build → client/dist/
npm start Start production server on :3000
npm run typecheck TypeScript check (client only)
npm run lint ESLint (client)
npm run format Prettier (client)
npm run test Vitest unit tests
npm run test:e2e Playwright E2E tests (headless)
npm run test:e2e:ui Playwright E2E tests (interactive UI)

Project Structure

server.js          Express API
db.js              SQLite helpers + schema migrations (node:sqlite)
schemas.js         Zod input validation
client/src/
  api.ts           Typed fetch wrappers
  types.ts         Shared TypeScript types
  hooks/           Business logic hooks
  components/      UI components
  context/         MangaContext (users, currentUserId, colorOf)
  locale/          i18n strings (de/en)
e2e/               Playwright tests

Features

  • Track owned volumes per manga series
  • Per-user reading status
  • Wishlist per user
  • Buy list (volumes needed to complete a series)
  • Up Next view (what to read next)
  • Reading history
  • Hide manga per user
  • Borrowed volumes tracking
  • Multi-user with colour coding
  • PWA support
  • German/English UI