A beautiful, fast, and modern web client for Mastodon
Features • Quick Start • Tech Stack • Contributing • Support
- Virtualized Lists — Smooth scrolling with large datasets using TanStack Virtual
- React Compiler — Automatic memoization for optimized re-renders
- Optimistic Updates — Instant UI feedback on all interactions
- Smart Caching — Efficient data management with TanStack Query
- WebSocket Streaming — Live updates for notifications and conversations
- Push Notifications — Never miss a mention with PWA notifications
- Notification Sounds — Audio alerts for real-time updates
- Messenger-Style DMs — Beautiful chat bubbles for direct messages
- Real-Time Conversations — Instant message delivery and updates
- Quick Compose — Start conversations with anyone
- Dark Mode — Easy on the eyes, any time of day
- Open Props — Modern design tokens for consistent styling
- Responsive — Optimized for mobile, tablet, and desktop
- Skeleton Loaders — Smooth loading states throughout
- 10 Languages — English, German, Spanish, French, Japanese, Korean, Burmese, Thai, Vietnamese, Chinese
- Year in Review — Discover your Mastodon personality and stats
- Shareable Cards — Show off your Mastodon journey
- Content Filters — Customize what you see
- Blocks & Mutes — Control your experience
- Report System — Multi-step, category-based reporting
- Installable — Add to home screen on any device
- Vim-style Navigation — Move between posts with
j/k - Post Actions — Like (
f), Boost (b), Reply (r), or Quote (q) instantly - Quick Navigation — Jump to Home (
gthenh), Notifications (gthenn), Explore (gthenl), or Profile (gthenp) - Help Modal — Press
?anytime to see the full list of shortcuts
# Clone the repository
git clone https://github.com/channyeintun/next-mastodon.git
cd next-mastodon
# Install dependencies (using Bun for speed)
bun install
# Start development server
bun run dev
# Build for production
bun run buildThe app will be available at http://localhost:9003
| Category | Technologies |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| Runtime | React 19 with React Compiler |
| State Management | TanStack Query + MobX |
| Styling | Emotion + Open Props |
| Rich Text | Tiptap with custom extensions |
| Virtualization | TanStack Virtual |
| Forms | React Hook Form + Zod |
| Build | Bun |
src/
├── app/ # Next.js App Router pages
├── api/ # Mastodon API client & TanStack Query
├── components/ # Atomic Design (atoms → molecules → organisms)
├── hooks/ # Custom React hooks
├── stores/ # MobX global state
├── lib/ # Libraries (Tiptap extensions, IndexedDB)
├── types/ # TypeScript type definitions
└── utils/ # Utility functions
For detailed architecture documentation, see CLAUDE.md.
We welcome contributions! Whether it's:
- 🐛 Bug fixes — Found something broken? Let's fix it!
- ✨ Features — Have an idea? Open an issue to discuss
- 📖 Documentation — Help others understand the project
- 🌍 Translations — Help us reach more users
Check out our Pull Request Template for guidelines.
- CLAUDE.md — Architecture & technical docs
- Browser Requirements — Browser compatibility info
If you find this project useful, consider:
⭐ Star this repo — It helps others discover the project!
MIT © 2025 Chan Nyein Tun
Made with ❤️ for the Fediverse