Back to projects
TEAM PROJECT

Quizio — INOVA IT

A quiz creation and participation platform delivered as a team project for INOVA IT d.o.o.

Next.js 16TypeScriptGoPostgreSQLFirebase Auth
Quizio — INOVA IT interface preview
01

Problem

The platform needed to make a complex quiz lifecycle clear for both administrators and participants.

02

My role

I specialized in frontend design and connected interface behaviour to the Next.js BFF and Go backend.

03

Result

Delivered as a multi-service team project for INOVA IT with authentication, timed attempts, role-aware flows, and live results.

The details, when you want them.

Full overviewOpen section

Quizio is an interactive quiz platform developed as a larger university practicum project in collaboration with INOVA IT d.o.o. Administrators can create, schedule, publish, and manage quizzes, while registered users complete timed attempts and receive results through a clear participant experience. The project was built as a real multi-service system rather than a standalone frontend.

The goal was to build more than a quiz mock-up. The application needed separate administrator and participant experiences, secure authentication, timed attempts that could not be extended by closing the browser, reliable persisted state, and live result updates — while remaining understandable and fast to use.

What I worked onOpen section

Frontend design & backend integration

My main responsibility was the frontend experience: shaping the visual direction, designing clear responsive interfaces, and turning them into reusable Next.js components. I also connected frontend interactions and application logic to the BFF and backend API so that authentication, quiz management, attempts, and data-driven states worked as one coherent product.

  1. 01

    Designed the visual system and responsive layouts for participant and administrator flows

  2. 02

    Built reusable React and Next.js UI components with TypeScript, Tailwind CSS, and shadcn/ui

  3. 03

    Connected frontend actions and state to the Next.js BFF and Go REST endpoints

  4. 04

    Implemented clear loading, validation, error, authentication, and role-aware interface states

  5. 05

    Worked with the team to align API contracts, database-backed behaviour, and the final user experience

  6. 06

    Helped turn separate frontend and backend features into a consistent end-to-end product

Process & architectureOpen section
01

Next.js frontend & BFF

App Router pages and API routes handle the interface, secure sessions, RBAC checks, file uploads, HMAC signing, and requests to the internal API.

02

Go REST API

A stateless Go service using the Chi router owns the quiz, publishing, attempt, and result lifecycle.

03

PostgreSQL

The single source of truth for quizzes, attempts, results, and server-authoritative countdown timers, accessed through type-safe sqlc queries.

04

Firebase & real-time events

Firebase Authentication provides identity, while pg_notify and Server-Sent Events push leaderboard changes without polling.

Key decisions & lessonsOpen section

Secure by layers

JWT-based sessions, role checks in the BFF, HMAC-SHA256 request signing, and parameterized SQL protect the boundaries between services.

Server-owned time

Attempt countdowns live in PostgreSQL, so refreshing or closing a tab cannot give a participant extra time.

Real-time without polling

Database notifications flow through Server-Sent Events to update leaderboard data efficiently.

Features & technologyOpen section
  1. 01

    Quiz creation with multiple-choice and image-based questions

  2. 02

    Draft, scheduled, published, and archived quiz lifecycle

  3. 03

    Server-authoritative attempt timers stored in PostgreSQL

  4. 04

    Real-time leaderboard updates through PostgreSQL notifications and SSE

  5. 05

    JWT sessions, role-based access control, and HMAC-signed API requests

  6. 06

    Stateless services designed to support horizontal scaling

Next.js 16 App RouterTypeScriptTailwind CSSshadcn/uiGo 1.23Chi routerPostgreSQL 16Firebase AuthenticationsqlcServer-Sent EventsDockerHMAC-SHA256