A Next.js 16 dashboard for browsing, searching, and tracking liked tweets from your Twitter data archive exports.
Twitter's Data Privacy feature lets you download your complete account data as a self-contained archive. This project provides an interactive UI to explore those archives without being logged in for every action.
- Multi-archive support — load multiple Twitter data exports and browse them individually or as a single deduplicated view
- Full-text search — filter tweets by keyword in real time
- 4-state read tracking — cycle each tweet through Read → In-Progress → Ignore → Unread; batch save pending changes
- Bookmarks — star any tweet to bookmark it; dedicated Bookmarks tab filters to bookmarked tweets only
- Statistics — read/unread progress bars, overall and broken down by year
- Word cloud — most frequent words across all tweet text; click a word to see matching tweets; dismiss irrelevant words
- Year navigation — year divider headings in the tweet list with a sticky side panel for quick jumps on wide screens
- Markdown export — download any archive view as a
.mdfile - URL expansion —
t.coshort links are expanded to their real destinations - Preflight checks — automatic dependency and build-cache validation before
npm run dev
- Node.js v18+
- npm v8+
- One or more Twitter data archives (exported via Twitter's data download)
Place your exported Twitter archive folders inside zip/:
zip/
├── twitter-2022-02/
├── twitter-2023-12/
├── twitter-2024-11/
└── ...
Ensure each folder contains data/like.js. Archives are detected automatically.
cd dashboard
npm installExpands t.co short URLs to their real destinations:
npm run expand-urlsThis is resumable — safe to interrupt and re-run. Dead links are stored as null and shown as [Dead link] in the UI. Previously dead links are automatically rechecked on each run.
npm run devOpen http://localhost:3000 in your browser. A preflight check runs automatically before the dev server starts, validating dependencies and build cache.
Produces a single Markdown file of all liked tweets with read-state and bookmark fields for tracking:
npm run generate-consolidatedOutput: asset/CONSOLIDATED.md. Append-only — existing entries and manual edits are preserved on re-run.
Precomputes the top 500 most frequent words for the Insights tab:
npm run generate-word-cloudOutput: asset/word-cloud.json and asset/IGNOREDWORDS.md. User-dismissed words are preserved across regenerations.
| URL | Description |
|---|---|
/ |
Redirects to /archive/all |
/archive/all |
All archives merged, globally deduplicated |
/archive/all/export |
Download combined Markdown export |
/archive/{name} |
Single archive view |
/archive/{name}/export |
Download that archive's Markdown export |
twitter-archive-explore/
├── zip/ # Twitter data archives (read-only)
├── dashboard/ # Next.js 16 app (React 19, Tailwind 4)
│ └── src/
│ ├── app/ # Pages and API routes
│ ├── components/ # React components
│ ├── lib/ # Parsers, utilities, word cloud logic
│ ├── scripts/ # CLI scripts (expand-urls, generate-*, preflight)
│ └── types/ # TypeScript type definitions
├── asset/ # Generated files (gitignored)
│ ├── url-cache.json
│ ├── word-cloud.json
│ ├── IGNOREDWORDS.md
│ └── CONSOLIDATED.md
├── images/ # Screenshots for README
└── scripts/ # Git hooks (pre-commit)
All commands run from inside dashboard/:
| Command | Description |
|---|---|
npm run dev |
Start dev server (runs preflight automatically) |
npm run build |
Production build |
npm run start |
Serve production build |
npm run preflight |
Run dependency & build-cache checks manually |
npm run expand-urls |
Build/update the t.co URL expansion cache |
npm run generate-consolidated |
Create or append to asset/CONSOLIDATED.md |
npm run generate-word-cloud |
Generate or refresh word cloud frequencies |
npm test |
Run unit tests (Vitest) |
npm run test:watch |
Run tests in watch mode |
For detailed technical reference, see CLAUDE.md. For step-by-step setup instructions, see INSTRUCTIONS.md.
MIT, (c) Sourav


