Setup Guide
Quick Install (Recommended)
Install Checkmate with a single command using our interactive installer:
curl -fsSL https://raw.githubusercontent.com/ds-horizon/checkmate/master/bootstrap.sh | bash
Or using wget:
wget -qO- https://raw.githubusercontent.com/ds-horizon/checkmate/master/bootstrap.sh | bash
The installer will:
- ✅ Automatically check and install all prerequisites
- ✅ Guide you through Google OAuth setup step-by-step
- ✅ Configure everything for you
- ✅ Get Checkmate running in minutes
That's it! Skip to Verify Installation after running the installer.
Manual Installation
If you prefer manual installation or need more control, follow these steps.
Prerequisites
Before starting, ensure you have the following installed:
| Requirement | Version | Purpose |
|---|---|---|
| Docker Desktop | Latest | Container runtime |
| Node.js | 18.x+ | JavaScript runtime |
| Yarn | 1.x | Package manager |
| Git | Any | Version control |
New to Docker? Download it from docker.com and make sure it's running before proceeding.
Google OAuth Setup
Checkmate uses Google OAuth for authentication. You'll need to create a Google Cloud OAuth application.
-
Go to Google Cloud Console
Visit Google Cloud Console and create or select a project.
-
Enable Google+ API
Navigate to APIs & Services → Library and enable the Google+ API.
-
Create OAuth Credentials
Go to APIs & Services → Credentials and click Create Credentials → OAuth 2.0 Client ID.
-
Configure OAuth Consent Screen
- Application name:
Checkmate(or your preferred name) - User support email: Your email
- Developer contact: Your email
- Add test users if needed
- Application name:
-
Configure OAuth Client
- Application type: Web application
- Name:
Checkmate Local(or your preferred name) - Authorized JavaScript origins:
http://localhost:3000 - Authorized redirect URIs:
http://localhost:3000/callback
-
Save Credentials
Copy the Client ID and Client Secret — you'll need these for the
.envfile.
For production deployments, replace localhost:3000 with your actual domain (e.g., https://yourdomain.com and https://yourdomain.com/callback).
Installation
Choose your preferred setup method:
- Local Development
- Docker (Full Stack)
Local Development Setup
Run Checkmate locally with hot reload for development.
-
Clone the repository
git clone git@github.com:dream-sports-labs/checkmate.git
cd checkmate -
Install dependencies
yarn install -
Configure environment variables
Copy
.env.exampleto.env:cp .env.example .envUpdate the following required values:
# Database
DATABASE_URL=mysql://root:password@localhost:3306/checkmate
# Google OAuth (from previous step)
GOOGLE_CLIENT_ID=your_google_client_id_here
GOOGLE_CLIENT_SECRET=your_google_client_secret_here
# Session Secret (generate a random string)
SESSION_SECRET=your_random_session_secret_here -
Start the database
yarn docker:db:setupThis creates a MySQL container and seeds initial data.
-
Start the application
yarn devThe app will be available at http://localhost:3000
The dev server supports hot reload — changes to your code will automatically refresh the app.
Docker Full Stack Setup
Run both the application and database in Docker containers (production mode).
-
Clone the repository
git clone git@github.com:dream-sports-labs/checkmate.git
cd checkmate -
Install dependencies
yarn install -
Configure environment variables
Copy
.env.exampleto.env:cp .env.example .envUpdate the following required values:
# Database
DATABASE_URL=mysql://root:password@checkmate-db:3306/checkmate
# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id_here
GOOGLE_CLIENT_SECRET=your_google_client_secret_here
# Session Secret
SESSION_SECRET=your_random_session_secret_herenoteNote the hostname
checkmate-dbinstead oflocalhost— this is the Docker service name. -
Start all services
yarn docker:setupThis command:
- Creates MySQL container
- Seeds the database
- Builds and starts the application container
The app will be available at http://localhost:3000
Docker setup runs in production mode (no hot reload). Use local development setup for active development.
Verify Installation
After starting Checkmate, verify everything is working:
-
Open the application
Navigate to http://localhost:3000
-
Sign in with Google
Click "Sign in with Google" and authenticate with your Google account.
-
Check the dashboard
You should see the Projects page with seed data (sample projects, tests, and runs).
First-time users are created automatically with the user role. To make yourself an admin, update the users table in the database.
Database Management
Database Scripts
| Command | Purpose |
|---|---|
yarn docker:db:setup | Create MySQL container and seed from seedData.sql |
yarn dev:db:setup | Apply schema changes and seed from app/db/seed/ |
yarn db:init | Insert seed data from app/db/seed/ folder |
yarn db:studio | Open Drizzle Studio to explore the database |
yarn db:generate | Generate SQL files from Drizzle schema |
Drizzle Studio
Explore and manage your database with a visual interface:
yarn db:studio
Opens at http://localhost:4983
Features:
- Browse all tables and data
- Edit records directly
- Execute custom queries
- View table relationships
Schema Migrations
When modifying the database schema:
-
Update schema files
Edit files in
app/db/schema/ -
Generate migration
yarn db:generate -
Apply migration
yarn dev:db:setup
MCP Server Setup (Optional)
Checkmate includes an MCP (Model Context Protocol) server that allows AI assistants like Claude to interact with your Checkmate instance programmatically.
Quick Setup
-
Create MCP Server Environment File
Copy the example file:
cd mcp-server
cp .env.example .env -
Get Your API Token
- Start Checkmate:
yarn docker:setup - Login at http://localhost:3000
- Navigate to User Settings → API Tokens
- Click Generate Token
- Copy the token
- Start Checkmate:
-
Configure MCP Server
Edit
mcp-server/.env:CHECKMATE_API_BASE=http://localhost:3000
CHECKMATE_API_TOKEN=your-api-token-here -
Start MCP Server
The MCP server starts automatically with Docker:
docker-compose up -dOr run locally:
cd mcp-server
npm install
npm run build
node build/index.js
Docker Deployment
When using Docker, the MCP server is included in docker-compose.yml:
- Service name:
checkmate-mcp - Container name:
checkmate-mcp - Auto-starts: Yes, with
docker-compose up -d - Configuration: Uses
mcp-server/.env
Verify MCP Server
Check if the MCP server is running:
# Check Docker container
docker-compose ps checkmate-mcp
# View logs
docker-compose logs -f checkmate-mcp
Connect to AI Assistants
See the MCP Server README for detailed instructions on connecting to:
- Claude Desktop
- Cursor IDE
- Other MCP-compatible clients
For Docker deployments, use http://checkmate-app:3000 as CHECKMATE_API_BASE in mcp-server/.env (internal Docker network).
Troubleshooting
Cannot connect to database
Problem: Application can't connect to MySQL.
Solution:
- Verify Docker is running
- Check container status:
docker ps - Restart database:
yarn docker:db:setup - Verify
DATABASE_URLin.envmatches your setup
Google OAuth errors
Problem: OAuth login fails or redirects incorrectly.
Solution:
- Verify
GOOGLE_CLIENT_IDandGOOGLE_CLIENT_SECRETare correct - Check authorized origins and redirect URIs in GCP
- Ensure you're using
http://localhost:3000(nothttps) - Clear browser cookies and try again
Port 3000 already in use
Problem: Cannot start application — port is taken.
Solution:
# Find process using port 3000
lsof -ti:3000
# Kill the process
kill -9 $(lsof -ti:3000)
# Or change the port in vite.config.ts
Database seed fails
Problem: Seed data not loading correctly.
Solution:
- Drop and recreate database:
yarn docker:db:setup - Check
seedData.sqlfile exists - Verify MySQL container is healthy:
docker logs checkmate-db
Permission denied errors
Problem: Cannot access database or files.
Solution:
- Check Docker has necessary permissions
- On Linux, run:
sudo usermod -aG docker $USER(then log out and back in) - Verify file permissions:
ls -la
Environment Variables Reference
Required Variables
# Database Connection
DATABASE_URL=mysql://root:password@localhost:3306/checkmate
# Google OAuth Credentials
GOOGLE_CLIENT_ID=your_client_id
GOOGLE_CLIENT_SECRET=your_client_secret
# Session Management
SESSION_SECRET=random_secret_string_min_32_chars
Optional Variables
# Server Configuration
PORT=3000
NODE_ENV=development
# Logging
LOG_LEVEL=info
Generate secure secrets: Use openssl rand -base64 32 to generate a strong SESSION_SECRET.
Next Steps
User Guide
Learn how to use Checkmate
System Architecture
Understand how Checkmate works
API Documentation
Integrate with Checkmate APIs
Contributing
Contribute to the project
Additional Resources
- GitHub Repository: dream-sports-labs/checkmate
- Discord Community: Join Discord
- Report Issues: GitHub Issues
- Docker Documentation: docker.com/docs
- Google OAuth Guide: Google Identity Platform