UniQuiz: Building a Quiz Platform

UniQuiz is an interactive quiz platform designed to make learning more engaging and effective through gamification and real-time feedback. This article explores the technical journey of building UniQuiz, focusing on the architectural decisions, challenges faced, and solutions implemented.

Screenshot of app dashboard

Project Goals & Tech Stack

Our primary goal with this project was to design and develop an application that would serve as a real-world environment to apply, strengthen, and expand our software engineering skills. We wanted a project that would challenge us across every stage of development, from architecture and coding to deployment and performance optimization.

Scalable, user-friendly quiz platform that could handle multiple concurrent users while providing real-time feedback. Key technical requirements included:

  • AI generated questions
  • User authentication and progress tracking
  • Rich question formats

Backend Architecture

The backend of UniQuiz was developed using Express.js, part of the PEAN stack, which provided a lightweight yet powerful foundation for building a well-structured REST API. Key features of our backend architecture included:

  • Clean architecture principles for maintainable code
  • JWT-based authentication
  • PostgreSQL for the primary database with Redis as a cache database

Quiz choices Screenshot of a quizz

Database & Code Quality

For persistent data storage, I chose PostgreSQL, a reliable and performant relational database well-suited for handling structured quiz data and user information.

To maintain high code quality and reliability, I developed a suite of unit and integration tests, ensuring that core functionalities were thoroughly validated. This proactive approach to testing allowed us to detect issues early in the development cycle and ensured long-term maintainability.


Frontend Collaboration

Working closely with a frontend developer specialized in Angular, we established a clear communication protocol between the frontend and backend components. Regular alignment meetings and shared documentation ensured that both sides progressed in sync and delivered a cohesive product experience.


Screenshot of ranking quiz feature Screenshot of the ranking feature


Deployment

One of the project highlights was setting up a fully automated CI/CD pipeline using GitHub Actions. This allowed us to:

  • Automatically test and build the application upon each commit on the main branch.
  • Create Docker containers for consistent deployment environments.
  • Push and deploy updates seamlessly to a VPS with minimal downtime.

The application was containerized using Docker, enabling us to replicate the production environment locally and deploy with confidence.


Optimization & Performance

Performance optimization was a crucial aspect of the development process. Key improvements included:

  • Query optimization for faster database access
  • Implementation of caching strategies using Redis
  • Load balancing for horizontal scalability

Learning Outcomes

Working on UniQuiz was more than just building a functional application—it was a deep and rewarding learning experience. Throughout the project, I gained hands-on insight into designing scalable backend systems and structuring clean, maintainable code in a real-world context. Implementing JWT-based authentication strengthened my understanding of secure session management, while working with PostgreSQL pushed me to think critically about data relationships and query optimization.

Setting up a fully automated CI/CD pipeline with Docker and GitHub Actions introduced me to the power of DevOps in maintaining consistent environments and streamlining deployments. Collaborating closely with a frontend developer gave me a better appreciation for cross-functional teamwork and the importance of clear, documented APIs.

Beyond the technical skills, this project also taught me how to plan, iterate, and deliver in a structured, professional workflow—turning an idea into a polished, deployable product.

Conclusion

A heartfelt thanks to my friend and collaborator Nikoloz Chargazia, whose work on the frontend was essential to bringing UniQuiz to life. His dedication and eye for detail played a key role in shaping the user experience we set out to create.