In winter semester 2023/2024 I ran another edition of the Innovations Project at Lodz University of Technology. This time the stack was Nuxt 3 (Vue meta-framework), Firebase, Pinia, Vuetify, i18n and Git Flow. Watching students move from Vue basics to Nuxt with file-based routing and auto-imports was valuable for me.
Tech: Nuxt 3 (SPA, file-based routing, auto-imports), Firebase (Auth, Firestore, Storage, hosting), Pinia, Vuetify, i18n, Git Flow.
We started with the difference between SSR and CSR. In this project Nuxt in SPA mode – no render server, focus on the interface. Students had to get to grips with Nuxt structure: /pages, /composables, /server. Git Flow: feature branches, release branches, hotfix branches, code review, conflicts. Working through the repo is basic in IT; watching students resolve conflicts and communicate showed me the value of sharing experience.
Firebase was many people’s first “backend as a service”. We worked on Auth (email/password, Google, password reset, roles), Firestore (collections, documents, real-time, Security Rules). Security Rules turned out to be one of the harder parts – thinking about security in a declarative way. Moving from “my own server” to cloud-first was an important shift for them.
Pinia for global state – when state is global, when local. i18n: lazy-loaded translations, locale routing, language switcher.
Final project: registration, login (email + Google), password reset, roles, full CRUD for two entity types (pagination, search, real-time), admin panel, at least two languages, responsiveness with Vuetify.
Challenges: architectural complexity (moving from simple Vue to Nuxt), async and state sync, Firebase Security Rules, Git Flow in practice (conflicts = communication and compromise).
Thanks to the students for their commitment and to the university for the chance to share knowledge. Nuxt and Firebase are good tools for learning more advanced web apps.



