School Register

Registro Elettronico banner

Update 2024

Unfortunately, I had to remove the app from the Play Store due to the new Google policies that require a full address and phone number to be displayed in the store listing. The app is still available on GitHub and can be built and installed manually.

The app had a total of 50,000 downloads and an average rating of 4.35 stars. I’m proud of the work I did on this project and the impact it had.


In late 2019, I began developing Registro Elettronico, a mobile app designed to help students and parents in Italy easily access their online school register. In Italy, the electronic school register (Classeviva) is widely used by schools to track grades, lessons, attendance, and other important information.

In 2019 Flutter was still a new framework and I wanted to develop a big project from start to end to fully get to know it.

Registro Elettronico has now over 40,000 downloads and around 5,000 daily active users during the school year. It’s completely open-source, free to use, and has no ads. This project was not only a great learning experience with Flutter but also led to freelance clients. It’s a project I’m proud of, and I hope it continues to help students and parents manage their school activities.

The features of the app include:

  • simple, iuntuitive design: easy to navigate, with a focus on simplicity and usability
  • charts and stats: visualize grades, absences, and more
  • full customization: choose between dark, light, and black themes, and customize the colors
  • multi account and multi language: manage multiple school accounts and switch between italian and other languages
  • offline mode: access your data without an internet connection
Registro Elettronico banner

To build Registro Elettronico, I used a variety of technologies and libraries:

  • Flutter + Dart: the core framework for the app, allowing for cross-platform development.
  • 📡 Dio: used for making API requests to the Classeviva system.
  • 💡 BLoC: for managing the app’s state, ensuring a clean and maintainable architecture.
  • 📚 Moor: for storing data locally on the device.
  • 💉 GetIt: implemented for dependency injection, making the app more modular and easier to manage.
  • 🔗 Dartz: to incorporate functional programming techniques, enhancing code predictability.
  • ⚙️ Firebase + Crashlytics: used for analytics and error tracking, ensuring the app runs smoothly.