A real-time planning poker application built with Claude code, Svelte and Socket.io. Hosted at: Split Pot
- Create or join poker rooms with a unique ID
- Real-time voting with multiple participants
- Reveal/hide votes functionality
- Reset voting for new rounds
- Calculates average of numeric votes
- Clean, responsive UI
- Node.js 18+
- npm
-
Clone the repository:
git clone https://github.com/martinmeinke/splitpot.git cd splitpot -
Install dependencies:
npm install -
Create a local environment file:
cp .env.example .env.local -
Start the development server:
npm run dev
This will start both the frontend (Vite) and backend (Express) servers concurrently:
- Frontend: http://localhost:5173
- Backend: http://localhost:8080
The application is designed to be deployed as:
- Frontend on Netlify
- Backend on Fly.io
- Create a new site on Netlify
- Connect your repository
- Configure build settings:
- Build command:
npm run build - Publish directory:
dist
- Build command:
- Set environment variables:
VITE_BACKEND_URL: The URL of your deployed backend (e.g., https://your-app.fly.dev)
- Deploy!
-
Install the Fly.io CLI:
curl -L https://fly.io/install.sh | sh -
Login to Fly.io:
fly auth login -
Launch your app (first-time setup):
fly launch- This will use the existing
fly.tomlfile - Choose appropriate region
- This will use the existing
-
Set environment variables:
fly secrets set ALLOWED_ORIGINS=https://splitpot.netlify.app -
Deploy the app:
fly deploy
- Open the application in your browser
- Create a new room or join an existing one by entering the room ID
- Share the room ID with your team members
- Select your story point estimate by clicking on a card (options range from 0.5 to 8, with ☕ indicating a coffee break)
- When everyone has voted, click "Reveal Votes" to show all estimates
- Click "Reset Votes" to start a new round
├── dist/ # Built frontend files
├── public/ # Static public assets
├── src/ # Frontend source code
│ ├── lib/ # Svelte components
│ ├── App.svelte # Main application component
│ └── main.js # Frontend entry point
├── server.js # Backend server code
├── vite.config.js # Vite configuration
├── netlify.toml # Netlify configuration
├── fly.toml # Fly.io configuration
└── Dockerfile # Docker configuration for Fly.io
VITE_BACKEND_URL: URL of the backend API
PORT: Port for the server (default: 8080)ALLOWED_ORIGINS: Comma-separated list of allowed CORS origins
- Frontend: Svelte 5, Vite, Bootstrap 5
- Backend: Express.js, Socket.IO
- Deployment: Netlify (frontend), Fly.io (backend)