An interactive learning platform for mastering tmux and Neovim. Practice with real terminals in your browser.
Website: vimux.dev
- Real neovim and tmux running in isolated containers
- Interactive lessons from beginner to advanced
- Keyboard shortcut reference with search
- Progress tracking across sessions
- No installation required
git clone https://github.com/devatnull/vimux.git
cd vimux
npm install
npm run devvimux.dev (Vercel) api.vimux.dev (Hetzner)
Frontend ---> Backend
Next.js Node.js + Docker
Lessons UI Real terminals
The frontend runs on Vercel. The backend runs isolated Docker containers with neovim and tmux, connected via WebSocket.
Frontend
- Next.js 16 (App Router)
- TypeScript
- Tailwind CSS
- Zustand (state management)
- xterm.js (terminal emulator)
Backend
- Node.js
- Docker (Alpine containers)
- WebSocket
src/
app/ Next.js pages
components/ React components
lib/ Utilities, types, lessons
backend/
src/ WebSocket server
containers/ Docker config, practice files
deploy/ Server setup scripts
# Frontend
npm run dev
# Backend (requires Docker)
cd backend
npm install
npm run devSee DEPLOY.md for full server setup instructions.
Frontend: Deploy to Vercel, set NEXT_PUBLIC_WS_URL=wss://api.vimux.dev/ws
Backend: See deployment guide for Hetzner/Ubuntu setup.
Contributions welcome. Please read the guidelines below.
Edit src/lib/lessons.ts. Each lesson needs:
- Unique ID
- Title and description
- Category: tmux, neovim, or workflow
- Difficulty: beginner, intermediate, or advanced
- Steps with expected keys and validation
Edit src/lib/shortcuts.ts. Each shortcut needs:
- ID, keys array, description
- Category and optional subcategory
- TypeScript strict mode
- Functional components with hooks
- No unnecessary comments in code
- Run
npm run lintbefore committing
MIT