Files
twitter-lite/README.md
T

2.3 KiB

Twitter Lite

Twitter Lite is an intentional, read-only X reader. It stays empty until you enter a user handle, profile URL, or search query.

Scope

  • User timelines and raw X search syntax
  • Popular (Top) and chronological (Latest) search
  • Optional filter:follows search
  • Infinite cursor pagination with explicit retry
  • Read-only cards for text, media, quotes, articles, and quiet engagement counts

It intentionally has no home feed, recommendations, trends, notifications, history, account directory, or write actions.

Requirements and setup

Use Nix, or Node.js >=22.12.0 with pnpm 11.9.0. The package link also requires a local Bird checkout at ../bird, exactly at unpublished commit 81921226f099e7f7a2107be15fc9783218a6f400.

A fresh clone of the remote Bird repository alone does not contain that local Top/Latest commit yet. Obtain the supplied checkout; do not assume the commit or a compatible package has been published.

cd ../bird
git rev-parse HEAD
nix develop -c pnpm install --frozen-lockfile
nix develop -c pnpm run build:dist

cd ../twitter-lite
nix develop -c pnpm install --frozen-lockfile
cp .env.example .env.local

Set TWITTER_RELAY_BASE_URL in .env.local for Vite development, and set BIRD_PROFILE_NAME when the relay has multiple profiles. Export the same values in the process environment before start or test:live:

export TWITTER_RELAY_BASE_URL=http://127.0.0.1:6900
export BIRD_PROFILE_NAME=

Both values are read by server-only code at runtime; neither value nor Bird is sent to the browser.

Commands

nix develop -c pnpm dev
nix develop -c pnpm dev:tailscale
nix develop -c pnpm test
nix develop -c pnpm test:e2e
nix develop -c pnpm test:live
nix develop -c pnpm build
nix develop -c pnpm start

test:e2e is intentionally Nix-only and uses the system Chromium supplied by the dev shell. test:live is an explicit, opt-in smoke test that performs exactly one read-only Top search using the configured relay.

Development binds to 127.0.0.1 by default. dev:tailscale binds to 0.0.0.0, so it exposes the app on LAN interfaces as well as Tailscale. Use it only on a trusted network and obtain the Tailscale address with tailscale ip -4.

Reliability

Bird uses X's internal GraphQL operations through the configured relay. Query IDs and response shapes can change without notice.