Skip to content
Projects

slax-lab/slax-reader has 85 GitHub stars and 5 forks. GitHot measured 0 stars in 24 hours and +1 in 7 days. Last checked 2026-11-15 08:50 UTC. Last push 2026-11-03.

How these counts are measured

Measured star growth

in 24h
0
in 7 days
+1
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

About

Open-source, AI-powered read-it-later — save web pages, highlight, and discuss

Productivity

README.md

Original

Slax Reader

Open-source, AI-powered read-it-later — save web pages, highlight, and discuss.

Slax Reader web app

Get Slax Reader

Follow @SlaxReader on X for updates.

What it does

  • Permanent snapshots — saved pages stay readable even after the original link dies.
  • AI reading aids — outlines, summaries, and in-context answers while you read.
  • Highlight and discuss — annotate any passage, then share the page; anyone with the link can join the discussion.

Repository structure

This monorepo hosts all Slax Reader code:

Path Description
apps/web Web frontend (r.slax.com)
apps/extension Browser extension (Chrome/Edge)
apps/mobile Expo / React Native Android and iOS app
apps/api API server (Cloudflare Workers: Core, Edge, AI and Browser)
apps/cli Command-line client
packages/contracts Shared API, domain and event contracts (@slax-reader/contracts)
packages/frontend-types Shared Web/Extension implementation types
packages/frontend-utils Shared frontend utilities
packages/reader-embed Portable reader assets and PDF runtime for mobile hosts
packages/selection Shared highlighting and annotation engine
deploy/ Public API template and local app infrastructure
docs/ Web, Extension, API, CLI and mobile development docs
tests/e2e End-to-end tests
tooling/ Command dispatchers and repository tooling

Shared libraries belong in packages when at least two apps use them. See the Web architecture for the current application and package boundaries.

Development and self-hosting

Install dependencies once from the repository root:

pnpm install --frozen-lockfile

The root exposes one dispatcher per application while each app keeps its concrete command list:

pnpm preflight
pnpm setup:all
pnpm api -- dev
pnpm web -- dev
pnpm extension -- dev

pnpm preflight checks the Node.js/pnpm runtime and the API, Web, and Extension module states without changing local files or services. After configuration is prepared, pnpm setup:all runs API setup, Web setup, and Extension setup in order. Run the three dev commands separately; setup never starts application servers.

The API's setup command prepares local dependencies and exits; dev starts Workers separately. Use pnpm api -- setup when only the API needs to be initialized again. Remote deployment and migrations remain explicit operations with their safety checks. See the API development guide (中文, 日本語).

Preflight distinguishes startup blockers (当前无法启动) from missing functionality (可启动,但无法正常运行), such as unavailable Docker or missing login settings. Both return exit code 1; optional features do not. See Reading preflight results for status meanings and recovery steps.

Web and Extension configuration lives alongside the API's under deploy/local/, distinguished by filename: .env.web/.env.web.example for Web, .env.extension/.env.extension.example for Extension. The API uses the public template deploy/cloudflare/api.toml.example and ignored local configuration under deploy/local/. Secrets belong in ignored local environment files or platform secret stores; do not put them in tracked templates or browser bundles.

API commands and API-specific configuration belong to apps/api/, including Prisma configs under prisma/ and deployment code under script/deploy/. The root api command forwards to the scripts declared by apps/api/package.json. Validation commands include:

pnpm api -- gen:all
pnpm api -- lint
pnpm api -- typecheck
pnpm api -- test
pnpm api -- build

Shared HTTP types live in packages/contracts. Web, Extension, API and CLI code import the contract package and do not import application internals.

CLI

The CLI is published as @slax-lab/reader-cli with the reader-cli executable. It needs no local deployment configuration to build or test:

pnpm cli -- typecheck
pnpm cli -- build
pnpm cli -- start --help
pnpm cli -- test
pnpm cli -- test:package
pnpm test:cli-tooling

See CLI development and automated npm/GitHub releases. Merges that change the CLI and increase its package version automatically create cli-v<version>-dev and cli-v<version>-beta GitHub Pre-Releases on dev and beta. Promotion to main creates cli-v<version> and publishes the same tested stable archive through npm OIDC and GitHub Release; no user-added Actions secret is required.

Contributing

Bug reports, features, and docs are all welcome. You can contribute without a development environment through Web 开发与参与指南 or Extension development. Please follow our Code of Conduct.

License

Apache License 2.0. Copyright is held by The Slax Reader Contributors — see NOTICE for details.