A full-stack chess application built entirely in Rust, featuring real-time multiplayer gameplay with WebSockets, timers, and full chess rules validation.
- Real-time Multiplayer - Play chess with anyone using WebSockets
- Private Game Rooms - Create or join games with unique room codes
- Full Chess Rules - Complete move validation including castling, en passant, and pawn promotion
- Live Timers - 10-minute countdown timer per player
- Move History - Track all moves in Standard Algebraic Notation (SAN)
- Modern UI - Responsive design with smooth animations
- Board Rotation - Black player automatically sees a flipped board
- Pawn Promotion - Interactive dialog for choosing promotion piece
- Leptos (v0.8)
- fly.io
- Docker
# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install Trunk
cargo install trunk
# Add WASM target
rustup target add wasm32-unknown-unknowngit clone https://github.com/IrakliAmbroladze/chess-app.git
cd chess-appTerminal 1 - Frontend:
trunk serveTerminal 2 - Backend:
cargo run --bin server --features ssrOpen your browser:
http://localhost:8080
chess-app/
├── src/
│ ├── main.rs # Axum server & WebSocket handler
│ ├── lib.rs # Leptos app entry point
│ ├── shared.rs # Shared types (Client/Server messages)
│ ├── game.rs # Chess game state & move validation
│ └── components/
│ ├── mod.rs # Component exports
│ ├── home.rs # Home page (create/join)
│ ├── game.rs # Game page with WebSocket
│ └── board.rs # Chess board component
├── Cargo.toml # Rust dependencies
├── index.html # HTML entry point
├── style.css # Styling
├── Trunk.toml # Trunk configuration
├── Dockerfile # Production deployment
├── fly.toml # Fly.io configuration
└── README.md
Created by @IrakliAmbroladze
Project Link: https://github.com/IrakliAmbroladze/chess-app
Live Demo: https://chess-app-irakli.fly.dev
Built with ❤️ and 🦀 Rust