Back to Projects

Chess Game

Brigham Young University

Jan 2025 - Apr 2025

Completed

A terminal-based chess game built to showcase mastery in software design, client-server architecture, HTTP/WebSocket networking, database persistence, testing, serialization, and security principles.

A terminal-based chess application developed as part of CS 240 – Advanced Software Construction, focused on large-scale software architecture, maintainability, and design patterns.

The project implemented a full client–server architecture using HTTP and WebSockets, with support for user authentication, game creation and joining, move synchronization, and persistent storage.

  • Server: Managed user sessions, authentication, and game state. Implemented endpoints for registering, logging in/out, creating, joining, and retrieving games.
  • Client: Provided a text-based interface for interacting with the server, managing users, and visualizing chess gameplay.
  • Shared Engine: Contained the complete chess logic, including move validation for all pieces, board state tracking, and turn management, shared between the client and server.

Throughout the project, I gained deep experience in:

  • Applying software design principles such as factories, serialization, refactoring, and separation of concerns.
  • Implementing secure client–server communication and persistent data handling.
  • Managing and maintaining a multi-thousand-line codebase across multiple modules.

This experience built upon the design and architecture foundations I developed while building Pivot Calendar, further refining my ability to structure complex systems.

If extended beyond the class project, I would integrate advanced features such as AI-based opponents of varying skill levels, player ranking systems, detailed match histories, and an online multiplayer social layer — evolving it into a complete chess platform.