project-proposal-2025

𖣯 ChessCam [◉]: Chessboard Detection

Abstract

ChessCam is a mobile application that allows users to take a picture of a chessboard (in both the real world and a digital one) at any game state and instantly generate a digital version to continue playing. Users can choose to play as White or Black, challenge AI opponents with adjustable Elo points, or invite friends to play. The app also offers features such as the ability to save and review past games, and a custom setup mode where users can manually place pieces to create specific board states.

Author

Functionality

Scope

The scope for the MVP of this system will include the following features:

Quality Attributes

Reliability (Highest Priority):

Reliability is the most crucial attribute of the ChessCam as the core functionality depends on accurately detecting chess boards and generating digital versions. When users use image recognition of ChessCam with real-world pieces, there are many variables like lighting, camera angles, and different board designs that could affect detection accuracy. If ChessCam frequently fails to detect the board correctly or generates incorrect board states, it would ruin the user experience and make the application unusable.

Scalability:

ChessCam should be designed to accommodate growing users without performance degradation. As more users use the app simultaneously, the number of API calls, such as those for chessboard detection (OpenCV, ChessVision) and AI opponent (Stockfish AI), will increase within a short period. The system has to manage these high-frequency requests efficiently to ensure smooth performance and prevent delays or crashes. If ChessCam fails to scale effectively, users may experience delays in board detection, or AI responses, making the application inconvenient for practical use.

Extensibility:

Extensibility ensures that ChessCam can be easily expanded with new features and functionality without changing the system significantly. The app will be built with modular components, such as a camera detection module, or an independent AI opponent system. This design ensures that adding new features like new AI opponents, extra board themes, or even online multiplayer won’t require major changes to the system. Without extensibility, it would become increasingly difficult to implement new features and also lead to complex maintenance and application crashes.

Evaluation

To maintain reliability, scalability and extensibility, various types of testing will be conducted.

Reliability

Scalability

Extensibility: