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

Problem
The platform needed to make a complex quiz lifecycle clear for both administrators and participants.
My role
I specialized in frontend design and connected interface behaviour to the Next.js BFF and Go backend.
Result
Delivered as a multi-service team project for INOVA IT with authentication, timed attempts, role-aware flows, and live results.

Dive deeper
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.
- 01
Designed the visual system and responsive layouts for participant and administrator flows
- 02
Built reusable React and Next.js UI components with TypeScript, Tailwind CSS, and shadcn/ui
- 03
Connected frontend actions and state to the Next.js BFF and Go REST endpoints
- 04
Implemented clear loading, validation, error, authentication, and role-aware interface states
- 05
Worked with the team to align API contracts, database-backed behaviour, and the final user experience
- 06
Helped turn separate frontend and backend features into a consistent end-to-end product
Process & architectureOpen section+
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.
Go REST API
A stateless Go service using the Chi router owns the quiz, publishing, attempt, and result lifecycle.
PostgreSQL
The single source of truth for quizzes, attempts, results, and server-authoritative countdown timers, accessed through type-safe sqlc queries.
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+
- 01
Quiz creation with multiple-choice and image-based questions
- 02
Draft, scheduled, published, and archived quiz lifecycle
- 03
Server-authoritative attempt timers stored in PostgreSQL
- 04
Real-time leaderboard updates through PostgreSQL notifications and SSE
- 05
JWT sessions, role-based access control, and HMAC-signed API requests
- 06
Stateless services designed to support horizontal scaling