In my group's project for COMS 3090: Software Development Practices, we developed "ImpromptQ" — a quiz-based game app designed as an interactive study tool for students. Our team of four created a multi-user system with a complex backend and intuitive front-end, allowing players to join quizzes using game codes, create their own questions, and earn points by tricking others with fake answers. The game featured different user roles, including guests, account holders, and admins, each with specific permissions. We designed a real-time lobby where players could ready up, and the VIP could start or end the game. Using Spring Boot for the backend and Android for the front end, we implemented detailed controllers for game creation, player management, quiz handling, and user login, along with a friend feature and leaderboard system to enhance user engagement. This project showcased our collaborative skills and practical application of software development practices in a semester-long development cycle.
I took on a primary role in front-end development, collaborating closely with the team to design and implement essential user interfaces for the ImpromptQquiz application. I contributed to building core screens like the game lobby and the game progression screens, focusing on features that enhanced the user experience, such as interactive buttons and intuitive fields for game setup. Additionally, I ensured that the lobby’s functionality allowed players to join and prepare for games seamlessly, supporting both guest users and account holders. By consistently testing these features, I helped deliver a user-friendly interface that met project specifications and integrated smoothly with the backend.
High-Level Block Diagram
Final Product Demo
Through this project, I gained valuable skills in front-end development and strengthened my understanding of full-stack software development. Working on the ImpromptQquiz app taught me to design and implement user interfaces that prioritized clarity and functionality, especially in a multi-user environment. I enhanced my ability to work with databases and backend mappings, learning how the frontend and backend interact through HTTP methods like GET, POST, and DELETE to manage data in real-time. Additionally, collaborating with my team refined my skills in version control, task delegation, and troubleshooting code issues efficiently. This experience expanded my technical and teamwork capabilities, preparing me for future software development projects.
Throughout the project, I utilized a variety of resources to ensure its success. For the front-end development, I relied heavily on Java for designing and implementing the app's user interface, drawing from my experience and knowledge of object-oriented programming principles. I also referred to online tutorials and documentation to deepen my understanding of GUI libraries and Android development. I made extensive use of GitHub for version control, collaborating closely with my team to ensure smooth integration of our work. Additionally, I consulted forums and Stack Overflow for troubleshooting and optimizing code, which helped me overcome technical challenges efficiently.