Have a look at some of the projects we did in the past.

Vehiculum

A car expense and event management platform enthusiasts and general automotive public. The records expenses and generates stats out of them. The app allows to use rich tagging features, it is able to create reminders for the future activities. It gives the option to represent data visually. Among other things it supports wide range of activities, fuel types and fiat currencies.

Tech. stack: object persistence - ORM (XML), data synchronization, 3rd party libraries

Macaque

An Android application that displays the current price of the most popular crypto-currencies in a visually pleasable way.

Tech. stack: REST (JSON), widget, android services and broadcasts.

Local ISP

Created, configured and administered a whole Internet Service Provider business. Mikrotik devices and VyOS linux nodes were are used as building blocks. Complemented with custom automation and monitoring scripts (Nagios/Zabbix modules, proxy monitors, log parsers, backup scripts).

Tech. stack: TCP/IPv4 Family, QoS, Failover & High-Availability, Perl, Bash, Python

Technologies

Our solutions are built using the following stack of technologies, frameworks and development methodologies:

Technology:

  • Java Core (ver. 8)
  • Spring, JUnit
  • Android SDK (Java, Kotlin, NDK)
  • Persistency: Hibernate, JPA, XML, JSON, SQLite
  • Front-end: HTML5, CSS3, Angular 2, jQuery
  • Scripting: Bash, Python, Perl

Architecture:

  • SOA, Microservices
  • REST Webservices (JSON, XML)
  • Queues
  • Client/Server
  • Stateful and stateless, synchronous, asynchronous and hybrid client calls
  • Serverless architectures

Cloud:

  • Private: VMware
  • Public: AWS (EC2, Lambda, S3)

Datastore:

  • PostgreSQL, MariaDB
  • NoSQL (Firebase, Couchbase)

Development Approach:

  • Test-Driven Development (TDD): We impose TDD approach to ensure that the function of the units on the small scale (classes and methods) is correctly implemented.
  • Behavior-Driven Development (BDD): By defining the expected behavior paths for the product we ensure that we have a reasonable and meaningful test coverage.
  • Acceptance Test-Driven Development (ATDD): Driving the development by ATDD ensures that the members of the project team are aligned on the prioritized to-do feature list also from the customer (product ownership) perspective before the coding begins.
    Internally we aim to have test code-coverage in the 60+% zone.

Development Strategy:

In every project we do we rely on the following tools from the agile stack which, from our experience, fit very well together. The agile stack allows us to: iterate fast, minimize waste, limit the work-in-progress, reduce multitasking and context switching, expose problems quickly while they are small and it reduces the probability of expensive errors appearing late in the development process.

  • Scrum: Nowadays a standard development methodology that is able to handle the unpredictable challenges (which occur in almost every project) and requirements volatility with the lowest impact on the delivery timeline, predictability and product quality.
  • Lean: (Not just) A methodology that helps to identify and define the activities during the development cycle to maximize the value for the customer and to increase internal effectiveness of the teams and their members.
  • Kanban: A set of visual management boards to support decision-making and prioritization.