Media-first browser for X bookmarks exported through Field Theory.
Live demo: corychainsman.github.io/twitter-bookmarks
- Real exported bookmark media data committed into
public/data - Fast client-side search, folder filtering, sort controls, and URL-backed state
- Static CLIP embedding index for concept search across tweet text, images, and video poster frames
- Text search, image search, and “Similar” browsing with no backend
One/Allmedia modesImmersivemedia-only mode- Theme Studio at
/themeswith live cross-tab updates and theme import/export - Static deployment to GitHub Pages
- React 19
- TypeScript
- Vite
- Bun
- shadcn/ui primitives
- Lucide icons
@virtuoso.dev/masonryfor the media grid
bun install
bun run devApp:
- Main app: http://localhost:5173/
- Theme Studio: http://localhost:5173/themes
The app is built to consume static JSON artifacts under public/data.
Typical refresh flow:
bun run sync:ft
bun run data:export
bun run data:embeddings
bun run data:validate
bun run buildConvenience commands:
bun run refresh
bun run refresh:resume
bun run refresh:full
bun run refresh:embeddingsNotes:
sync:ftdepends on a real local Field Theory/X session.- The exported app dataset is media-only; non-media bookmarks are not included in the shipped browsing surface.
data:embeddingsprecomputes a compact static CLIP vector index intopublic/data/embeddings/index.json.- Semantic search runs entirely in the browser: GitHub Pages serves the vector index, and Transformers.js loads the same CLIP model client-side to embed typed text or uploaded query images.
- Video and animated GIF entries are embedded from their exported poster/preview image, so similarity captures the representative visual frame rather than temporal motion.
bun run dev: start the local appbun run test: run Vitestbun run lint: run ESLintbun run typecheck: run TypeScript project checksbun run build: build the static appbun run preview: preview the production build locallybun run sync:ft: sync bookmark data from Field Theorybun run data:export: build static artifacts intopublic/databun run data:embeddings: build static semantic embedding artifacts intopublic/databun run data:validate: validate exported artifacts
Deployments are handled by .github/workflows/deploy.yml.
- Push to
main - GitHub Actions builds with
GITHUB_PAGES=true - The site is published at corychainsman.github.io/twitter-bookmarks
src/app/ App shell, router, theme studio
src/components/ Toolbar, grid, lightbox, media, UI primitives
src/features/bookmarks/ Query state, loaders, export contracts, caching
src/features/theme/ Theme model, runtime variables, persistence
src/workers/ Query worker
scripts/ Field Theory sync and export pipeline
public/data/ Shipped static bookmark artifacts