Professional football tactical visualization for sports content creators.
Features • Getting Started • Usage • Tech Stack • Contributing • License
BoardX is a browser-based tactical board built for sports content creators, analysts, and coaches. Drag players onto a pitch, animate tactical sequences frame-by-frame, draw annotations, and export polished visuals for social media — all without leaving your browser.
- Standard football pitch (1280x720) with half-space and central zone highlights
- 22 draggable players (11 home + 11 away) with editable labels, numbers, and team colors
- Draggable ball token
- Show/hide individual teams
- 13 preset formations: 4-3-3, 4-4-2, 4-2-3-1, 3-5-2, 5-4-1, 4-1-4-1, 3-4-3, 4-3-1-2, 4-5-1, 3-4-2-1, 4-4-1-1, 4-1-2-1-2, 5-3-2
- One-click switching with smooth position transitions
- Configurable formation lines connecting groups of players
- Bulk roster import via CSV (
number,label)
- Frame-by-frame animation with smooth interpolation (easeInOutQuad)
- Each keyframe stores player positions, ball position, and annotations
- Movement paths shown as dashed lines between frames
| Tool | Action | Result |
|---|---|---|
| Arrow | Click & drag | Arrow for passing lanes and runs |
| Circle | Click & drag | Dashed circle to highlight zones |
| Text | Click & type | Free-form text labels |
| Select | Drag | Move players and the ball |
Drawings sync to keyframes with smooth grow/shrink animations between frames.
- PNG — High-resolution static image (2x)
- WebM — Video export for match analysis
- GIF — Optimized for social media sharing
- English and Simplified Chinese
- Auto-detects browser language, with manual toggle
- Node.js 18+
- npm
git clone https://github.com/massuhora/boardx.git
cd boardx
npm installnpm run devOpen http://localhost:3000 in your browser.
npm run build
npm run preview- Set up — Drag players and the ball to starting positions, or select a preset formation
- Add keyframe — Click Add Keyframe to capture the current state
- Rearrange — Move players to the next tactical position
- Annotate (optional) — Use arrow, circle, or text tools to draw on the pitch
- Repeat — Add more keyframes to build the sequence
- Preview — Click Play Animation to watch the full sequence
- Export — Choose PNG, Video, or GIF
- Expand Team Roster in the sidebar
- Enter one player per line in
number,labelformat (e.g.10,Messi) - Click Apply to update the team
- Toggle Formation Lines on
- Click Configure Lines
- Create chains by naming the group and clicking players in order
- Edit or delete chains at any time
| Layer | Technology |
|---|---|
| Framework | React 19 |
| Language | TypeScript |
| Build | Vite |
| Styling | Tailwind CSS v4 |
| Canvas | Konva / react-konva |
| State | Zustand |
| i18n | i18next / react-i18next |
| Icons | Lucide |
Contributions are welcome! Please feel free to submit a pull request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Konva.js — Canvas rendering engine
- Zustand — Lightweight state management
- Tailwind CSS — Utility-first CSS
- Lucide — Beautiful icons
- i18next — Internationalization framework
