Clickavia

Comfortable service to find and buy airline tickets,
running on modern platform
Code review Refactoring (ruby) Backend separation Server-side API iOS development

Behind the shiny interface

In 2013 we were asked by Clickavia CTO Pavel Bubentsov to review project architecture and code. The company was running quite well while there were some technical problems about its futher development and extension. We checked metrics and took a look at architecture: the codebase needed some optimization. We reconsidered the system with Domain–driven design approach and GRASP/SOLID principles. Then made refactoring, separated the project into two applications so the code became much cleaner and easy to understand. This essentially accelerated and simplified overall project development. Codeclimate GPA was improved from 1.8 to 3.0.

Tap is the new click

Travel industry is growing really fast and many companies already offer ordering tickets via smartphone or tablet. So it was quite logical decision for Clickavia to create iPhone and iPad apps. As we use lean approach we created clickable lo-fi prototypes that helped us to define project objectives on the first stage.
While the wireframes were being tested and refined we also developed a working prototype which allowed us to test network latency and other real-life circumstances. So when we finished prototyping stage we had both wireframes and working examples of how our apps will communicate with server-side API. This stage also allowed us to break the whole app into different modules, write specs for them and improve API documentation.
At the same time we created high-fidelity mockups based on wireframes. User experience design and server-side API were synced in their terms and both shaped each other. We came to this when we were refining wireframes, and it helped us to make decisions faster in further development and design, create better design specifications and API documentation.
This project is an example of how technologies help a company to improve customer experience and succeed in business goals. The prettiest point in software projects is that you can test and refine your processes before applying them in real life. We take that advantage and organize our work to deliver, get feedback and improve the product as soon as possible.