Behind The Scenes: DevFest Lagos app

DevFests are annual developer conferences organized by Google Developer Groups (GDGs) around the world. As a co-organizer for GDG Lagos, I worked with three organizers and other amazing volunteers to organize DevFest Lagos in November last year where we hosted 2000 people to a full day of technical talks from live and remote speakers.

One of my tasks for the event was to build an event app with Chizoba Ogbonna, a volunteer. This was a last minute request from the rest of the organizing team which left us only seven days to build and release it.

The discussion continues here in a dialogue with Chizoba:

Chizoba: Honestly, with such little time, my full time job and just 2 hands on deck (Moyin and I), it was scary. I thought it would be impossible to get out something that works in time. I began considering if there was really a need for it or whether I should just suggest an alternative but I felt a positive energy from the organizing team that made me believe we could pull this off. I also saw it as a way of contributing to the community after my previous stints as a GDG UNN lead and a Program Assistant for the Andela Learning Community. It finally turned out to be more useful than expected, as it was the single source of truth about the event — the reviews on Play Store and Twitter speak for themselves.

Moyinoluwa: I almost turned this down because of all the work I had to do for the event. I was involved in the CFP and speaker selection process and in creating an agenda. I thought a lot more about it and decided to pick up the challenge for a few reasons:

  • At the time (and I’m still working on this), I was getting interested in taking on more leadership at work and I saw an opportunity to do this here. As the unofficial team lead for this project, I could discuss with Chizoba and make the high-level architectural decisions while not necessarily being the one to write the code and review code as well.
  • We had a lot of feature requests and so little time. Our standard was the I/O app but common sense said it was unreasonable to expect a full featured app in that amount of time. So, I had to select the minimum amount of functionality that would be required for the app to be considered useful and deliver only that — while making sure it works well — and postponing the other features (Authentication, Session favorites, Pictures in app, Speaker’s profile page and an Agenda page) for a future version.
  • Everything was going to be over the next weekend and I was mentally prepared to take on the challenge while not letting my day job suffer because the results from building this promised to extend long after the stress was over. At least with this, I could have another app to point to whenever the popular Android Developer question “Give us links to your app on the Play Store” surfaces.

Chizoba: We made use of the Guide to App Architecture in the Android Developer documentation and we kept every structure as simple as possible as we had limited time. One major decision we made was to keep the app as small as possible as most of our users, if not all, use metered internet connections. Being responsible for the User Interface implementation, I created custom styles to achieve a uniform style throughout the app.

Moyinoluwa: We used Kotlin, had Min SDK 21, Android X, Material Components, ViewModels, LiveData and the Firebase Cloud Firestore — because we didn’t have a backend and we wanted to be able to push data immediately to the app. While we knew splitting the app into multiple modules was the best way to go about shipping a small app, at that point we needed to balance implementation with releasing a product so we decided to that in other ways instead. One of the cases that came up was when Chizoba suggested using the Firebase Remote Config to store the wifi network and password information while we were already using the Cloud Firestore to store the rest of the data in the app. I measured the difference in size and it amounted to an additional ~1.2Mb so I decided we didn’t need it. We also used Vectors Drawables instead of .png files for all our icons.

Chizoba: I got the design inspiration from the Google I/O 2018 app, the DevFest creatives and from my creative mind 😜. While trying to figure out how to use the DevFest colors in the app, I came up with changing Navigation Bar color (as seen below). I tried to keep the UI simple and neat. The app icon used was one of the many prototypes I did and I made it into an adaptive icon. I also created some designs that were not ready in time for the launch but will be available when we make the project open source.

Moyinoluwa: While Chizoba sorted most of the designs for the app out, I was most particular about the first page of the app. Since we cloned a lot of the designs from the I/O app, I wanted the first page to be different and functional, being that we were focused on shipping the barest minimum features. I was on Uplabs the entire period looking for a clean and sleek design inspiration to match what I had in mind. We had an empty state for the home screen and I decided to display an animated version of the app icon there. I was just learning how to use Animated Vector Drawables so I used the opportunity to explore animating the app logo with Shape Shifter since it was already a Vector Drawable.

Changing Navigation Bar colors

Chizoba: I’ve noticed that mobile apps are becoming important at technical events like DevFest and Droidcon. Hence, I suggested the plan to make this into an app template and make it open source. This way, other developers can re-use it for their respective events, and not have to reinvent the wheel every time they need to build an app for their event. This template will contain several generic features used in most events, and will also provide style for customization.

Moyinoluwa: We plan to release this soon. 🤞🏾

Chizoba: GitHub was used for code collaboration and project maintenance. I created a Project board which was used to track the status of each task. As more features which required certain setup on each contributors’ computer were included in the app, I added those information to the README file so that each collaborator gets to see the updated information. The README file also contained information about the development workflow.

Moyinoluwa: We used a basic Gitflow Workflow. Thankfully, we were both used to this already so it was easy to follow. Most of our other collaboration (discussing architecture, asking quick questions) were done by chat on WhatsApp. I already had a Google Play Developer account so I hosted the app. I used the beta feature to make the app available to the rest of the organizing team and get early feedback before the final launch.

Chizoba and I really need to deliver on our promise of making the app open-source. Please do us a favor and don’t stop asking until you see it. ✌🏾

Android Dev, Marathoner