Bookbag for Android

Bookbag is the best Spades scorekeeping app that allows you to easily score based on your rules and keep history for all of your Spades games. It also comes Chromecast -ready so you can stream the action from your phone to your television for everyone to see.1

Why Android First?

To answer that, here’s a quick story.

At Audiomack, I’m heavily involved in almost everything related to the UX around the site and more so nowadays, within the apps. Making sure the app developers are on the right track in terms of building a maintainable app along with providing insight about our API, its inner workings and other integrations is something I deal with quite often.

Out both of our apps, we started noticing some recurring issues that needed attention on Android. I haven’t really touched Android development since the G1 was a thing and even then, I only went half way through a tutorial that showed you how to make a fortune cookie app before I was like… F this. Needless to say, things have changed within the Android landscape since those early 2000s so I figured if I’m going to help out on Android at all, I need to know what I’m talking about. Plus I had done a little bit of Swift in the past so I was excited to try something new. Not to mention, I use an Android as my primary device so it’s about time I build something for a platform that I carry around every day. I dedicated most of my time watching tutorial videos, reading blog posts and talking to an Android developer friend. After two months or so, I felt pretty confident. One of my goals was to introduce more tests within our app so late last year, I started a refactor within our app around the login and registration flow. In order to write tests, you have to have testable code and an organized app architecture is something that directly lends itself to this. We did not have much of an architecture so I introduced our first bit of Kotlin along with an MVVM architecture and we have been working this way since.

I started to really enjoy Android development and wanted to keep learning more. I usually tell people if you want to learn or get better at coding, start by building something you’re interested in. I had an idea related to OCR but it was quickly shot down when I was denied access to the Venmo API as they don’t facilitate user to user transactions on third party apps. Oh well.

Fast forward to October 2018 and I was in Miami for my birthday along with a few friends. On the rooftop of the Marriot, a Spades game broke out. Having played Spades at family functions growing up in Kentucky, moving to Philly and playing with people from there, DC and New York, I noticed that you always have to start by talking about what rules you play with. Everyone plays with different rules. I played a lot of Yahoo! Spades back in the day (RIP) but it seems those Ace high rules never fly when you play with people in person. The only thing all of these groups had in common besides the trash talk was the scoring with pencil and paper. Enter, Bookbag.

Road to One Dot Oh

I generally always have pet projects that I’m working on. I think they not only make you a better developer, but they also allow you to explore new ideas and technologies that you can potentially bring into your professional job. This app was going to be nothing short of that. The problem I have is finishing a project before moving on to my next “big idea”. Since Bookbag seemed like a simple enough app to build for my first Android app, I made it my mission to not work on anything else until it was done. “Simple” and “Done” are funny words when you are always building things. Coding is really like any other type of art. When does a painter know that they are done painting a piece?

MVP is a term thrown around a lot in this space. I’m not sure it holds as much weight when speaking of fine arts but I think it’s a good concept to keep people like myself grounded when it comes to releasing version 1.0 of anything we decide to create. For my MVP, I decided that Bookbag needed to have a few required things before releasing.

Chromecast Support

Having built the custom Chromecast app for Audiomack and adding native support to the website, I figured this would be a great feature to add. If you’re playing Spades in your living room or in some other public setting, it will be hard for everyone to see what’s happening on your phone. Bookbag’s custom Chromecast app is a great companion to have with the app.

Various Variations

Thinking about all of the different ways people play, I knew this was going to be a main focus of the app. Bookbag allows you to save and load different rulesets ondemand. Your house rules may not be the same as a friend so I wanted to allow for switching quickly in case you play on the road. I also took a scroll down the Spades Wikipedia page to learn about rules that I wasn’t aware of previously and added some that I think are practical along with others like “Boston” that I’ve never witnessed.

Tests

Even though this was my first Android app, I’m no stranger to the software development process. Having a CI setup via Bitrise that can run automated tests for me whenever I make a change is essential. Bookbag has over a dozen rules that can affect the way the score is calculated so I wanted to make sure that I have pretty high coverage around score calculation. There could definitely be more tests but I wanted to make sure the core was covered pretty well. These tests give me more confidence when I go to make changes earlier so there was no question testing would be a huge part of getting this app out.

Shareability

The rating of an app on any app store is essential to its success. Not only does the app store (or play store in this case) promote you to be higher in the search results, but it also inspires confidence when someone needs to decide between you or your competition. To improve the virality of any app, you need to have some sort of share component that makes it easy for one person to connect another to your app. Virality may not necessarily apply to Bookbag since it’s pretty niche but when have you ever known me to not go the extra mile?

You can easily share the app using the kabob menu and rate from the settings menu. You might also notice a little gem after a game is finished. Try pressing “Share” and Bookbag will generate a game summary for you to share to your socials.

Freemium

As an indie developer, it would be nice to get paid every now and then for the things that I build. I wanted Bookbag to be the start of that trend. I decided to go with the freemium model because it allows people to test out the app in its entirety before deciding that they may want to upgrade. I hate seeing apps that push a paid version on you as soon as you open the app and I wasn’t willing to compromise the user experience by doing something similar. As of right now there are minimal ads and all rule variations are free. This is definitely one aspect of the app that will be iterated on. While a user can upgrade to Bookbag Pro to remove ads and keep these features going forward, I will be experimenting with subscriptions and more in-app purchases once the iOS app is released. Spoiler alert: The iOS app is coming.

Subtle Animations

I love animation when it comes to user interfaces. They can breathe life into an application that uses them appropriately. Bookbag is naturally a pretty static app by itself so I knew it needed a little spice. Chromecast app included. From text labels and buttons to the winners dialog popup, you’ll notice a bit of effort was made to inject a little personality in what would otherwise be a pretty boring looking app.

Next steps

While I’ve already noticed a bit of room for improvement, the next goal is to bring Bookbag to iOS. As it turns out, everyone on that Marriott rooftop had an iPhone.

I could have made things a bit easier and duplicated the app UI on iOS but as I mentioned earlier, I like to take these opportunities to learn new things especially when they can benefit my impact at my day job. In terms of UI, iOS has employs patterns that aren’t used on Android and visa versa. Bookbag on iOS will not be a direct clone of the Android app and should be pretty familiar to iOS users. I had an internal debate with myself on whether or not to use Flutter or React Native but decided to go native for the following reasons.

The Day Job

I’m sure you’re noticing a trend here by now.

Audiomack’s iOS and Android apps are both native and I wanted to be familiar with the platform specific process a bit more intimately. I have already learned a few things that can improve our existing codebase even though Bookbag is a much smaller app. I count this as a win.

The Learning Experience

Having used similar platforms like PhoneGap and Ionic in the past, there’s usually a point where you have to bridge into native code. Not to mention if a new feature comes out for iOS or Android, you’ll have to wait for someone to build the bridge for that native feature so you can then in turn, use it with Flutter/RN. Even though development is a bit slower, I cut the middleman out here. I may try Flutter for my next app though depending on what I come up with.

No matter what new technology comes out that claims to speed up development, I know that having native experience makes me stronger with all of these other platforms. I also do not believe learning ever goes to waste.

Kotlin Multiplatform

I have most of the UI of the iOS app built already. While learning Android, I really liked the Kotlin language. I remember feeling this way when Swift came about. There are things from both languages that I wish was in the other but overall Kotlin felt pretty good. A newer addition to Kotlin that seems pretty promising is Kotlin Multiplatform. Even though the UI of Bookbag will be a bit different across platforms, the business logic and data structures under the hood will essentially be the same. Not to mention all of the tests that I wrote for the Android app will have to be duplicated for iOS. Kotlin Multiplatform is something I might explore in order to solve these problems. If all goes well, maybe it’s something that I can bring to the day job.

One Last Thing

In the meantime if you’re an iOS using Spades player, grab a friend with an Android. You know they’re better than your other friends anyway. If you’re on Android, you can visit bookbagspades.com and click the download link. Or… I guess I will be nice and provide a link to the play store here.

Bookbag is also on social media so do whatever you want with these links:

https://twitter.com/bookbagspades https://www.instagram.com/bookbagspades https://www.facebook.com/bookbagspades

Special thanks to @erickjm2 for the logo!

  1. You will need a Chromecast device in order to use this feature.