commonplace-multi

commonplace-multi

apps.detail.types.app from Cansasdon's Repository

apps.detail.sections.overview

Commonplace Multi-User is a self-hosted Readwise alternative with multi-user support — capture, browse, review, and resurface your book and article highlights. Built on the original Commonplace with per-user scoping, invite-based registration, and independent settings per user. Features: • All single-user features — import from KOReader, Kindle, Obsidian, Readwise API • Multi-user support — each user gets their own highlights, tags, settings, and review queue • Admin invite system — admin creates one-time invite tokens, users register with password • Per-user BookOrbit sync — each user can sync their own BookOrbit annotations • Per-user push notification settings and review reminders • Full-text search with filter by source, tags, favorites, and book • Multi-source cover art via Hardcover.app and Open Library • Achievement system with per-user streak tracking • Backup & restore database and covers as ZIP • Responsive mobile UI with PWA push notification support First run: Open the web UI and the setup wizard will guide you through creating your admin account. Then invite additional users via the Admin panel.

commonplace-multi

A multi-user fork of Commonplace — the self-hosted Readwise alternative. Same app, now with isolated accounts for family or small teams.

  • Multi-user: Admin invites users. No public signup. All data (highlights, reviews, tags, streaks, achievements, push subscriptions) partitioned by user_id.
  • All the same features: Capture from KOReader/Kindle/Obsidian/Readwise, full-text search, daily review, achievements, themes, BookOrbit sync, Readeck sync, Readest sync, push notifications, Obsidian sync plugin.
  • Self-hosted: Single Docker container, SQLite database, no external services.

Upgrading from Single-User Commonplace

If you already run the original Commonplace (single-user), switching to this fork is a one-time migration:

  1. Backup your data — copy your volume's data/ directory.
  2. Swap the image — deploy ghcr.io/cansas/commonplace-multi:latest with the same mounted volume.
  3. Restart — migration runs automatically on startup:
    • Adds user_id to all tables, sets existing data to user_id=1
    • Migrates per-user settings (theme, review count, hardcover key, push prefs) from .settings.json to the DB
    • Rebuilds FTS5 search index
  4. Your existing admin account (user_id=1) keeps all data. Start inviting users at /admin/users.

No manual SQL, no config changes, no downtime beyond the container restart.

Quick Start (Fresh Install)

docker run -d --name commonplace-multi -p 8765:8765 \
  -v ./data:/app/data \
  ghcr.io/cansas/commonplace-multi:latest

Open http://localhost:8765 and the setup wizard creates the admin account. Then visit /admin/users to invite others.

Documentation

Document Description
API.md Full API reference — all endpoints with auth, params, and examples
ENV.md Environment variables reference
INSTALL.md Server, KOReader plugin, and Obsidian plugin setup
CONTRIBUTING.md Bug reports, PR workflow, AI code policy

Features

  • Multi-user — invite-only registration, admin user management, data fully isolated
  • Highlights — add, edit, delete, search, filter by source/favorites/book
  • Books view — browse by book with covers (HardCover.app + Open Library), rename/merge/delete
  • Book metadata — set HardCover ID or ISBN for reliable cover lookups
  • Tag management — create, rename, merge, delete tags with optional color coding
  • Import — Readwise Obsidian .md, KOReader JSON, Kindle My Clippings, Readwise-compatible API
  • Export — batch export all highlights as JSON
  • Backup & Restore — ZIP download with database + covers, restore from ZIP
  • Share cards — PNG/SVG share cards per highlight with OpenGraph meta tags
  • Themes — Modern, Reader, Dark, plus custom themes — drop a .css file into data/themes/ or upload via Settings
  • Streaks — track daily review streaks with current and best counters
  • BookOrbit Sync — auto-import annotations from BookOrbit (kobo, koreader, web) with SHA256 fingerprint dedup
  • Readeck Sync — pull annotations from a self-hosted Readeck instance (read-it-later) with SHA256 fingerprint dedup and per-bookmark source tracking. Configure in Settings → Readeck tab: server URL, API token (Readeck profile → API token), and an auto-sync toggle. Manual Sync Now runs on demand; token and connection failures surface as errors instead of a silent 0-import report
  • Readest Sync — push highlights from the Readest reader (desktop, web, mobile) via its built-in Readwise integration. Configure in Readest → Settings → Integrations → Readwise: paste a Commonplace API token and set the base URL to https://your-commonplace-host/api. Highlights auto-push while reading (5s debounce) plus a manual "Push All" per book
  • Push notifications — review reminders and streak-at-risk alerts via Web Push (VAPID)
  • First-run wizard — web-based admin creation, no env vars required

License

MIT No Attribution

apps.marketingCta.appInstallTitle

apps.marketingCta.appInstallDescription

apps.installHelp.stepOpen apps.installHelp.stepSearchApp apps.installHelp.stepReview apps.installHelp.stepInstall

apps.detail.sections.categories

apps.detail.sections.related

apps.detail.related.exploreCategories

apps.detail.related.exploreAll

apps.detail.sections.details

apps.detail.details.repository
ghcr.io/cansas/commonplace-multi:latest
apps.detail.details.registry
apps.detail.details.lastUpdated2026-08-13
apps.detail.details.firstSeen2026-08-13

apps.detail.sections.runtime

apps.detail.details.webui
http://[IP]:[PORT:8765]/
apps.detail.details.network
bridge
apps.detail.details.shell
sh
apps.detail.details.privileged
false

apps.detail.sections.configuration

Web UI PortPorttcp

Main web interface port

apps.detail.config.target
8765
apps.detail.config.default
8765
Data pathPathrw

Persistent storage for SQLite database, covers, backups, and settings. Maps to /app/data in the container.

apps.detail.config.target
/app/data
apps.detail.config.default
/mnt/user/appdata/commonplace-multi/data
SESSION_SECRETVariable

Secret key for signing session cookies and CSRF tokens. If left empty, a random one is generated and persisted in data/.session_secret on first start. Set explicitly for production to avoid invalidating sessions on restart.

TZVariable

Timezone for the container (used by the email digest scheduler and review timestamps).

apps.detail.config.default
America/Chicago
COMMONPLACE_USERNAMEVariable

Optional — admin username for auto-creating the initial account on first start. If not set, the setup wizard prompts for credentials in the browser on first launch.

COMMONPLACE_PASSWORDVariable

Optional — admin password. Must be set together with COMMONPLACE_USERNAME if that is set. Ignored if USERNAME is empty.

SESSION_HTTPS_ONLYVariable

Set to 'true' if you access Commonplace over HTTPS with a valid certificate. Ensures the session cookie is only sent over encrypted connections. Keep 'false' for LAN-only HTTP access.

apps.detail.config.default
false
HARDCOVER_API_KEYVariable

Optional — API key for Hardcover.app for better book cover art. Can also be set later from the Settings page in the web UI. When empty, falls back to Open Library covers (no key needed).