Skip links

We always strive to stay at the forefront of technology by investing heavily and constantly evaluating the newest emerging technologies and frameworks. But we never compromise on the reliable and time-proven development methodologies that ensure succesful, robust and scalable solutions.

Preparing for Iphone X

Preparing for Iphone X

iPhone X was announced on September 12, 2017, and with that came a lot of questions about how apps will look and behave with this new phone. We

Getting stack traces in Swift on Linux

Getting stack traces in Swift on Linux

Bugsnag is a convenient service for reporting and catching bugs and crashes that Nodes has been using for a long time. When we moved our backend stack over to
Nodes Wars – My experience as a Vapor intern at Nodes

Nodes Wars – My experience as a Vapor intern at Nodes

Hello! My name is Valen, I am studying in Spain and the last subject of my training consist in an internship in a company. They gave me the

Our tech stack

Android

Android developers at Nodes strive to build awesome apps using the Material Design Guidelines and design tools provided by Google.

Java 1.0 was released in 1995 and is still being used widely today – in part because of Android. Being an old language the toolchain is mature, and features like annotation processing, instant-run and an excellent Java SDK provide a nice toolset for development.

Android Studio is the natural choice for the platform with all the bells and whistles it brings. Android Studio plugins
android-butterknife-zelezny – Generate view bindings from the XML file directly
Markdown support – Preview the markdown layout directly in AS

Android has an excellent selection of available libraries for everything. These are some of the tools we use on a day-to-day basis. We always use the latest official design and appcompat libraries from Google as well.

  • OkHttp – An HTTP+HTTP/2 client for Android and Java applications.
  • Retrofit – Used together with OkHttp as a “frontend” for API interfaces
  • OkHttp Logging interceptor – Great logging for quick HTTP debugging
  • Picasso – Image loading library by the infamous Jake Wharton
  • Glide – Memory efficient and fast image loading – our default choice at the moment
  • Realm – Persistence layer with ORM like features
  • ButterKnife – View binding made easy
  • LeakCanary – Leak detection library for getting rid of those leaks with excellent logging and UI
  • 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
  • GoogleAnalytics – analytics and tracking library from Google
  • Mixpanel – advanced analytics and user tracking library with features like A/B testing and push notifications

iOS

Our iOS team at Nodes build user-centric iPhone and iPad applications, extensions for Apple Watch, Apple TV and MacOS applications. We develop apps with the most scalable and testable App Architecture whilst adhering to Apple’s Human Interface Guidelines.

Swift

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

Objective-C is a thing of the past for us, but occasionally we do maintain projects or update applications still written in Objective-C

Nodes utilises the full power of Apple’s own IDE; XCode. We are always testing the newest frameworks and OS features in Apple’s beta versions of XCode so we can beat potential bugs before Apple roles it out.

iOS has an excellent selection of available libraries for everything. These are some of the tools we use on a day-to-day basis. We always use stable branches and MIT licensed frameworks that doesn’t go against Apple’s Guidelines.

  • AlamoFire – is an HTTP networking library written in Swift
  • Kingfisher – is for downloading and caching images from the web
  • Serpent – easily serialized and deserialized from/to JSON
  • Cashier – makes it easy to work with persistent data
  • Blobfish – handle errors and present them to the user in a nice way
  • KeyboardHelper – handling UIKeyboard appearing and disappearing in your view controllers
  • DZNEmptyDataSet – handle empty states in all scrollview based UI elements
  • 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
  • GoogleAnalytics – analytics and tracking library from Google
  • Mixpanel – advanced analytics and user tracking library with features like A/B testing and push notifications

APIs, admin panels and middleware

Our server-side developers at Nodes are experts in creating stand-alone backend applications as well as deep integrations on top of our clients’ infrastructures. We achieve this by using the highest security standards, most scaleable technologies and best practices.

Vapor –  Server Side Swift

Vapor is the most used web framework for Swift. It provides a beautifully expressive and easy to use foundation for your next website or API.

Nodes have a full system setup for supporting and maintaining Vapor Server Applications, and have already produced Vapor Server Applications for large corporations in industries such as pharma, aviation, transportation and financial.

Laravel – PHP

Laravel is a web framework that are build in PHP. Nodes have been developing application with Laravel since late 2013 and have since then been our top choice of runtime compiled server development framework.

Nodes have developed large scale server applications that have supported 1.000.000+ users from different industries, countries and with an array of different services added to it.

Vapor

Nodes utilises the full power of Apple’s own IDE; XCode. We are always testing the newest Swift versions and features in Apple’s beta versions of XCode so we can beat potential bugs before Apple roles it out.

Laravel

Nodes utilises the power of PhpStorm for developing Laravel projects. PhpStorm performs many routine tasks right from the IDE and enables Nodes Server Side developers to faster and more typesafe develop Laravel projects.

General about Stack

All of Nodes server stack components are based on free-ware without any licensing. Nodes have picked some of the most commonly used stack components for the reasons of

  • Support & Community – Easy for Nodes to find talent to work within the scope of the technology and large knowledge base for help and support for maintenance
  • Flexibility – Server components useable with most commonly used web technologies so Nodes doesn’t lock themselves on one type of web / server development
  • Stability – Tried and tested on millions of projects and implemented by millions of developers. Active teams working on updates

Stack / Tools

  • Linux – is the most common OS for web servers in the world. Nodes have been using it since 2008
  • Docker –  is a new generation of virtualisation (from 2013) that makes building complex software stacks much easier and more isolated than previously
  • Nginx / Apache is the two most common web servers for Linux
  • MySQL – is an open source Relational Database started in 1995 and today owned by Oracle. We also have experience with forked versions like MariaDB or Aurora
  • Redis is an open source in-memory data structure store. We mainly use it for caching and as session driver
  • S3 file storage – is used to upload and manage data
  • Cloudfront CDN with Image resizing – is Amazon’s CDN which job is to cache public files on local high load servers
  • Beanstalkdis needed to offload the work to a queue system. Beanstalkd is our technology for this
  • ElasticSearchNoSQL Database, often used for very advanced search queries.
  • MongoDBNoSQL database, often used for aggregating big data sets

Cross-platform development

There are many promises and advantages as well as pitfalls and challenges when it comes to cross-platform development frameworks. We utilise these frameworks when appropriate for specific projects and regularly test and benchmark the different frameworks against each other.

Build native apps for multiple platforms on a shared C# codebase. Use the same IDE, language, and APIs everywhere.

Xamarin apps have access to the full spectrum of functionality exposed by the underlying platform and device, including platform-specific capabilities like iBeacons and Android Fragments.

Xamarin is owned and maintained by Microsoft.

Building native mobile apps using JavaScript and React.

React Native lets you build mobile apps using only JavaScript. It uses the same design as React, letting you compose a rich mobile UI from declarative components.

React Native is open source framework owned and maintained by Facebook.

Native and web optimized, Ionic emulates native app UI guidelines and uses native SDKs, bringing the UI standards and device features of native apps together with the full power and flexibility of the open web. Ionic uses Cordova or Phonegap to deploy natively, or runs in the browser as a Progressive Web App.

Build progressive web and native mobile apps for every major app store, with one codebase in JS, TypeScript & HTML.

Ionic Framework is a 100% free and open source project, licensed under MIT.

We contribute with open source repositories

Our development teams strives to deliver the best and most innovative products on the market. In order for us to do so, we’ve created many open source frameworks to make the development process faster, easier and safer. All our repositories are maintained on Github.

All of our open sourced iOS repositories can be found on the Nodes-iOS GitHub organization. Some examples:

  • 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

All of our open sourced Android repositories can be found on the Nodes-Android GitHub organization. Some examples:

  • nstack – Inhouse mobile platform for in-app data and translations
  • gutenberg – Font library for applying custom fonts easily
  • nstack-gradle – Compile time gradle plugin generation of Translation classes
  • nutils – Utility framework with minor helpers
  • nfusion – REST HTTP API Endpoint Abstraction Library with pluggable auth

All of our open sourced Frontend repositories can be found on the Nodes-Frontend GitHub organization. Some examples:

  • generator-nodes – Our opinionated Yeoman CLI, and the boilerplate for all of our Angular projects.
  • nodes-component-starter – Not every project ends up being an actual product, we often build isolated UI components and small libraries to use in our projects. This is our starting point for Open Source projects and comes with Angular, Typescript, semantic-release and slew of other awesome features.
  • nImage – We use images, a lot. This module enhances images with (lazy-)loading, fallbacks, aspect-ratios and cropping/resizing.
  • nExceptionHandler – This module helps us send errors to external sources so we can keep track of the state of our Angular apps.
  • nMessages – Just like images, we often need to provide feedback messages for our end users when asyncronous tasks takes place. This UI component lets us easliy create toasts or any other kind of messages by providing a manageable LIFO que and the UI to go along.
  • The setup behind this blog – Built with Hexo, this repository should be interesting for anyone looking for an advanced Hexo setup with lots of great front-end features such as ES6 support, Offline Sync through service-workers, and a lot of preconfigured Hexo speciffic settings.

Vapor

All of our open sourced Swift/Vapor repositories can be found on the Nodes-Vapor GitHub organization. Some examples:

  • Paginator – Query pagination for Vapor and Fluent
  • Admin Panel – Build easy customizable admin features for your app
  • Storage – A package to ease the use of multiple storage and CDN services

PHP

All of our open sourced PHP repositories can be found on the Nodes-PHP GitHub organization.

  • Assets – An easy integration for handling files with Laravel
  • Push – A push manager to send push messages to mobile devices from your project
  • API – A “mobile friendly” API package made on-top of the popular Dingo API package