+FADU is an unofficial mobile app for the Faculty of Architecture, Design and Urbanism - University of Buenos Aires made by two self-taught programmers from the same University.

To begin with, what does the app do?

Students can anonymously use it to log their students life, tracking subjects they've already done and unlocking those for upcoming semesters, based on the faculties career path logic. There's also other big features like being able to leave comments on professors and subjects for others to read before signing up to each course; getting job offers and courses on various topics; effortlessly reaching out for information related to important dates as well as exam periods; receiving notifications when the faculty unexpectedly closes or for urgent matters; amongst other features useful for students on a daily basis.

Okay so, how did we build all of these?

At first it was pure Java, so it was an Android Native Application. But then, as the user base started to grow from tens to hundreds to then thousands of users, we needed to expand to another platform: iOS. And how do you do that? Natively, with Swift. But that would mean two code bases, two separate repositories and the need to replicate the existing app into another language, from scratch.

Being a team of two, we could maybe manage it.. but wouldn't it be better to have everything in one place? One code base for both platforms? Is that possible? Thanks to the brilliant people behind frameworks like React Native and Cordova, yes, it is possible. Although it's not technically one single code base, you can develop both apps in the same language and then create the corresponding compiled apps for both Android and iOS.

Native applications have better performance, a more fluent and native user experience and have full access to the phone resources and features like the camera and sensors. Unlike Hybrid applications, where you can have one code base and then export to both platforms, don't have such features although lately the gap has closed quite a lot and access to the camera, sensors, notifications and such is easily done through APIs the frameworks provide to interact directly with the operating system, like a native app. Here's a full comparison of Native vs Hybrid app development.

So, why not pick native development for +FADU? Well, as stated above, it would require learning a new language and having two separate code bases, which means that every change you want to make you have to write it twice, in different languages and with the caveats of each platform. Also, having a background in web development myself, working specifically with Vue, we opted for the Hybrid app path. React Native then? Well, React Native has a steeper learning curve than other frameworks and Cordova has been around for quite some time already so we opted for that. Pure HTML, CSS and Javascript with Cordova then? That could be.. but isn't there a tool out there to help make things a little bit easier?

Meet Quasar, a High Performance Full Frontend Stack to build Responsive Single Page Apps, Server-side Render Apps, Progressive Web Apps, Hybrid Mobile Apps (that look native!) & Electron Apps, all using the same codebase.

That's the one, I'm sold. I can harness the power, simplicity and flexibility of Vue and use the phones resources with Cordova, whilst also having an arsenal of components, helpers and styles pulled in from Quasar itself.

Two years into development and more than 8000 happy users later, I'd still pick Quasar.

Interested in taking a look at the app? Check it out for Android & iOS.