A lightweight, offline-first collection of classic board and card games built for desktop.
LiteBoard is a desktop application that bundles various classic strategy and card games into a single, resource-efficient executable.
Built using Tauri and Vue 3, this application is designed to be significantly lighter than traditional Electron-based apps. It focuses on logic, strategy, and casual play without any gambling mechanics. The goal is to preserve the heritage of traditional games like Shogi, Mahjong, and Gaple in a modern, ad-free, and offline environment.
- β‘ Ultra Lightweight: Powered by Tauri (Rust), consuming minimal RAM compared to typical web-based desktop apps.
- π 100% Offline: No internet connection required. Logic and assets are bundled locally.
- πΎ Local Persistence: Uses the native file system to save game progress and high scores securely.
- π§© State Management: Complex game rules handled efficiently using Pinia stores.
- π₯ Hotseat Multiplayer: Play with friends on a single device with "Pass-and-Play" mode (complete with privacy screens for card games).
The games are categorized by technical complexity, ranging from basic logic implementation to advanced AI and physics engines.
Focus: Establishing Project Structure, Pinia Stores, and Simple Validations.
- Blackjack: Simple math logic (sum check > 21) without complex board movement.
- Mancala (Congklak): Deterministic array manipulation with circular logic.
- Gaple (Dominoes): Straightforward pattern matching (node A matches node B).
Focus: 2D Arrays, Recursion, and Basic "Minimax" concepts.
- Snakes & Ladders: 1D to 2D grid mapping (zigzag path), state jumping logic, and simple RNG dice mechanics.
- Minesweeper: Implementation of Flood Fill algorithms (Recursion) and grid state management.
- Othello (Reversi): Grid traversal logic (vertical/horizontal/diagonal checks) and tile flipping.
- Checkers (Dama): Diagonal movement restrictions and "forced capture" logic.
- Ludo: Path-based movement logic, collision handling (sending opponent home), and turn-based dice mechanics.
Focus: Complex Drag-and-Drop, Turn Management, and Trick-Taking Logic.
- Solitaire: Complex CSS for Drag-and-Drop and strict stack validation rules.
- Uno: Dynamic turn management (Reverse, Skip) and special action handling.
- Hearts / Spades: Trick-taking mechanics requiring basic bot intelligence for card selection.
Focus: Generators, Hand Evaluators, and Complex Scoring.
- Sudoku: Requires Backtracking algorithms for valid puzzle generation and unique solution verification.
- Capsa Susun / Poker (Texas Hold'em): Complex hand evaluation algorithms (detecting Royal Flush, Straights, etc.).
- Remi (Rummy): Set collection and run validation logic.
- Hanafuda (Koi-Koi): Highly specific scoring system (Yaku) and pattern combinations.
Focus: Deep AI (Minimax/Alpha-Beta Pruning) and Massive Rule Sets.
- Chess: Complex movement rules (Castling, En Passant) and AI integration.
- Shogi (Japanese Chess): Includes "Drop" mechanics (reusing captured pieces), increasing AI complexity.
- Go (Weiqi): Territory calculation algorithms and "Life and Death" group status.
- Mahjong: Extremely complex rule sets (Riichi, Pon, Chi, Kan, Furiten) and edge-case handling.
Focus: Canvas API & Physics Engines (Matter.js/Box2D). Note: These require stepping outside standard Vue DOM manipulation.
- Carrom (Karambol)
- Billiards
- Core: Tauri (Rust + Webview)
- Frontend: Vue.js 3 (Composition API)
- Styling: Tailwind CSS (Utility-first framework)
- State Management: Pinia
- Language: TypeScript (Strict typing for game logic)
- Storage: Native File System API via Tauri
src/
βββ assets/ # π¨ Aset Global (Logo, Font, Global CSS)
β βββ audio/ # (sfx-click.mp3, bgm-lobby.mp3)
β βββ images/ # (background-wood.jpg, logo.png)
β
βββ common/ # π οΈ Shared Code (Bisa dipake semua game)
β βββ components/ # "LEGO"-nya UI (Atomic Components)
β β βββ BaseButton.vue # Tombol style Tailwind standar
β β βββ BaseCard.vue # Kotak kartu kosong (frame)
β β βββ ModalDialog.vue # Pop-up (Pause/Game Over)
β β βββ GameLayout.vue # Layout dasar (ada tombol back, score)
β β
β βββ utils/ # Fungsi bantu (Helper)
β βββ tauriStorage.ts # Wrapper save/load file ke laptop
β βββ soundManager.ts # Logic play audio
β βββ randomizer.ts # Logic ngocok dadu/kartu
β
βββ games/ # π¦ MODUL GAME (Rumah masing-masing game)
β β # Kalo mau hapus game, hapus 1 folder ini aja.
β βββ blackjack/
β β βββ components/ # UI khusus Blackjack (ChipButton, DealerHand)
β β βββ logic/ # π§ OTAKNYA (Pure TypeScript, No Vue!)
β β β βββ deck.ts # Logic bikin 52 kartu
β β β βββ scoring.ts # Logic hitung nilai (As = 1/11)
β β β βββ types.ts # TypeScript Interfaces
β β βββ store.ts # πͺ PINIA (Jembatan Logic ke UI)
β β βββ BlackjackView.vue # Tampilan utama game
β β
β βββ gaple/
β β βββ components/ # UI khusus Gaple (DominoTile)
β β βββ logic/ # Pure TS (Rules, Valid Move)
β β βββ store.ts # Pinia Gaple
β β βββ GapleView.vue # Tampilan utama game
β β
β βββ ... (game lainnya)
β
βββ router/ # π¦ Pengatur Lalu Lintas URL
β βββ index.ts # (Home -> /game/gaple, dll)
β
βββ stores/ # π Global Store (Bukan game logic)
β βββ appStore.ts # Simpan settingan (Volume, Nama User, Theme)
β
βββ views/ # π Halaman Umum
β βββ HomeView.vue # Menu Utama (Daftar Game)
β βββ SettingsView.vue # Halaman Pengaturan
β
βββ App.vue # Root
βββ main.ts # Entry Point
Ensure you have the following installed:
- Node.js & npm/pnpm
- Rust & Cargo (for Tauri)
- Clone the repo:
git clone [https://github.com/username/liteboard.git](https://github.com/username/liteboard.git)
- Install dependencies:
npm install
- Run in development mode:
npm run tauri dev
- Build for production:
npm run tauri build
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions to add new games or improve the AI are greatly appreciated.
Distributed under the MIT License. See LICENSE for more information.