Enterprise-Grade Chess Tournament Management & Broadcasting Platform.
CrossTable is a definitive, full-stack platform designed for professional chess arbiters, organizers, and players. It streamlines the complexities of FIDE-rated tournament administration, offering automated pairings, regulatory tie-break compliance, live data broadcasting, and comprehensive player analytics.
- Automated Pairings: Instant generation for Swiss, Round-Robin, and Arena formats with zero latency.
- Regulatory Compliance: Built-in Buchholz and Sonneborn-Berger tie-break calculations matching official FIDE handbooks.
- Live Match Ledger: Dynamic player dashboards tracking performance, win/loss ratios, and historical match data.
- Official Rating Sync: Seamless integration to pull and verify official FIDE and Chess.com Elo ratings.
- Arbiter Dashboard: Total control over the bracket—override results, resolve disputes, and manage late-joins.
- Player Profiles: Public and private profiles featuring a visual Trophy Room, dynamic rating charts, and verified FIDE status badges.
Frontend
- React 18 (via Vite)
- TypeScript for strict type safety
- Tailwind CSS for utility-first styling
- Framer Motion for fluid animations
- React Router for navigation
Backend
- Node.js & Express.js
- MongoDB & Mongoose for database architecture
- JWT (JSON Web Tokens) for secure authentication
- RESTful API architecture
Follow these instructions to set up the project locally for development.
- Node.js (v18 or higher recommended)
- MongoDB (Local instance or MongoDB Atlas URI)
git clone https://github.com/arjunharshana/crosstable.git
cd crosstableYou will need to install dependencies for both the frontend and backend environments.
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm installCreate a .env file in both the frontend and backend directories.
backend/.env
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_super_secret_key
frontend/.env
VITE_API_URL=http://localhost:5000/api
Open two terminal windows to run both servers simultaneously.
Terminal 1 (Backend):
cd backend
npm run dev
Terminal 2 (Frontend):
cd frontend
npm run dev
The application will be available at http://localhost:5173 (or the port specified by Vite).
crosstable/
├── .github/ # GitHub Actions workflows & configurations
├── backend/ # Node.js / Express backend
│ ├── src/
│ │ ├── config/ # Database and environment configurations
│ │ ├── controllers/ # Request handlers and business logic
│ │ ├── middleware/ # Custom Express middlewares (auth, validation)
│ │ ├── models/ # Mongoose database schemas
│ │ ├── routes/ # Express API route definitions
│ │ ├── utils/ # Helper functions and utilities
│ │ ├── app.ts # Express application setup
│ │ └── server.ts # Server entry point
│ ├── docker-compose.yml # Multi-container Docker orchestration
│ ├── Dockerfile # Docker image configuration for the backend
│ ├── package.json # Backend dependencies and scripts
│ └── tsconfig.json # TypeScript configuration
│
└── frontend/ # React / Vite frontend
├── src/
│ ├── components/ # Reusable UI elements (Logo, ThemeToggle, etc.)
│ ├── context/ # React Context providers (AuthContext)
│ ├── hooks/ # Custom React hooks (useAuth)
│ ├── pages/ # Route components (Home, Dashboard, Profile, etc.)
│ ├── services/ # API configuration (Axios instances)
│ ├── App.tsx # Main application router
│ └── main.tsx # React entry point
├── tailwind.config.ts # Tailwind CSS design system configuration
├── vercel.json # Vercel deployment routing & configuration
├── vite.config.ts # Vite bundler configuration
└── package.json # Frontend dependencies and scripts
Contributions are welcome! If you'd like to improve CrossTable, please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feat/your-name). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feat/your-name). - Open a Pull Request.
Copyright © 2026 CrossTable. All Rights Reserved.
Built for the love of the game.