This section contains a full breakdown of my Tic Tac Toe capstone projectβfrom architecture and technologies used to features across each platform. For further details, check out the FAQs, GitHub READMEs, or feel free to reach out directly.
This capstone project represents the culmination of my self-taught software development journey. It is a full-stack, real-time multiplayer Tic Tac Toe application, designed to work seamlessly across web, desktop, and mobile platforms. The goal was to demonstrate the ability to design, build, and deploy a scalable, production-ready app using modern tools and cloud infrastructure.
Platform-specific frontends include:
The backend architecture follows a microservices approach hosted on AWS EC2, incorporating:
The system handles room creation, player matchmaking, and persistent chatβall in real-time. It also includes defensive measures against session expiration, and supports multiple rematches within the same room context.
This project allowed me to delve into cross-platform full-stack application development. This project not only demonstrates technical proficiency across the stack but also reflects my growth, adaptability, and passion for building complete user-facing solutions.
I designed the system using five distinct microservices to modularize functionality and improve maintainability:
Initially, I implemented the application as a monolithic backend to rapidly prototype core functionalities. However, I refactored to a microservices architecture because:
I use two separate PostgreSQL databases to isolate concerns and improve maintainability:
While a high-throughput in-memory store like Redis is often used for real-time session or room tracking in production-scale systems, I opted for PostgreSQL due to the modest scale of my project. The database queries are lightweight and performant enough for current needs, making this a cost-effective and simpler solution during development and early deployment.
This project incorporates multiple security best practices to protect user data and ensure secure communication:
The full microservices backend is hosted on a single AWS EC2 t2.micro instance, which also runs:
I chose this monoinstance deployment for affordability and simplicity, appropriate for the current scale and traffic. However, I also successfully tested a distributed microservices setup with each service running on its own EC2 instance and communicating over internal networking β available on request.
The domain name is managed through AWS Route 53, with records configured to point to the EC2 backend. For HTTPS support, I used AWS ACM (Certificate Manager) via CloudFront to secure S3-hosted content and ensure SSL encryption.
The React web app is hosted on AWS S3 as a static site, fronted by CloudFront as a content delivery network (CDN) for faster global access. The Python desktop app installer is also available for download via a public S3 bucket.
Cross-platform API communication (web, desktop, mobile) occurs over secured HTTP(S), with Socket.IO and REST APIs configured to support real-time and authenticated interactions.
In the Projects section, you'll find all the available frontends to experience the game:
Note: The mobile version is pending official publishing to the Google Play Store. Running it via Expo Go may have limitations, such as no custom splash logo and the app pausing if backgrounded.
Account registration is required to access game rooms and play multiplayer matches. You can create your own account or use the provided demo credentials:
Here are some ways to try out the multiplayer experience:
This project was my first end-to-end fullstack application, and it pushed me beyond small, isolated coding tasks into system-wide thinking. I had to learn and apply concepts such as:
One of the biggest challenges was learning how all these moving parts integrate and communicate reliably. I had to self-teach infrastructure fundamentals, mobile deployment tooling, and secure cross-platform data flow β often through trial and error.
I intentionally treated this project as a sandbox to experiment with different technologies and architectural decisions, even when it meant reworking parts of the system. That exploration taught me how to plan, debug, and refine systems more confidently, which I now carry into new projects with a clearer and more structured approach.
I began this project in September 2024, initially aiming to build a simple online multiplayer Tic Tac Toe game for the web. As I progressed, I continuously expanded the scope to deepen my understanding and apply new technologies.
Over the following months, I:
After nearly nine months of iterative development, I finalized the capstone in June 2025. While there's always room for improvement β such as codebase refinement or features like leaderboards β I made a deliberate decision to close this chapter and move on to new challenges, including exploring AI development.
This capstone taught me the value of shipping a Minimum Viable Product (MVP) over chasing perfection. While not every line is pristine, the application works end-to-end across platforms, which was the ultimate goal. Done is better than perfect β and this mindset enabled me to learn, adapt, and deliver.
This project utilizes a wide range of technologies across backend, frontend, cloud infrastructure, and security layers:
Below are the public GitHub repositories that make up the full-stack Tic Tac Toe application, separated into backend and frontend components. Each repo includes its own README with setup instructions, architecture notes, and technology stacks used.