Skip to main content

Python SDK for the Paircraft API - Chess Tournament Management

Project description

Chess Tournament Director

A comprehensive chess tournament management system with React frontend and Node.js backend, featuring Swiss-system pairings, player management, and tournament analytics.

๐Ÿ† Features

  • Tournament Management: Create and manage chess tournaments with multiple sections
  • Swiss System Pairings: Automated pairing algorithm with USCF compliance
  • Player Management: Add, edit, and search players with rating lookup
  • Real-time Standings: Live tournament standings with tiebreakers
  • Export Capabilities: PDF reports, CSV exports, and DBF file generation
  • Responsive Design: Modern React UI with Tailwind CSS
  • Authentication: Secure user authentication and authorization

๐Ÿš€ Quick Start

Prerequisites

  • Node.js (v16 or higher)
  • npm or yarn
  • Git

Installation

  1. Clone the repository

    git clone <repository-url>
    cd ratings
    
  2. Install dependencies

    npm run install-all
    
  3. Set up environment variables

    cp .env.example .env
    # Edit .env with your configuration
    
  4. Start the development server

    npm run dev
    
  5. Access the application

๐Ÿ“ฆ Project Structure

ratings/
โ”œโ”€โ”€ client/                 # React frontend application
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ components/     # Reusable UI components
โ”‚   โ”‚   โ”œโ”€โ”€ pages/         # Application pages
โ”‚   โ”‚   โ”œโ”€โ”€ services/      # API services
โ”‚   โ”‚   โ””โ”€โ”€ contexts/      # React contexts
โ”œโ”€โ”€ server/                # Node.js backend
โ”‚   โ”œโ”€โ”€ routes/           # API routes
โ”‚   โ”œโ”€โ”€ services/         # Business logic
โ”‚   โ”œโ”€โ”€ middleware/       # Express middleware
โ”‚   โ””โ”€โ”€ database.js       # Database configuration
โ”œโ”€โ”€ uploads/              # File uploads
โ””โ”€โ”€ docs/                 # Documentation

๐Ÿ› ๏ธ Available Scripts

  • npm run dev - Start development server (both frontend and backend)
  • npm run client - Start React development server
  • npm run server - Start Node.js backend server
  • npm run build - Build React app for production
  • npm start - Start production server
  • npm run setup - Create admin user

๐ŸŒ Deployment

Heroku Deployment

This application is configured for easy Heroku deployment:

  1. Quick Deploy

    ./deploy.sh
    
  2. Manual Deploy

    • See HEROKU_DEPLOYMENT.md for detailed instructions
    • Or follow QUICK_DEPLOY.md for quick reference

Environment Variables

Variable Description Default
NODE_ENV Environment mode development
PORT Server port 5000
JWT_SECRET JWT token secret Required
CORS_ORIGIN CORS allowed origins http://localhost:3000

๐ŸŽฏ Core Features

Tournament Management

  • Create tournaments with custom settings
  • Manage multiple tournament sections
  • Set time controls and prize structures
  • Export tournament data in multiple formats

Pairing System

  • Swiss-system pairings with USCF compliance
  • Automatic bye assignment
  • Pairing history tracking
  • Conflict resolution

Player Management

  • Add players manually or import via CSV
  • USCF rating lookup integration
  • Player search and filtering
  • Rating history tracking

Analytics & Reporting

  • Real-time tournament standings
  • Comprehensive tiebreaker calculations
  • PDF report generation
  • Tournament statistics

๐Ÿ”ง Technology Stack

Frontend

  • React 18 - Modern React with hooks
  • TypeScript - Type-safe development
  • Tailwind CSS - Utility-first CSS framework
  • Axios - HTTP client for API calls

Backend

  • Node.js - JavaScript runtime
  • Express.js - Web application framework
  • SQLite - Lightweight database
  • JWT - Authentication tokens

Additional Tools

  • Helmet - Security middleware
  • CORS - Cross-origin resource sharing
  • Rate Limiting - API protection
  • Multer - File upload handling

๐Ÿ“š Documentation

Python SDK: Online Tournaments

The official Paircraft SDK (paircraft>=1.1.0) includes helper functions for online tournaments:

pip install --upgrade paircraft
from paircraft import ChessTournamentClient

client = ChessTournamentClient(api_key="your-api-key", base_url="https://www.paircraft.tech")

tournament = client.create_online_tournament(
    name="Online Blitz Night",
    platform="lichess",  # or "chesscom"
    rounds=3,
    section="Open"
)

player_ids = client.import_players(tournament.id, [
    {"name": "Test White", "section": "Open", "lichess": "white_handle"},
    {"name": "Test Black", "section": "Open", "lichess": "black_handle"},
])

pairings = client.pair_round(tournament.id, round=1, section="Open")
games = client.create_online_games(tournament.id, round=1, platform="lichess", section="Open")
client.start_clocks(tournament.id, round=1, section="Open")
pairings = client.poll_results(tournament.id, round=1)

if pairings:
    game = client.game_status(tournament.id, pairings[0].id, include_pgn=True)

Online helper methods include create_online_tournament, import_players, pair_round, oauth_link, create_online_games, start_clocks, poll_results, game_status, set_result, paste_pairings, and validate_usernames.

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • USCF (United States Chess Federation) for pairing rules
  • Chess.com for inspiration
  • The open-source community for excellent tools and libraries

๐Ÿ“ž Support

For support and questions:

  • Create an issue in this repository
  • Check the documentation files in the root directory
  • Review the code comments for implementation details

Built with โค๏ธ for the chess community

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paircraft-1.1.1.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paircraft-1.1.1-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file paircraft-1.1.1.tar.gz.

File metadata

  • Download URL: paircraft-1.1.1.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for paircraft-1.1.1.tar.gz
Algorithm Hash digest
SHA256 29e7fc490240dedc2f3a7808469d1040fb363fba7b8641790475982601be6d59
MD5 9e1f0ac4b977f29af3c47168d526ac28
BLAKE2b-256 69a1f183cdea2b432e8bde7f4f4082cfc564a60577ed38f81c6643b28f1f11ec

See more details on using hashes here.

File details

Details for the file paircraft-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: paircraft-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for paircraft-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2be6219b3418a4c80ff6280b8db9dd5e44dc5f7559fdbc69548c97e1aecd0eba
MD5 1124b38be105eaa7f5e8aadc8f0bef23
BLAKE2b-256 6b9a7e770cc94536190fc76f215b14422db4635cf17622c3ae29ef9b749040e9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page