Chess Application

Developed a full-stack chess application as a BYU CS 240 course project. The system included a command-line client, a Java server, persistent data services, HTTP-based web services, WebSocket-based realtime interaction, and the full rules of chess. The project highlights modular application design, testing, persistence, and building a medium-scale server program from the ground up.

Role
Full-Stack Developer
Team
BYU CS 240 Course Project
Duration
January 2026 - March 2026
Outcome
Built a medium-scale chess server application that combined chess rules, persistence, security, and realtime multiplayer interaction.
Core Tools
Java, HTTP/Web Services, MySQL, WebSocket, Security, Testing
Chess application interface or architecture artifact representing the networked client-server project.

Overview

This project used the game of chess as the vehicle for building a medium-scale software system. The work began with implementing the rules of chess, then expanded into a full server-backed application where multiple clients could connect, register users, create games, and play against one another.

The class emphasized building software in a principled way: up-front design, clean code construction, unit testing, assertions, error handling, and modular architecture. One milestone also required rewriting the early chess-rule implementation from a base template during a timed exam, which reinforced working independently and efficiently under pressure.

Architecture Focus

The course outcomes centered on:

  • building a medium-scale server program with data persistence
  • applying software design principles such as single responsibility, low coupling, information hiding, and avoiding code duplication
  • using relational database design and programmatic data access
  • incorporating basic security concepts
  • validating behavior through testing
  • using professional development tools such as debuggers, IDEs, version control, and documentation tools

Technology Stack

The project touched a broad software stack:

  • Java
  • command-line client tooling
  • HTTP and Web Services
  • MySQL-backed data services
  • WebSocket-based realtime interaction
  • security, testing, and application design

Project Progression

The chess project progressed through several architectural stages:

  1. Implement the rules of chess and core game-state logic
  2. Rewrite the early project from scratch during a timed exam to demonstrate independent mastery
  3. Build a chess server that supports registering users, joining games, and running multiplayer interactions
  4. Add persistence and security-oriented design so the program behaves like a real software system rather than an isolated assignment

Results

Joining a game through the chess client interface

Technical Skills