Ivan Markusi, Software Developer in Zagreb, Croatia
Ivan Markusi

Software Developer in Zagreb, Croatia

Member since April 18, 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.
Ivan is now available for hire

Portfolio

Experience

Location

Zagreb, Croatia

Availability

Part-time

Preferred Environment

Android Studio, Xcode, Sketch, Zeplin, Charles

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.

Employment

  • Android Developer Expert

    2019 - 2019
    Peg B Technology (via Toptal)
    • Developed 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.
    • Evaluated technical and soft skills through code reviews, skillset matrixes, and 1-on-1 sessions.
    Technologies: Android, Java, Kotlin
  • 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: Android, iOS, Ktor
  • 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: Android, iOS, Swift, Kotlin, Java, REST
  • 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: Android, Kotlin, RxJava, JSON API, Continuous Integration, Continuous Delivery
  • 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: Android, Java, Groovy, Gradle, Git, RxJava, SQLite, JUnit

Experience

  • Classifieds Ads Platform App (Development)

    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.

  • White Label Amusement Park App (Development)

    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 (Development)

    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 (Development)

    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.

  • Mobile Money Transfer App (Development)

    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 a combination of JUnit/Mockito, while the instrumentation tests are using 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.

  • Menstrual Cycle Tracker App (Development)

    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 (Development)

    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 (Development)

    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.

Skills

  • Languages

    Java, Kotlin, Swift, SQL, C#
  • Frameworks

    Android SDK, iOS SDK, Rx, Spring Boot, Ktor
  • Paradigms

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

    Android, Amazon Alexa, iOS, Firebase
  • Storage

    JSON, MySQL, SQLite
  • Other

    Senior Android, UI Testing, GitFlow
  • Libraries/APIs

    Android Architecture Components, JSON API, Google Maps
  • Tools

    Git, IntelliJ IDEA, Xcode, Zeplin, Android Studio, Charles Proxy, Sketch, Gradle, Fastlane

Education

  • Master of Science degree in Software Engineering and Information Systems
    2014 - 2016
    Faculty of Electrical Engineering and Computing - Zagreb, Croatia
  • Bachelor of Science degree in Software Engineering and Information Systems
    2011 - 2014
    Faculty of Electrical Engineering and Computing - Zagreb, Croatia

To view more profiles

Join Toptal
Share it with others