Ivan Markusi, Developer in Zagreb, Croatia
Ivan is available for hire
Hire Ivan

Ivan Markusi

Verified Expert  in Engineering

Senior Android Developer

Location
Zagreb, Croatia
Toptal Member Since
June 28, 2019

Ivan is a product-oriented software engineer with broad experience in the development process of apps for Android and iOS eco-systems. He's crafted apps for a variety of clients from small business owners to large mobile network operators and banks. Clean, testable, and efficient codebase is what drives him, as well as a happy and successful client, an indicator of high-quality work.

Portfolio

Reddit (via Toptal)
Android, Kotlin, Java, Codecov, GraphQL
Poq (via Toptal)
Mobile Development, RxJava 2, REST APIs, Zeplin...
Peg B Technology (via Toptal)
Mobile Development, RxJava 2, REST APIs, Android Architecture Components...

Experience

Availability

Part-time

Preferred Environment

Sublime Text 2, iTerm2, Figma, Charles, Sketch, Android Studio

The most amazing...

...project I've worked on is a white label amusement park app, operating in a dozen different parks across North America, accumulating over 1 million downloads.

Work Experience

Freelance Senior Android Developer

2021 - 2021
Reddit (via Toptal)
  • Pursued efforts dedicated to increasing the number of Active Communities, Successful Contributors, and Daily Active Mobile Moderators as a part of the Community Growth team.
  • Implemented various features rolled out as experiments, like the Discover Tab. Some of them became globally available.
  • Applied TDD development process with high code coverage percentage working in a sizeable multi-module app.
Technologies: Android, Kotlin, Java, Codecov, GraphQL

Freelance Senior Android Developer

2019 - 2021
Poq (via Toptal)
  • Developed and maintained multiple customized app-commerce mobile apps using modular SDK.
  • Refactored part of the codebase from Java to Kotlin and migrated from Dagger2 to Koin.
  • Led the onboarding of System Integrator Android developers onto the platform and successfully overcame the frictions of such a process.
  • Oversaw work and mentored external developers, ensuring high code quality and best practices were being applied.
  • Improved the onboarding process, set up new projects and CI/CD solutions.
  • Performed regular code reviews through GitHub using Jira tracking software.
  • Customized the native SDK and created bespoke features for over ten different clients from the USA, UK, and Australia, including Belk, Studio, PrettyLittleThing, Kurt Geiger, Cotton On, and more.
Technologies: Mobile Development, RxJava 2, REST APIs, Zeplin, Android Architecture Components, Gradle, Sketch, Charles Proxy, Reactive Programming, Rx, Continuous Integration (CI), Unit Testing, Dependency Injection, IntelliJ IDEA, JSON, Clean Architecture, Object-oriented Programming (OOP), Model View Presenter (MVP), Continuous Delivery (CD), Firebase, Google Maps, SQLite, MySQL, SQL, Jira, JUnit, Groovy, RxJava, REST, Minimum Viable Product (MVP), GitHub, eCommerce Platforms, eCommerce Development, eCommerce, GitFlow, Test-driven Development (TDD), Agile Software Development, Git, Android Studio, Android SDK, Android, Senior Android, Dagger, Dagger 2, Model View ViewModel (MVVM), Java, Azure, KOIN, Kotlin, Mobile Apps

Freelance Senior Android Developer

2019 - 2019
Peg B Technology (via Toptal)
  • Developed a mobile app for secure cashless payments of goods and services.
  • Joined the team to accelerate the development process of the app.
  • Conducted code analysis and suggested architectural improvements.
  • Mentored the client’s developers, focusing on applying adequate design patterns.
  • Evaluated technical and soft skills through code reviews, skillset matrixes, and one-on-one sessions.
Technologies: Mobile Development, RxJava 2, REST APIs, Android Architecture Components, Gradle, Sketch, Dagger 2, Charles Proxy, Reactive Programming, Rx, Continuous Integration (CI), Unit Testing, Dependency Injection, IntelliJ IDEA, JSON, Clean Architecture, Object-oriented Programming (OOP), Model View ViewModel (MVVM), Model View Presenter (MVP), Continuous Delivery (CD), Firebase, Google Maps, SQLite, MySQL, SQL, Jira, Dagger, JUnit, Groovy, RxJava, REST, Financials, Financial Systems, Finance, Minimum Viable Product (MVP), GitHub, GitFlow, Test-driven Development (TDD), Agile Software Development, Git, Android Studio, Android SDK, Senior Android, Kotlin, Java, Android, Mobile Apps

Mobile Engineering Expert

2019 - 2019
Undabot
  • Analyzed business requirements, performed project estimations, and shaped project requirements.
  • Coordinated multiple engineering teams and overviewed the status of projects.
  • Mentored, evaluated employee’s technical skills, and onboarded new developers.
  • Developed applications and libraries for both Android and iOS.
  • Led the R&D team, focusing on how to structure code into reusable components.
Technologies: Mobile Development, RxJava 2, REST APIs, Domain-driven Development, Model View Controller (MVC), Model View Intent (MVI), Zeplin, Android Architecture Components, Gradle, Bitbucket, Sketch, Dagger 2, JSON API, Charles Proxy, Reactive Programming, Rx, Continuous Integration (CI), Unit Testing, Dependency Injection, Waterfall Development, IntelliJ IDEA, JSON, Clean Architecture, Object-oriented Programming (OOP), Model View ViewModel (MVVM), Model View Presenter (MVP), Continuous Delivery (CD), Fastlane, Firebase, Google Maps, SQLite, MySQL, SQL, Jira, Dagger, JUnit, Groovy, RxJava, REST, Minimum Viable Product (MVP), GitHub, GitFlow, UI Testing, Test-driven Development (TDD), Agile Software Development, Git, Android Studio, Kotlin, Android SDK, Java, Senior Android, Ktor, iOS, Android, Mobile Apps

Software Architect

2018 - 2019
Undabot
  • Built mobile app for one of largest mobile network operators in Europe.
  • Set up application architecture for new and existing projects.
  • Conducted code analysis and technical audits of various Android and iOS codebases.
  • Mentored junior Android and iOS developers.
  • Collaborated closely with back-end developers on defining RESTful APIs for mobile applications.
  • Represented a company as a speaker, holding presentations at various meetups.
Technologies: Mobile Development, RxJava 2, REST APIs, Domain-driven Development, Model View Controller (MVC), Model View Intent (MVI), Zeplin, Gradle, Bitbucket, Dagger 2, JSON API, Charles Proxy, Reactive Programming, Rx, Continuous Integration (CI), Unit Testing, Dependency Injection, Waterfall Development, IntelliJ IDEA, JSON, Clean Architecture, Object-oriented Programming (OOP), Model View ViewModel (MVVM), Model View Presenter (MVP), Continuous Delivery (CD), Fastlane, Firebase, Google Maps, SQLite, MySQL, SQL, Jira, Dagger, JUnit, Groovy, RxJava, Ktor, Minimum Viable Product (MVP), GitHub, GitFlow, UI Testing, Xcode, iOS SDK, Test-driven Development (TDD), Agile Software Development, Git, Android Studio, Android SDK, Senior Android, REST, Java, Kotlin, Swift, iOS, Android, Mobile Apps

Senior Android Engineer

2017 - 2018
Undabot
  • Developed largest regional classified ads platform, with 500,000+ installs on the Play Store.
  • Worked effectively with legacy code, implemented new features, and improved test coverage of the app.
  • Introduced Kotlin to the codebase, alongside with MVVM architectural pattern and static code quality inspection tools (Detekt, Ktlint).
  • Implemented continuous integration and continuous delivery with GitLab and Fastlane.
  • Collaborated closely with back-end developers on designing the mobile-oriented RESTful JSON API.
  • Worked in an Agile environment, applying scrum values and principles.
Technologies: Mobile Development, RxJava 2, REST APIs, Gradle, Dagger 2, Reactive Programming, Rx, Unit Testing, Dependency Injection, Waterfall Development, IntelliJ IDEA, JSON, Clean Architecture, Object-oriented Programming (OOP), Model View ViewModel (MVVM), Model View Presenter (MVP), Firebase, Google Maps, SQLite, MySQL, SQL, Jira, Dagger, JUnit, Groovy, REST, Minimum Viable Product (MVP), GitHub, GitFlow, Agile Software Development, Git, Android Studio, Android SDK, Java, Senior Android, Continuous Delivery (CD), Continuous Integration (CI), JSON API, RxJava, Kotlin, Android, Mobile Apps

Android Engineer

2014 - 2017
Infinum
  • Built mobile app for one of the largest Slovenian banks.
  • Built white label app for amusement parks, accumulating over 1 million downloads on the Play Store.
  • Developed a number of Android apps written in Java using clean architecture, applying MVP pattern and reactive programming paradigm.
  • Implemented continuous integration with CircleCI.
  • Wrote hundreds of unit and UI tests to ensure the stability of the written code.
  • Performed regular code reviews and peer programming.
  • Worked closely with designers to ensure Android UI/UX best practices.
Technologies: Mobile Development, RxJava 2, REST APIs, Dagger 2, Rx, Continuous Integration (CI), Unit Testing, Dependency Injection, Waterfall Development, IntelliJ IDEA, JSON, Clean Architecture, Object-oriented Programming (OOP), Model View ViewModel (MVVM), Model View Presenter (MVP), Continuous Delivery (CD), Google Maps, MySQL, SQL, Jira, Dagger, REST, Minimum Viable Product (MVP), GitHub, GitFlow, Agile Software Development, Android Studio, Android SDK, JUnit, SQLite, RxJava, Git, Gradle, Groovy, Java, Android, Mobile Apps

Reddit

http://www.reddit.com
I implemented various features rolled out as experiments, the Discover Tab being one of the major ones, with some of them becoming globally available.
I applied the TDD development process with high code coverage percentage working in a large multi-module app.

Poq Commerce

https://poqcommerce.com/
I've worked on multiple customized app-commerce mobile apps using the client's app-commerce platform in the form of several SDKs.

The work consisted of either setting up new clients and implementing bespoke features or bug fixing and implementing new features for existing clients.

I've had the opportunity to advise the external system integrators' team on how to use the platform, practices to follow, and code of conduct analysis of the mobile project.

Part of the work was migrating the codebase from Java to Kotlin and migrating dependency injection from Dagger2 to Koin.

Assuming a consultant role, I've also improved the onboarding process, the way new projects are set up, and various features of the CI/CD solution.

DFB-Sammelalbum von REWE

https://play.google.com/store/apps/details?id=de.rewe.reweeuro2020
The REWE's digital scrapbook for postponed Euro 2020 championship.

I was part of a small mobile team, implementing and supporting the app while the promotion was active.

The app had a heavily customized UI with emphasis on smooth transitions and custom animations.

The app supported scanning scrapbook cards via image and text recognition: Image recognition was implemented using TensorFlow and text recognition used the Firebase ML kit.

Classifieds Ads Platform App

The largest regional classified ads platform, with 500,000+ installs on the Play Store.

I was a part of a dedicated Android team, working in an agile environment.

The app was initially a WebView wrapper. The team and I started to implement the app feature by feature using the Android SDK.

I’ve introduced Kotlin, static code quality checks, continuous integration and MVVM pattern to the codebase.

The challenging part was working with legacy code, which we surrounded with black box tests and refactored bit by bit until the majority of the code was covered with unit tests.

By being a part of a dedicated team, I’ve collaborated with designers about the UX of the app.

Also, I’ve designed the public API of the backend services consumed by the mobile app, alongside the backend team.

Aircash

Financial application for money remittance between people and for topping up or withdrawal of money from partner online and telecom accounts.

I am the lead developer of a small mobile team, which maintains the app and implements new features.

The app was initially written in Cordova since it allowed the company to quickly prototype and publish the app to both App Store and Play Store.

I led the team in rewriting the codebase to native Android and iOS.

I am developing both Android and iOS apps.

Android app is written in Kotlin, using MVVM architecture pattern (Android Architecture Components - ViewModel/LiveData) in conjunction with dependency injection (Koin) to ensure maximum testability.

Threading is done using Kotlin Coroutines.

Unit tests are done with JUnit/Mockito, while the instrumentation tests are using the Espresso framework.

The iOS app is written in Swift. It uses the MVVM architecture pattern and reactive approach (RxSwift).

Unit tests are written using Quick/Nimble frameworks. In addition to the unit, the app also has a suite of snapshot tests.

Both apps are hosted on a GitLab repository and use GitLab integrated CI and CD features.

White Label Amusement Park App

White label solution used in 10+ amusement parks across North America, with up to 200,000+ downloads each.

I’ve implemented and maintained the project in a way that a new venue could easily be deployed.

Each park’s app can be reskinned and features can be toggled either at compile time or dynamically via the backend service.

The app has an interactive guide map with a wayfinding feature, push and in-app notifications.

Beacons in the park are detected using Bluetooth LE and user position is monitored using the beacons, GPS tracking, and geofencing.

mBanking App

Mobile app for one of Slovenians largest banks, with 100.000+ installs on the Play Store.

I’ve rewritten the app from scratch since the codebase had a number of WebView wrappers, no structure and it was not feasible to implement landscape support before the deadline.

The app works in both portrait and landscape mode, on various screen sizes and formats, uses MVP pattern and dependency injection, while the data flow is implemented using Reactive Programming paradigm.

A lot of effort was put in the security and testability of the app, taken into account the core business of the client.

All users' private data, such as tokens is stored into secure enclaves on the device. All user interaction is monitored in the app.

The user is automatically logged out for inactivity.

Code is obfuscated and no compromising data is kept in the app, nor in the repository where the app’s code is.

Mobile Network Operator App

Greenfield project for one of the largest European mobile network operators.

The app is a white label solution for network operator customers. It is engineered in a way that the client can deploy the app to different countries by rebranding and changing the configuration.

I’ve worked on functional specification and requirements documentation for the mobile app in the pre-development stage.

During the development phase, I developed and coordinated the backend and mobile teams.

I’ve developed the same features on both Android and iOS, having an excellent opportunity to compare the frameworks and tackle the challenges in a platform-agnostic way.

Menstrual Cycle Tracker App

App for tracking the menstrual cycle, with 100,000+ installs on the Play Store.

I’ve ported one of the most downloaded apps on the App Store to Android.

The app has a unique design, a lot of custom views and uncommon Android navigation gestures.

The app has an offline-first UX, syncing data from the database (DBFlow/SQLite) to the remote API (OkHttp/Retrofit) in the background.

I’ve implemented “infinite”-scrolling mechanism for the calendar and simple graph drawing on Canvas.

Beauty Salon Owner’s App

An app for a startup aimed towards developing a SaaS for managing finances, employees, inventory and pretty much everything a beauty salon owner would need.

Salon employers can schedule appointments, view the customer’s history, sell various products and issue invoices.

I’ve developed the app and established data models for the admin interface on the web and the mobile app, as a part of the technical documentation.

The app is optimized for iPad in landscape mode.

It uses Bluetooth LE to communicate with the ENV terminal (part of the SumUp SDK), which is used for processing payments.

Power Consumption Monitoring App

A simple companion app for monitoring the power consumption of the household made for a German startup.

Wrote project specification, implemented the project requirements and onboarded in-house developers to the codebase.

I’ve implemented complex graphs which display the power consumption over time.

Languages

Java, Kotlin, SQL, Swift, Groovy, C#, GraphQL

Frameworks

JUnit, KOIN, Dagger 2, Dagger, Android SDK, Rx, iOS SDK, Spring Boot, Ktor

Libraries/APIs

RxJava, Retrofit, Retrofit 2, REST APIs, RxJava 2, Android Architecture Components, Google Maps, TensorFlow, JSON API

Tools

GitHub, Git, IntelliJ IDEA, Android Studio, Charles, Figma, Jira, Xcode, Charles Proxy, Zeplin, Gradle, Bitbucket, Sublime Text 2, Sketch, Fastlane, Codecov

Paradigms

Mobile Development, Agile Software Development, Waterfall Development, Dependency Injection, Model View Presenter (MVP), Model View ViewModel (MVVM), Unit Testing, Object-oriented Programming (OOP), Continuous Integration (CI), Clean Architecture, Reactive Programming, Continuous Delivery (CD), REST, Model View Controller (MVC), Domain-driven Development, Test-driven Development (TDD), Model View Intent (MVI)

Platforms

Android, Firebase, iOS, Bitrise, Azure

Storage

JSON, MySQL, SQLite

Other

Minimum Viable Product (MVP), Mobile Apps, GitFlow, Senior Android, eCommerce, eCommerce Development, eCommerce Platforms, Finance, Financial Systems, iTerm2, Machine Learning, Financials, UI Testing

2014 - 2016

Master of Science Degree in Software Engineering and Information Systems

Faculty of Electrical Engineering and Computing - Zagreb, Croatia

2011 - 2014

Bachelor of Science Degree in Software Engineering and Information Systems

Faculty of Electrical Engineering and Computing - Zagreb, Croatia

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring