IISER TVM Chess Club Website
🧠 Inspiration
As an active member of the IISER TVM Chess Club, I noticed a recurring issue — our club’s history, announcements, and tournament data were fragmented across spreadsheets and WhatsApp messages. Nothing was centralized or permanent.
This inspired me to build a single digital home for our chess community — one that’s:
- Easy for any club admin (even non-technical ones) to update
- Fully data-driven, preserving our entire tournament history
- Equipped with modern chess tools for training, analysis, and play
In essence, the goal was to create an ecosystem — not just a website — for IISER TVM chess.
♟️ What It Does
"IISER TVM Chess Club Website" is a dynamic, data-powered community platform designed to manage, analyze, and enhance the club’s activities.
Core Features:
- Dynamic Tournament System: Supports 7+ formats (Swiss, Knockout, Team League, etc.) with real-time pairings, standings, and results loaded dynamically from Google Sheets.
- Player Profiles: Members log in with their IISER email to access automatically generated profiles, showing tournament history, team affiliations, and performance statistics.
- Live Game Analysis: Integrated Stockfish 17 (WASM) engine enables interactive analysis, move-by-move insights, and clickable PGN variations, just like Lichess.
- Play vs AI (C.A.L.I.C.O): Play full games against a chess bot powered by
chess.jslogic and an external Stockfish API. - Puzzle Trainer: Fetches daily tactics from Google Sheets, validates moves in-browser, and tracks solutions.
- Announcements Hub: Automatically updates club news from a spreadsheet, keeping members in sync.
⚙️ How We Built It
- Frontend: Built as a Vue 3 SPA (Composition API + Vite) with Bootstrap 5 for a clean UI.
- Auth: Uses Firebase Authentication restricted to
@iisertvm.ac.inemails. - Backend: Entirely powered by Google Sheets — a low-code backend where each tournament has a dedicated sheet with a self-describing
SheetIndex. - Analysis Engine: Built on
vue3-chessboard,chess.js, and the Stockfish 17 WASM engine in a Web Worker for real-time feedback. - Custom Logic: The Bot and Puzzle pages use a custom-built JavaScript engine for in-browser move validation.
- Profiles & History: The app aggregates data from multiple tournament sheets to build each player’s complete record dynamically.
🚧 Challenges We Ran Into
- Stockfish WASM Crashes: Solved
SharedArrayBuffersecurity restrictions by configuring proper COOP/COEP headers invite.config.js. - Dynamic Data Linking: Initial hard-coded sheet IDs caused breakage — solved via the self-indexing architecture using
SheetIndex. - Vite Cache Conflicts: Resolved dependency bundling issues using
optimizeDeps.include. - Complex PGN Trees: Built a custom state-mapping system (
MapsToState) to synchronize the board, move tree, and navigation seamlessly. - Engine Refactoring: Replaced unstable custom logic with
chess.jsfor reliability while retaining flexibility in custom pages.
🏆 Accomplishments
- Headless CMS via Google Sheets: A fully dynamic, no-code backend for structured tournament data.
- Generic Tournament Renderer: The
GenericTournament.vuecomponent can display 7+ tournament formats from one entry point. - Advanced PGN Analysis Tool: Rivals Lichess-level interactivity within a self-contained Vue app.
- Comprehensive Player History: Cross-tournament aggregation to visualize long-term club performance.
- Custom Chess Engine: Wrote in pure JavaScript for puzzles and AI play — an educational deep dive into chess programming fundamentals.
📚 What We Learned
- Deep Vue 3 Proficiency: Hands-on experience with Composition API and reactive state management.
- System Architecture Design: Learned to think in modular, scalable frontend systems.
- WebAssembly & Web Workers: Integrated high-performance native logic in a browser environment.
- When to Build vs Use: Discovered the balance between custom logic and existing, stable libraries like
chess.js.
🚀 What’s Next
This is only Phase 1 of the project.
We plan to expand it into a full-featured competitive and analytical hub for all IISER TVM players.
Next Phases:
- Phase 2 – Database Migration: Move from Google Sheets to PostgreSQL or Firestore for faster data aggregation and live updates.
- Phase 3 – Interactive Features: Enable in-site tournament registration, user PGN uploads, and a global ELO system.
💬 Elevator Pitch
Analyze, Compete, Connect — The IISER TVM Chess Hub.
A dynamic web platform uniting players, data, and tools to bring the entire IISER TVM chess community to one intelligent, interactive space.