A web application for creating, managing, and visualizing tennis training routines and drills with persistent data storage.
- Visual Drill Creation: Interactive tennis court with realistic dimensions and lines
- Two-Click Shot System: Click to set start point, click again for end point with arrow visualization
- Player Movement Tracking: Add player movement paths with dashed blue lines
- Training Routines: Combine multiple drills into structured training sessions
- Session Playback: Timer-based drill execution with play/pause/navigation controls
- Persistent Storage: SQLite database for data persistence across sessions
- Mobile Responsive: Full-screen court editing on mobile devices
- Install dependencies:
npm install- Start the server:
npm start- Open your browser and navigate to
http://localhost:3000
- Go to the "Drills" section
- Click "Create New Drill"
- Fill in drill name, description, and duration (in minutes)
- Use the visual court editor:
- Add Player: Click to place yellow player markers
- Add Shot: Click start position, then click end position to create red shot arrows
- Add Movement: Click start position, then click end position to create blue movement paths
- Clear Court: Remove all elements
- Go to the "Routines" section
- Click "Create New Routine"
- Select multiple drills to combine into a training routine
- Go to the "Player" section
- Select a routine from the dropdown
- Click "Start Session" to begin timer-based training
- Use controls to play/pause, navigate between drills
The tennis court follows official ITF (International Tennis Federation) specifications:
- Court dimensions: 23.77m × 10.97m (doubles)
- Singles court: 23.77m × 8.23m
- Service line distance from net: 6.40m
- Net height: 0.914m at center, 1.07m at posts
- Tap the court on mobile to enter full-screen editing mode
- Full-screen court covers most of the screen for easier element placement
- Touch-friendly controls and responsive design
- Frontend: HTML5 Canvas, CSS3, Vanilla JavaScript
- Backend: Node.js with Express
- Database: SQLite for persistent storage
- API: RESTful endpoints for drills and routines management
For development with auto-restart:
npm run dev