Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
翻訳待ち
Pin live sports scores, crypto prices, and custom feeds over any tab. Never alt-tab again.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
A pinned, always-on-top ticker for the things you actually care about. Live market quotes, game scores, and RSS feeds — streaming into a compact bar that floats on top of whatever you're working on. Multi-monitor aware. No ads or data sales; analytics are limited and controllable. Pick the sources you care about — each gets a focused view, and the pinned ticker streams the same data across the top of your screen. Scrollr is a monorepo. The desktop app is the product; everything else exists to feed it. [README 설치·사용 부분 발췌] Quick start — just run the desktop appRead the full README ↗
A pinned, always-on-top ticker for the things you actually care about.
Live market quotes, game scores, and RSS feeds — streaming into a compact bar that floats on top of whatever you're working on. Multi-monitor aware. No ads or data sales; analytics are limited and controllable.
Pick the sources you care about — each gets a focused view, and the pinned ticker streams the same data across the top of your screen.
| Sports. Scores, schedules, and standings across MLB, NBA, NHL, NFL, and F1, all live. | Finance. Stocks, ETFs, and crypto with live quotes from TwelveData. |
| News. Hacker News plus any RSS/Atom feed you throw at it. Categorized, deduped, sorted. |
Scrollr is a monorepo. The desktop app is the product; everything else exists to feed it.
| Path | Service | Stack |
|---|---|---|
desktop/ | Desktop app (the primary product) | Tauri v2 + React 19 + Vite 7 |
myscrollr.com/ | Marketing, auth, billing — not where widgets are configured | React 19 + Vite 7 + TanStack Start (static prerender) |
api/ | Core API: widget catalog, reads, SSE, billing, accounts, support | Go 1.26 + Fiber v2 + Postgres + Redis |
channels/finance/ | Market-data ingester (TwelveData) | Rust |
channels/sports/ | Scores + schedules ingester (api-sports.io) | Rust |
channels/rss/ | RSS/Atom ingester | Rust |
k8s/ | Production manifests | Kubernetes on DigitalOcean |
scripts/ | Dev + ops tooling: make helpers, smoke tests, osTicket plugin | Node, Shell, PHP |
docs/ | Charter, ADRs, roadmap, runbooks — indexed here | Markdown |
┌──────────────────┐ ┌──────────────────┐
│ desktop app │ │ myscrollr.com │
│ (Tauri + React) │ │ (React + Vite) │
└────────┬─────────┘ └────────┬─────────┘
│ │
│ JWTs via Logto │
▼ ▼
┌─────────────────────────────────────────┐
│ Core API (api/ · Go · Fiber) │ ← only JWT validator
│ GET /catalog the widget catalog │ ← owns every shared table
│ /users/me/widgets widget CRUD │
│ /dashboard /events reads + SSE │
│ /checkout billing │
│ finance · sports · rss │ ← served in-process
└──┬────────────────────────────────────┘
│ writes
▼
shared Postgres ◀── Rust ingesters: finance · sports · rss
│ (pure writers — they run no migrations)
└── Sequin CDC → Redis pub/sub → SSE → ticker
GET /catalog is the
single definition of what widgets exist. The desktop fetches it and
renders generically, so adding a widget that reuses an existing renderer
is a server-only change — no client release. The marketing site fetches it
too (useCatalog()) and keeps a snapshot as the offline and prerender
fallback.Read api/CHANNELS.md for the widget/source model
and how to add one.
Head to https://myscrollr.com/download and grab the build for your OS. macOS builds are signed and notarized. Windows signing is tracked separately; the download page carries the current installation guidance.
make setup # generate every .env file (once)
make up # start the whole backend in Docker
make dev # ...and open the site + desktop app
make on its own lists every command, grouped.
You need Docker Desktop, Node 22+ and make — that's it. No Go
or Rust toolchain: the backend compiles inside its containers, and editing
a .go or .rs file hot-reloads that service in place rather than
requiring a rebuild. make doctor checks your machine and names the fix
for anything missing.
The two front-ends run natively (a GUI window can't live in a Linux
container). Full topology, ports and troubleshooting:
docs/LOCAL_SETUP.md.
make check # both TypeScript suites — the ones that run without a toolchain
This is the beginning of the README. Read the rest at the original. Read the full README ↗