iOS developers at Nodes build user-centric applications and extensions which are distributed on the App Store or through enterprise distribution platforms.
We deliver a range of applications for different platforms and devices like the iPhone, iPad, Apple Watch and Apple TV.
- Writing business and view logic with testability in mind
- Setting up and maintaining unit and UI tests
- Integrating with in-house or external APIs and services
- Maintaining and setting up Apple services and applications
- Consulting with our UX team and clients to provide best possible product
We’ve started with Swift as soon as version 1.0 was released and since then we have migrated all our projects through Swift 2 up to Swift 3 and we make sure all our frameworks and dependencies support all versions of the language.
Objective-C is a thing of the past for us, but occasionally we do maintain projects or update applications still written in Objective-C.
Clean architecture (known as VIPER when applied to iOS development) is our new standard on the iOS team. We also still maintain many apps that use MVC. Our clean architecture implementation is adapted to better fit our needs, with the goals being consistency, quality, and testability.
Xcode is the IDE that is widely used amongst iOS developers and we also use it at Nodes.
- Carthage - our weapon of choice for dependency management, simple yet powerful
- Model Boiler - a macOS application used to generate boilerplate code for model objects using Serializable
- Charles Proxy - effectively serves as a MitM proxy which captures all network traffic and helps us debug network issues
- MacDown - for writing READMEs and blog posts like this one
- Zeplin - makes it easy to transfer designs to code by providing exact measurements, colors and assets
- Postman - all our APIs are documented through Postman allowing us to easily work together
These are the 3rd party libraries we usually use in all our projects. If there are other services required for a project, for example a Facebook Login, we also use their related SDKs.
- Alamofire - an elegant HTTP networking library
- Kingfisher - a lightweight library for downloading and caching images from the web
- UrbanAirshipSDK - integrates with Urban Airship to register for and handle push notifications
- HockeySDK - integrates with HockeyApp to collect crash reports and show application updates during testing
- SnapKit - a DSL to make Auto Layout easy
- netfox - one line setup network debugging library useful during QA process
- GoogleAnalytics - analytics and tracking library from Google
- Mixpanel - advanced analytics and user tracking library with features like A/B testing and push notifications
The iOS team at Nodes strives to deliver the best and nicest product and to allow us to do so, we’ve created many open source frameworks to make the development process faster, easier and safer. All of our repositories are maintained on Github.
- Serpent - fastest and most feature complete serialization library
- Blobfish - unified and abstracted visual handling of errors
- KeyboardHelper - easy to use interface for handling keyboard events
- NStackSDK - integration with NStack for translations, version updates and more
- Cashier - a simple, but effective 2-layer caching library suitable for most projects
- Noted - a more Swift-ier implementation of the observer pattern
- Codemine - a collection of tweaks, utilities and nice-haves we use regularly
- and many more…
We have setup a continuous integration server using Bitrise.io, so that our builds, tests and deployments are easy, fast and consistent. Our Bitrise workflow uses Fastlane for building, signing, and uploading builds to both Hockey and Testflight. We also have some custom Ruby scripts for validation and reporting.