MCPcopy Index your code
hub / github.com/cubny/lite-reader

github.com/cubny/lite-reader @v3.3.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.3.0 ↗ · + Follow
825 symbols 1,991 edges 143 files 248 documented · 30%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Lite Reader

Read your feeds on your own machine with a simple and lite application.

Feed list

Article reader

Table of Contents

Features

  • Lightweight and minimal feed aggregator
  • Easy to install and use
  • Supports data migration from legacy Lite Reader
  • New: Multi-user support with individual user feeds
  • Feed management: add, update, delete feeds
  • Item management: read, star, mark as read/unread

Requirements

  • None, just download the binary from the releases page and run it.

Installation

  1. Download the latest release from the releases page.
  2. Run the binary: sh ./lite-reader By default the SQLite database is stored in your OS user config directory (see Usage). To store it somewhere else, set DB_PATH to an absolute path: sh DB_PATH=/var/lib/lite-reader/agg.db ./lite-reader

Usage

  • Access the application via http://localhost:3000 (or your specified port).
  • The SQLite database lives in your OS user config directory by default: ~/.config/lite-reader/agg.db (Linux), ~/Library/Application Support/lite-reader/agg.db (macOS), %AppData%\lite-reader\agg.db (Windows). Override with an absolute path via DB_PATH=/absolute/path/agg.db.

Testing

Lite Reader includes comprehensive automated tests:

Unit Tests

# Run all Go unit tests
make test

# View coverage report
make coverage-report

UI Tests

# First-time setup (install Playwright)
make test-ui-setup

# Run automated UI tests
make test-ui

# Run UI tests with visible browser (for debugging)
make test-ui-headed

# Run all tests (unit + UI)
make test-all

For detailed testing documentation, see TEST.md.

Key Features: - Automated browser testing with Playwright - Mock RSS/Atom feed server (no internet required) - Happy path and edge case coverage - Fast execution (< 5 minutes) - CI/CD integration ready

Migration from Legacy Lite Reader

If you are using the legacy Lite Reader, you can migrate your data to the new Lite Reader. 1. Download the latest release of Lite Reader. 2. Copy your existing agg.db to the new default location: - Linux: ~/.config/lite-reader/agg.db - macOS: ~/Library/Application Support/lite-reader/agg.db - Windows: %AppData%\lite-reader\agg.db

Alternatively, point the binary at the old file with an absolute path: sh DB_PATH=/path/to/old/agg.db ./lite-reader 3. Run the new Lite Reader.

Contributing

We are looking for contributors! Here's how you can help: - Report bugs (https://github.com/cubny/lite-reader/issues/new) - Share your ideas (https://github.com/cubny/lite-reader/issues/new) - We are looking for a frontend engineer to rewrite the app with a modern stack

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contact

  • For any queries, please open an issue.

Extension points exported contracts — how you extend this code

FolderService (Interface)
(no doc) [6 implementers]
internal/infra/http/api/router.go
Scraper (Interface)
(no doc) [3 implementers]
internal/app/item/dependencies.go
UserService (Interface)
(no doc) [8 implementers]
internal/infra/job/dependencies.go
Parser (Interface)
(no doc) [2 implementers]
internal/app/feed/dependencies.go
FeedService (Interface)
(no doc) [3 implementers]
internal/infra/http/api/router.go
Finder (Interface)
(no doc) [2 implementers]
internal/app/feed/dependencies.go
ItemService (Interface)
(no doc) [3 implementers]
internal/infra/http/api/router.go
Repository (Interface)
(no doc)
internal/app/item/dependencies.go

Core symbols most depended-on inside this repo

EXPECT
called by 93
internal/mocks/app/feed/parser_mock.go
InternalError
called by 40
internal/infra/http/api/errors.go
request
called by 40
internal/web/public/js/api/client.js
waitFor
called by 32
tests/ui/utils/helpers.js
Wrap
called by 27
internal/infra/http/api/middleware/middleware.go
EXPECT
called by 20
internal/mocks/app/item/repo_mock.go
BadRequest
called by 19
internal/infra/http/api/errors.go
clickFeed
called by 18
tests/ui/pages/MainPage.js

Shape

Method 423
Function 276
Struct 95
Interface 16
Class 10
TypeAlias 4
FuncType 1

Languages

Go78%
TypeScript22%

Modules by API surface

internal/infra/http/api/router.go41 symbols
internal/infra/http/api/model.go38 symbols
internal/mocks/app/item/repo_mock.go32 symbols
tests/ui/pages/MainPage.js30 symbols
internal/mocks/infra/http/api/item_mock.go30 symbols
internal/mocks/app/auth/repo_mock.go22 symbols
internal/mocks/infra/job/dependencies_mock.go20 symbols
internal/mocks/infra/http/api/auth_mock.go20 symbols
internal/infra/sqlite/item/item.go19 symbols
internal/mocks/infra/http/api/feed_mock.go18 symbols
internal/mocks/app/feed/repo_mock.go18 symbols
internal/app/item/dependencies.go17 symbols

For agents

$ claude mcp add lite-reader \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact