An online, multiplayer implementation of the traditional Chilean Rummy-style card game Carioca.
This project is structured as a pnpm monorepo consisting of:
- A high-performance Rust backend built with Cargo, Axum, SQLx, and WebSockets.
- A sleek, modern Web frontend built with React, Vite, and TypeScript.
- Backend Engine: Pure Rust engine implementing the strict rules of Carioca (
src/engine/rules.rs), decoupling game logic from network logic for maximum testability and runtime efficiency. - Matchmaking & Rooms: Handled via Tokio MPSC channels and Axum WebSockets.
- Database: SQLite (via
sqlx) for MVP data persistence, prepared for an easy migration to PostgreSQL. - Monorepo Management:
pnpmworkspaces.
- Rust & Cargo (v1.85+)
- Node.js (v20+)
- pnpm (v9+)
Run pnpm install from the root of the project to install all workspace dependencies.
- Navigate to the backend directory:
cd backend - Run the tests to verify the game engine:
cargo test - Start the Axum server:
cargo run- The server defaults to running on
http://0.0.0.0:3000
- The server defaults to running on
- Navigate to the frontend directory:
cd frontend - Start the Vite dev server:
pnpm dev
The goal is to get rid of all your cards by melding them into valid "Tríos" (3 cards of the same value) and "Escalas" (4+ consecutive cards of the same suit). Read deeply about the Rules of Carioca.
- Initial Monorepo Setup
- Rust Backend Scaffolding & Dependencies
- Core Rules Engine (Deck, Cards, valid Tríos/Escalas)
- Database Schema & Migrations
- WebSocket Matchmaking & Multiplayer Loop
- React UI Implementation