9 Cards V.2: The First Open Source Launcher written in Scala on Android
- by Maureen Elsberry
- February 09, 2017
- scala• android• 9 cards• open source• cats• monix• shapeless• scalacheck
- 3 minutes to read.
Presenting 9 Cards V.2
We’re pleased to introduce you to 9 Cards V.2, the first open source launcher created with the Scala programming language for Android. Designed by and for developers, the intention of this project is to highlight the power of Scala and many of the ecosystem’s libraries on Android.
When we first released 9 Cards in 2014, we created it as a non-intrusive layover launcher that you could access with simple gestures. We had a lot of compliments on the functions and design of the app, but a good deal of feedback was requesting that we make the product available as a replacement to their default launchers.
The community spoke, and we listened. 9 Cards V.2 is a fully-integrated home launcher packed full of innovative features, including:
- Organizes your apps:
9 Cards automatically categorizes your applications into Collections that can be accessed with simple gestures. Whether it’s Entertainment, Music, or Communications, 9 Cards will place them so you can easily find them.
- Adapts to your day:
Your phone use changes throughout the day, that’s why 9 Cards adapts to your daily schedule based on defined Moments. Whether you like to play games when you’re at home, listen to music while you’re commuting, or checking your email at work, Moments are aimed to recognize your habits, so your phone is most productive for your routine.
Moments activate based on the hours you set, your wifi settings, location, or specific functions such as driving a car, or plugging in your headphones.
- Discover new apps:
We’ve also incorporated a social aspect to 9 Cards. What better way to suggest and learn about excellent games, photo editing software, or useful dev apps than by sharing your collections with the community. You can also download other user’s collections and be notified when updates occur.
- Increase productivity:
Our App Drawer’s behavior is focused on your productivity. With a simple gesture, you can access your contacts, filter your apps by recently installed, or see your missed calls. You can also search directly in Google Play.
Made by and for developers
The challenge was to design a product that would take advantage of all the possible functions and features of Android phone and bridge a gap between the Android SDK imperative nature and the more Functional Architecture approach that we wanted to follow.
Instead of using traditional imperative toolsets, 9 Cards uses popular libraries from the Scala ecosystem including Cats and Monix in the client-side, and Circe, doobie, Shapeless, ScalaCheck, http4s, and Akka in the backend.
We’ve developed the services that the client utilizes in such a way that limits the dependency on third-party APIs as much as possible. The server backend was also created in Scala and provides the app with the functionalities needed for categorizing and ranking the Android apps by popularity.
The server app architecture is based on free monads. A Free Monad is a data type that allows the decoupling of program declaration from program interpretation. This means you can use Free monads and Free applicatives to completely describe a program’s business logic.
We’ll be posting an upcoming series of articles that will break down some of the technical highlights and code of this project soon.
Enhance your experience and stretch the boundaries of your phone with 9 Cards! Download the launcher from the Google Play Store, play around, then check out the code!
You can find out more, comment, or contribute on the 9 Cards GitHub and 9 Cards Backend repo.
You can also follow us on Twitter @47deg and discuss using #9Cards.
We’d like to recognize some of our technical team who have invested their time and talent into this project, especially Javi Pacheco, Domingo Valera, Federico Fernández, Ana Márquez, Noel Markham, Diego Alonso, and Francisco Díaz.