Viessmann | August 2020 - present
Projects
- An app for managing heating system. (commercial)
Business description
The main purpose of the application is to allow users to easily and
remotely manage their heating systems.
Architecture
MVP + Coordinators (after refactor) in the older part of the app, the
newest part uses MVVM + Coordinators and configurators for Rx
bindings.
Technologies
App - Swift 5.x, iOS 12+, Unit Tests (Quick, Nimble, RxBlocking),
Modularized (many frameworks created to separate features)
Integrations - Google Maps, Firebase, PhraseApp Frameworks - SnapKit,
SwiftLint, CocoaPods-keys, RxSwift (and more of Rx family), Swinject,
Alamofire, DrawerView and more - all managed by CocoaPods Tools - Git,
Jira, AppStore, Postman (mainly documentation), Zeplin, Bundler,
xUnique.
Challenges
A code with a long history and a big technical debt. It was
characterized by a non-uniform navigation system between the screens.
It was a big challenge to introduce Coordinators, especially
considering that the application consists of over two hundred screens
and uses storyboards in conjunction with the Swinject-storyboard
framework. The second big challenge was to bring back native
navigation. The latest challenge was to introduce a completely new
architecture for the newest part of the app (new tab). The new
architecture had to be scalable enough to support complex conversions
of various types of units (e.g. power, energy) and presenting them
using an own framework for charts.
If I were to write some parts of the project again what would I
change?
I Would put more emphasis on writing different types of tests.
Droids on Roids | April 2017 - July 2020
Projects
-
m-commerce for a big Polish company (commercial) | February 2018 -
June 2020
Business description
The main goal is selling products in an easy way via mobile, but the
app also contains support for a loyalty program. The app is currently
released on the AppStore, but new features are still being planned and
developed. The app is targeted for over 1 million users.
Architecture
VIPER-based architecture with coordinators used for navigation instead
of routers.
Technologies
App - Swift 5.x, iOS 11.2+, Unit Tests (XCTests), Modularized (many
frameworks created to separate features), Native Networking Layer
Integrations - Google Maps, Synerise, Firebase, PayU, AppsFlyer,
Localise, Facebook Frameworks - SnapKit, SwiftLint, CocoaPods-keys,
Sourcery, Swifter - all managed by CocoaPods Tools - Git, Bistrise,
Jira, AppCenter, AppStore, Postman (mainly documentation), Zeplin,
Bundler.
Challenges
A fully customizable home screen obtained from a backend server
containing many components loaded from various sources depending on
which the UI is displayed. Support for many markets via remotely
stored configurations for each of them.
If I were to write some parts of the project again what would I
change?
I would use coordinators per module (like in regular VIPER) instead of
per each major part of the flow. I would create more decoupled
networking layers with better dependency injection because as it is,
it is hard to remove a singleton character.
Business description
The app was a requirement of a franchise contract. It was aimed to
support only one market (Polish). Mainly focused on selling products
in an easy way.
Architecture
MVVM-based architecture with coordinators used for navigation in the
app.
Technologies
App - Swift 4.x, iOS 11+, Unit Tests (XCTests) Integrations - Google,
Firebase, Facebook, PayU, Frameworks - SwiftLint, Moya, Nuke - all
managed by CocoaPods. Tools - Git, Bistrise, Jira, AppCenter,
AppStore, Zeplin.
Challenges
Just regular m-commerce
If I were to write some parts of the project again what would I
change?
I would allow for better dependency injection, improve MVVM
architecture and improve app monitoring especially for backend
requests (crashlytics).
- letSwift app (open source)
Business description
An app created during practice to support Let Swift community.
Architecture
MVVM-based architecture with Rx-like observables system and
coordinators used for navigation in the app.
Technologies
App - Swift 3.x, iOS 10.3+, Unit Tests (XCTests, only for observables)
Integrations - Facebook, HockeyApp Frameworks - SwiftLint, Alamofire,
Fabric, and more - all managed by CocoaPods Tools - Git, Bistrise,
Jira, HockeyApp, Zeplin
Challenges
The biggest challenge was to create Rx-like table view delegate and
data source.
If I were to write some parts of the project again what would I
change?
I would make the app decoupled and much more open for dependency
injection and tests.
Human Device | March 2016 - March 2017
Projects
- An app for ordering food (commercial)
Business description
An app for ordering food for single and grouped users
Architecture
MVC
Technologies
App - Swift 2.4, iOS 9+ Integrations - Google Maps, GCM Frameworks -
Alamofire Tools - Git, Gitlab, Postman
Challenges
Tracking bugs in massive view controllers.
I would consider another architecture based on business requirements.
I would consider another architecture based on business requirements.
- An app for truck reporting system (commercial)
Business description
An app for
Architecture
MVC
Technologies
App - Swift 2.4, iOS 9+ Integrations - Google Maps, GCM Frameworks -
Alamofire Tools - Git, Gitlab, Postman
Challenges
Communication with barcode scanners.
If I were to write some parts of the project again what would I
change?
I would consider another architecture based on business requirements.
-
More minor projects including:
- a Unity-based game app for children
- an app for couriers
- an OS X native app as a support for encrypting
- files Java App
- an app basing on bluetooth low energy for n promotions