Developing Payleven was by far the biggest of challenge I’ve ever had while working with iOS development. Payleven’s business is processing credit/debit card transactions and the app works as in the middle between the card reader and the servers.
It has the same basic functionalities as Square app. The focus of the first version of the app is on processing payments and this task itself turned out to be really difficult because the app have to communicate to a third-party library that isn’t very well documented and implemented. I had to implement a lot of safety measures to make sure the app wouldn’t crash at random.
But even with some difficulties, I’m really proud with how the v1 turned out. Right now I’m working on v2 that includes a native onboarding experience.
During the development I started reading more about testing and how to improve my code to make it easier to write tests. That's when I found out more about MVVM and Reactive Cocoa and after reading some articles, it just 'cliked' how great implementing the MVVM pattern with RC binding everything together is.
My second project with Pixelmatters was BLS, which is an app to the book with the same name. The app is basically an epub reader but with more features that improves the user experience. It’s integrated with MailChimp SDK to allow the user to subscribe to the book newsletter. The app is provided free with an in-app purchase of the full book. The development was tough at the beginning, because the first layout had the book chapters displayed vertically. The issue with that was calculating the chapters heights and providing a good scroll experience while also taking care of not using too much memory.
The app is provided free with an in-app purchase of the full book. The development was tough at the beginning, because the first layout had the book chapters displayed vertically. The issue with that was calculating the chapters heights and providing a good scroll experience while also taking care of not using too much memory.
After some iterations, we decided to display the chapters horizontally and the experience improved a lot. It was also written entirely in Swift.
For this project I was invited to help their local (New York) team finish the project in time for their scheduled release. Stayful is a website that finds great deals at boutique hotels. My main tasks while working on the app was creating and laying out screens and hooking them up with the business logic. I also implemented integration with Apple Pay through Stripe’s SDK. This was the first app written entirely in Swift that I worked on.
This was my first freelance job and I worked alongside Pixelmatters, an awesome design agency from Portugal. Shopfans is an website that helps customers to buy products from the US and deliver them to their home countries. They needed an iOS app that would allow their customers to create their shipments and track them. It was a complex app because of the company business model, with lots of forms and screens.
The app needed to be heavily integrated with Shopfans RESTful API, so I worked alongside their great development team to shape that API to reflect the app necessities. After 6 months of development, the company had some internal issues and we had to drop the project at the very end.
I was hired for a 3 month contract with this company that have a law firm management software and needed an iPad interface for their system. QJurídico is the name of the software and also the name of the app, which would focus on aiding lawyers on their daily routine by reminding them of where is their next appointment, search for an specific case and also have all the documents related to this case at hand (PDF).
For this project I had to implement a custom calendar view, which imitates the iOS native Calendar app but the real challenge was managing the synchronization and availability of big files. Since those files are confidential, it could only be downloaded while the app was connected on the office’s wifi. Because of that, the app have a “synchronization status” widget that works just like Dropbox does, showing the current state of the files in the app.
One day I was browsing through the Brazilian App Store and noticed some “boleto reading” apps ranked among the top grossing. And all of them were ugly and didn’t have an iOS 7 style (at the time). So I decided to create one and see how it fared against them. Now “boleto” can be roughly translated to “invoice”, which you can pay on your computer, phone or at your bank. Since they are a popular method of paying for goods in Brazil, it’s not common to have lots of boletos to pay and sometimes forgetting to pay.
By reading the bar code from the boleto, Zebra can save their due date, amount, type of payment (electric bill, phone bill, government taxes, etc) and present in a user friendly way so the numbers can be copied from the phone or to the computer. The app allows that by creating an web server within itself and returning an IP address for the user to open on her computer browser. Zebra also allows the user to set up alarms and set a boleto as payed.
At first I charged US$0.99 for the app, but the sales weren’t great so I added an in-app purchase and started giving it for free with a 3 boletos limit. With that strategy, the downloads increased, but the revenue didn’t. Even so, I’m really proud with how the app turned out and to know that Zebra is helping someone out there feels really good.
Happy with our work, the client from the last two projects asked us to create an app that would work as a virtual guide to the participants of an event. The app features a schedule, participants list, directions and also allowed participants to save their contact information so any other app user could reach out for networking.
The app was heavily integrated with an RESTful API and we used AFNetworking to help us with this integration. The app was created really fast, in one month, and it was a success during the event.
This was the first project I developed from the ground up. The main idea behind ‘Quimio’ was being a virtual assistant to patients undergoing oral chemotherapy, a new method of therapy less intrusive and more convenient for patients. The app allows the user to input it’s medication schedule, set up alarms and add medicine identification by determining it’s shape and color.
Given that the target audience are user that aren’t well, most of the design was clear and simple. Because of the complexity of a user’s medical schedule the app had lots of forms. I developed generic view controller classes to show this forms, which uses a Property list as data source. I was able to create most form screens fast, but the drawback was the initial required development time. The main screen showed a review of the user day, with a background that changed with the time of the day, a clock that allowed the user to see the next medications and a button that the user could input her humor.
If the user wanted, she could add her doctor contact info and send all data from the app so the doctor could evaluate how treatment is working. The alarms setup was hard, because of the limitations from UILocalNotifications, so I had to be inventive to allow ‘infinite’ alarms. This project helped me improve my skills on Core Data threading, so I could save all alarms to the persistence store without freezing the app. I also started working extensively with CocoaPods.
The first commercial app I worked on wasn’t entirely build by myself. When I joined the company that worked on ‘Diálogo’, the iPhone app was on it’s way to be finished and released to the App Store. Since I was a beginner at the time, it took me some time to get how the foundation of iOS development worked, it’s frameworks and Objective-C.
After a while, I got confident and asked to participate in the project and was given the task to create the iPad version of the app. Since the logic would be the same, the challenge was adapting the interface to the bigger screen in a way that made sense. The main adaptation that we did was imitating the Twitter iPad app interface, where it have a menu on the left and a stacked view on the right. It was hard getting the interface to work in every possible orientation, adapting the layout for the width difference.
I had to learn how Auto Layout worked, and implement it on every iPad screen (given that the iPhone screens didn’t have it). I also had to understand every step a view controller goes through to load a view and the orientation changes callbacks, to correctly display the layout.