Questions

Frequently asked questions

Where can I find samples of your code?

You can familiarize with examples of our code in our GitHub.

https://github.com/gbksoft

Where can I find CV of developer that will work on my project?

We form dedicated team for each project individually. The set of specialists assigned for your project (by the level of experience and proficiency in technologies) is based on the following criteria:

  • Experience in development of similar projects - We choose specialists that have worked on similar projects. This approach reduces time and unpredictable risks in connection with development, which leads to the decrease of project cost.
  • Competency in particular technologies - We’ve got a pool of in-house experts that have strong proficiency in different sets of technologies, which significantly increases the quality of code and project as a whole.
  • Budget of project - Taking into account the budget, we optimize development costs and involve experts of different levels (junior, middle, senior). However, this approach does not affect the quality of the code because during the project all junior experts ALWAYS work under the supervision of senior experts and their code is subject to Code review.
  • Deadlines - This factor usually defines the number of programmers that will work on your project at the same time.
  • Complexity of project - It is determined upon preparation of project documentation, estimation and description of system software and hardware. Complex projects are our strong suit! We always bring together skilled and experienced team of professionals for such projects. We are responsible for performance of complex corporate projects and usually, upon their delivery, we provide maintenance as an outstaffed team.
  • Innovative programming languages - Affects time, budget and number of team members required for project development.

A typical development team consists of:

Project Manager

  • Provides updates & reports
  • Manages your timeline & budget
  • Brings ideas, consults and guides you on any questions you have
  • Ensures good communication on the project
  • Acts as your representative in the team...your mate

Architect

  • Builds a scalable database
  • Builds an optimizable & agile structure
  • Works through the details and selects innovative technologies
  • Watches over the process to ensure code quality
  • Manages changes

Designer

  • Designs intuitive user interface
  • Works on high-level wireframes and roadmaps
  • Follows trends
  • Creates a unique, sole design (no templates)
  • Follows user experience rules

HTML/CSS Coder

  • Pixel perfect coding
  • Cross browser compatibility
  • Responsive code
  • SEO friendly coding
  • Highly organized structure

Backend and Frontend Developer

  • Commented & well-documented code
  • Follows framework structure
  • NO spaghetti code
  • Highly secure code
  • Agile & stable

Quality Control Expert

  • Attentive to details
  • Works with device bank
  • Provides consultations
  • Handles security testing
  • Inspects accordance to project’s scope

SYS Engineer

  • Manages setup of environment
  • Provides cloud solutions
  • Executes load testing
  • Sets up a scalable server infrastructure
  • Handles devops
  • Advises on hosting and hosting services

You can review CV examples of team members here

For more details please get in touch with our client management team (hello@gbksoft.io). We’ll select the proper set of specialists in accordance with your requirements and provide you with resumes of team members that will work on your project.

Where can I find GBKSOFT portfolio other than on the website?

  • No duplicates. We select only those projects that represent full diversity of features, technologies and business niches we’re experts in.
  • A big number of our projects was developed under NDA, therefore we have no rights to publish them.
  • Part of our projects is closed business platforms for internal use of customer’s company (we can show you demos upon request, though).
  • We don’t include projects that haven’t been officially released by our customers on Apple Store/Google Play Market.

Our company has completed many successful projects for almost every business niche. In addition to our portfolio (available for review), we can always find a project similar to your business niche upon request and offer you a turnkey solution that will significantly reduce budget and development time of your project.

What is your expertise? Which type of apps you are experts in?

We are experts in complicated, scalable, and challenging projects!

GBKSOFT has already developed over 500 web and 200 mobile projects in different business areas. It is difficult to list all of them due to their huge number. Here’s the list of most popular business niches:

BUSINESS MANAGEMENT TOOLS
Cut expenses and automate workflow inside your company by developing custom management system.

  • Help employees work faster
  • Increase company efficiency
  • Streamline tasking processes
  • Eliminate errors
  • Integrate transparent KPI and tracking tools
  • Get flexible statistics and performance metrics to analyze company efficiency

B2B or B2C platforms with automation modules tailored for your business needs and bearing in mind sector you are working in.

  • Customer-to-translator management systems for translation agencies
  • Ads management and configuration systems for marketing and ad agencies
  • Employer (job post) to Employee (CV) matchmaking platforms
  • Management systems for logistics and retail suppliers
  • Tracking systems to evaluate the client’s satisfaction index
  • Dating CV databases and management platforms

SOCIAL MEDIA PLATFORMS
Create a community platform that will attract new customers to your business. Gather like-minded people and tie them into a strong social network that becomes popular and gets bigger every month.

  • Marine and yacht community websites
  • Drone location tracking social platforms
  • Music network with charts and interests categorisation
  • Audio & Video hubs with job boards for artists

SOFTWARE AS A SERVICE (SaaS)
Bring your business to the web by developing SaaS software. This approach delivers your services via the internet and provides your users with a straightforward interface so that could interact with your business online.

  • Online landing page generation
  • CV, email, and builders
  • Online builder for order customization
  • Workflow and Business strategy builders

EDUCATIONAL PORTALS
Create a custom educational website that brings your courses online with the help of broadcasting, video tutorials, quizzes, tests, consultations and professional suggestions.

  • Instructor-to-student consultation portals
  • Categorized video databases
  • Educational games and quizzes
  • Online tutorials and tests with broadcasting possibilities

SPORT & FITNESS PLATFORMS
Develop fitness platforms for coaching, live and recorded broadcasting, event scheduling, feedback aggregation, and sportswear shearing.

  • Performance trackers
  • Calories calculators and custom diet builders
  • Platforms for online booking of recorded fitness sessions
  • Booking systems for online training that integrates connections to health kits on Android/Apple wear
  • Location-based booking system for coaches and instructors
  • Sports challenges calendar

JOB BOARDS & PORTALS
Create a career center with configurable matchmaking algorithms, smart search system, and easy job posting builders with scraping/parsing tools to gain the required content weight.

  • Job boards and career centers
  • Online markets and payment systems
  • Back-end database structuring
  • Job matchmaking and recommendation algorithm

GAMBLING & BETTING
Build a strong statistical algorithm with history analysis, heavy data pulling from external services and third-party APIs to back your gambling/betting application and provide users with recommendations and tips on game strategies.

  • Online games with real-time statistics of football/baseball/basketball games
  • Analytical portals for betting strategies and paid consultations

Although we will be happy to explore new and challenging fields of activities and develop innovative projects with a unique combination of involved technologies!

Do you maintain in-house team of developers or they work remotely as subcontractors?

We are working only with in-house developers and designers without subcontracting or outsourcing work to freelancers. We have two offices in Kyiv and Zaporizhzhya. They work in office on full-time positions.

This approach lets us to:

  • Brainstorm and supply project with new ideas during face-to-face meeting
  • Coordinate our workflow and efficiently deal with problems.
  • Get a quick advice if necessary from our co-workers
  • Share best practices and solutions to accelerate development and cut expenses.
  • Make all reports and planning quickly
  • Merge the code with no troubles

These are the main advantages and reasons for us to not subcontract development process and keep our team together.

How fast can you start the project?

In a blink of an eye)

There are several conditions that must be fulfilled before proceeding to the development of the project:

  • Agreed budget.
  • Signed contract.
  • First Prepayment.
  • Availability of developers with necessary experience and skills.

From our experience, it takes a week or so to settle these details with a client.

How do you organize development process and what are the stages of project development? (development stages, security issues, communication process, etc.)

We always adhere to strict rules of development process organisation. Clear description of the project, detailed specifications, good planning from start to finish and transparent evaluation are principles that distinguish us from our competitors and guarantee development of high-quality product in compliance with the budget.

Development stages:

Planing

  • Analysis of competitors
  • Defining business objectives
  • Identification of app’s functions
  • Risks assessment

Prototyping

  • Identification of required elements
  • User Experience research
  • Preparation of Use Cases according to previous research

Final Quote

  • Discussion of all features and requirements
  • Approval of a final quote for the project
  • Setting the final budget for the projects
  • Building of project plan with milestones and sprints

Design

  • 5 suggestions of logo
  • 3 suggestions of screen design
  • Compliance with interface practices used in the niche

Development

  • Development according to the delivery plan
  • Compliance with client acceptance criteria
  • Hours tracking with straightforward metrics

Testing

  • Test app for your control check
  • Automated API tests
  • Quality Assurance

Delivery / Release

Security:

During the development process, we provide maximum security for both source code and user’s data.

Our projects are protected from:

  • Cross-Site Scripting
  • Cross-Site Request Forgery
  • SQL injection
  • ClickJacking
  • Content Spoofing
  • Format String Attack
  • Directory Indexing
  • Path Traversal

Customer Protection:

  • Copyright for each part of the code are transferred to the customer as soon as it’s committed to your repository.
  • We commit to your repository every week. This schedule allows you to keep track of development progress and secures your rights as a customer.

Communication and Project management:

  • Client management (communication, updates, brainstorming, communication with the team);
  • Budget management (invoices, expense tracking, notification about changes that will affect final budget);
  • Management of timeframes and project’s schedule (scheduling of each sprint and milestone delivery);
  • Team management (backlogs, communication with the architect, time tracking, coordination of project’s team members);
  • Risk management;
  • You’ll have access to all РМ-tools where your project is tracked (Jira, Trello, ActiveCollab, etc).

What software development methodologies do you use? Are you familiar with Agile methodology?

Generally, we are working in accordance with Agile methodology, but our PMs adapt management strategy to each project individually.

Correlation between methodology and project’s objectives:

  • Kanban method is usually applied for maintenance and optimization of already delivered projects.
  • Scrum. It is an Agile framework that is best suited for development of MVPs or lean startup projects (we take 2-weeks development sprints for the development).
  • Waterfall. We use this development methodology only if we’re dealing with a long-term project or the one with detailed specifications and strict budget.

In addition, Waterfall is useful if you have a limited budget for the project and can not allow additional changes to the project’s scope that can increase its cost.

How does the communication take place during the development? How often do you provide updates and reports?

Our project manager will be in touch with you all the time in order to provide all necessary information in the course of development and ensure that the end result meets your expectations. The frequency and the format of reporting will be agreed with the project manager during negotiations stage.

It’s up to you what communication channel to choose:

  • Skype.
  • Email.
  • Phone.
  • Any other messenger you want.

Usually, we assign time and day for regular meetings. All communication between developers are handled through task manager, where you can always see the progress of your project as a whole and each task separately.

Our PM will send you weekly reports with information on what’s done and next week plan. In addition, we make another skype call upon delivery of each milestone, during which we make presentation of results we’ve achieved.

Why do I need a project manager? What are their responsibilities?

Project Managers allow you to effectively communicate with the development team and they ensure that the final product meets your expectations.

PM is responsible for organization of the development process. They make sure that specialists understand your requirements and monitor the workflow, so that the project is ready on time and with the full set of features you have asked for.

PM’s responsibilities:

  1. Detailed planning of the project with all stages listed.
  2. Tracking and maintenance of documentation for the project.
  3. Processing of customer's requirements.
  4. Deadlines and budget coordination.
  5. Analysis and Risk Management.
  6. Tracking of changes in the project’s scope.
  7. Resource analysis and management.
  8. Task management.
  9. Acceptance testing.
  10. Reporting.
  11. Problem-solving.

You are welcome to read this article to better understand why one needs a Project Manager while outsourcing software development - Click Here

PM’s vital functions:

  1. Team management and coordination with interested parties at every stage of the project development.
  2. Planning, implementation and control of the development process according to project specifications.
  3. Constant communication with the client and team.
  4. Acceptance testing and adjustment of the project to client expectation.
  5. Optimization of project development in accordance with client input.
  6. Quality assurance on each step of the development process.
  7. Problem solving and adherence to customer’s objectives.
  8. Implementation of development methodology that fits project requirements.

In addition, here’s a great article on Emotional Management - Click Here

How do you perform Quality Assurance? What tools do you use to test mobile and web apps?

Testing is held on each stage of development process. Starting from prototyping stage and finishing with post-release support of the project. Our testers are involved in the workflow of each project team. They are keeping an eye on the development process, monitor the product quality and compliance with customer requirements.

We perform testing in each browser from Big5 and on all popular mobile devices. We have a large “fleet” of devices including Apple Watch and various Android-powered wearables (see q. 23).

Our QA team provides detailed test documentation for the project’s layouts and user behavior rules (use cases). All bugs are carefully tracked in Redmine.

We perform four levels of software testing: Unit, System, Integration, and Acceptance testing.

The testing process is carried out on each stage of the development process:

  • After task completion.
  • Upon delivery of milestone.
  • Integration Testing after combining individually tested software components with each other.
  • Upon project delivery.

We also perform automated testing which involves dedicated scripts that execute repetitive sequences of actions:

  • API testing.
  • General testing.

Automated testing is an advanced method which is required when testing complex projects. This type of testing can increase budget.

Here’s our blog post with detailed description of the testing process - Click Here

How the delivery process is held?

Upon completion of the development you will be given a week for product testing as a guarantee period. At the end of the week, our team will fix all the bugs that you’ve found within the project cost.

We handle the migration process to your server. It is included in the budget. Our admin will set up optimal environment for the product and advise you on each step of migration.

Mobile App delivery steps:

  1. Registration of Developer account in the App Store.
    Click Here - your responsibility

    IMPORTANT: There is a registration fee and it may take a month to acquire approvement from Apple. This step should be performed by the actual owner of the app. Here’s a list of documents that are required in order to register Developer account - Click Here

  2. Setting up the App page in Apple and Google stores (our responsibility).
  3. Filling in the App page: name, category, description, etc. (your responsibility). If you do not have an information for this stage, we can advise you the company that will provide the content.
  4. Code uploading (our responsibility).

Don’t worry! We’ll advise and guide you on each step of registration process.

Maintenance

All mobile apps require maintenance. Reasons are:

  • Updates of APIs, that are integrated into your mobile app.
  • Updates of 3d party systems.
  • Audience growth and as a consequence need for scaling.
  • New feedback and requirements from end-users.
  • Overall development of technologies and raise of new features.
  • App’s code becomes outdated over time.

Because of these reasons, it is advised to hire a team to maintain your app. There are two possible solutions:

  • You hire another team (we can provide our recommendations) and pay for a full-time work when the need for update/maintenance arise.
  • We perform the update/maintenance process each time the overall scope of work reaches at least 40 hours. We take this scope as an additional milestone.

Do you provide maintenance and support after project delivery?

We provide a week of guarantee period. During this period, you can test the product and we’ll fix all identified bugs for free. We also thoroughly test the functionality of the product after each milestone and before final delivery. All additional works and upgrades are agreed separately.

What versions of iOS and iPhones do you support?

Our apps support the last two versions of iOS.

What versions of Android do you support?

Our apps support the last two versions of Android.

What devices do you use to test mobile apps?

Usually, we test applications on devices with latest OS version. In addition, our Project Manager can agree with you about additional devices for Quality Assurance.

Here’s the list of devices that we use for testing:

Apple

Wearables

  • iPod 5 (ios v9.1)
  • Apple watch

Tablets

  • iPhone 5 (ios v9.3)
  • iPhone 5 (ios v9.2.1)
  • iPhone 6 (ios v9.2.1)
  • iPad mini 2 wifi only (ios v9.1)
  • iPad Air 2 with 3G (ios v9.2.1)

Phones

  • iPhone 5
  • iPhone 6s
  • iPhone 6+

Android

Wearables

  • LG URBAN (OS Android Wear™)
  • Samsung Gear S2 (OS Tizen)

Tablets

  • Bravis (v 4.2.2)

Phones

  • ACER Liquid Z120, 3.5” (v4.1.1)
  • Nexus 4, 4.7” (v5.1)
  • Jiaju G4, 4.7” (v4.2)
  • Moto G 3gen, 5” (v6.0)
  • Sony t3, 5.3” (v5.1.1)
  • LG G3, 5.5” (v5)
  • Nexus6, 6” (v6.0)
  • HTC Flyer, 7” (v2.3.3)

Do you develop cross-platform mobile solutions (not native)?

All cross-platform solutions result in significant loss of application performance. This is due to the fact that cross-platform solutions use web technologies that were initially designed to operate in web-environment and not as technologies for mobile apps.

Development of cross-platform solutions also results in disruption of OS guidelines developers and hence lowers the UI\UX quality. This is also due to the fact that users of each OS expect to see the elements of design that are peculiar for the specific OS. Cross-platform solutions can’t boast the same level of customization possibilities and only try to emulate native platforms.

A huge drawback of cross-platform solution is in its core limitation of OS compatibility. Cross-platform apps complicate the development at the point when they need to use the OS functions like camera, data storage, geolocation, etc. As a consequence, it requires additional time to code individual plug-ins for each OS.

Therefore, all types of mobile apps are better to develop using the same technologies mobile OS works with. This is applicable to SDK, frameworks and libraries that eventually should be compatible with the operating system.

Naturally, such approach enhances the total development time by about ⅔ but it also provides invaluable benefits:

Benefits of native solutions:

  • Increase the speed of app.
  • Improve the rendering speed and UI reaction.
  • Follow the OS guidelines and keep application unified to generally accepted style of OS.
  • Apps become more user-friendly since users expect applications to perform in the way and with the reaction to his gestures that they got used to.
  • Reduce time to render visual elements.
  • Battery saving.

I want my app running on tablets, will it raise the price of development?

From technological perspective, the development of applications for tablets is not much different from mobile. The main difference and difficulty occurs during the design stage (screen size, screen orientation, layout).

The budget for software development and app design already includes tablet compatibility. Nevertheless, please specify the necessity of running your product on tablets, as there are nuances that we should take into account during design.

There are two variants of mobile apps adaptation for tablets:

  • x2 buttons - It does not require additional time and budget and essentially scales up your mobile application when it runs on the tablet.
  • A separate app with its own interface - This solution requires additional time and effort, so please indicate the need for such option in advance.

Will you submit my app to Apple Store and Play Market?

Yes, we’ll perform all necessary work for you.

Do you guarantee that my app will be approved by Apple?

We cannot provide you with 100% guarantee of Apple Store approvement, but we will do everything possible to make a successful release. We have extensive experience in approval of the apps that we have created.

Apple provides a list of the guidelines that make no exceptions for anyone. Here is the link. We are familiar with them and will discuss all risky moments that may affect the app approvement during the development of specifications. The decision to take those risks or to fix rough edges is always up to you.

Unfortunately, there is a risk that Apple Store moderators can ban the app even if you have complied with all their rules. Some of their reasons are quite absurd. For example: there are already many similar applications, or you are a direct competitor to Apple's native app, etc.

Who will update my app in Apple Store and Play Market?

We’ll update your app upon delivery of new features. With the only exception: you provide us with all necessary content for the app.

How to update an App:

  • Upload new file to the App Store.
  • Fill in "What’s new" section.
  • Wait for confirmation of the update.
  • Wait for moderation (this step is relevant only for iOS apps).
  • Your App is updated!

What browsers do you support?

We currently provide support for the following web browsers:

  • Google Chrome (49-53).
  • Mozilla FireFox (48).
  • Apple Safari (v. 9-10).
  • Internet Explorer (v. 11+).

We always deliver responsive, cross-browser layout that supports the last two versions of Top5 browsers.

What technologies do you use for software development?

We have knowledge in development of software apps in various business domains including:

  • BUSINESS MANAGEMENT TOOLS.
  • SOCIAL MEDIA PLATFORMS.
  • B2B or B2C platforms with automation modules.
  • Software as a Service (SaaS) systems.
  • EDUCATIONAL PORTALS.
  • SPORT & FITNESS PLATFORMS.
  • JOB BOARDS.
  • GAMBLING & BETTING apps.

Here’s the list of frameworks, libraries, and tools that will let you successfully enter new markets and provide the additional value to your clients.

Mobile app development

Android + iOS

  • FMDB - Objective-C wrapper around SQLite DB
  • MaterialKit - Highly customizable Kit of components for iOS apps written in Swift. MaterialKit allows creating beautiful Material design UI.
  • SVProgressHUD - library is used to display progress of ongoing task in iOS
  • QR-Code scanner - This library allows integration of R-scan feature.
  • ZXingObjC - ZXingObjC library allows you to use your device's camera in order to read QR-code, or to recognize the QR-code from the camera roll.
  • Realm - It is a free cross-platform database created specifically for mobile apps. Realm is a simple, open-source alternative to SQLite and Core Data that provides the speed and resource optimization that are essential for software that is running on mobile devices.
  • UIPageViewController - Page view controller lets user navigate between pages of content and animate transition according to specified gestures.
  • ViewDeck - We use this library to implement sliding menu UI.
  • Harpy - Notify users when a new version of your app is available in iTunes and prompt them to upgrade.
  • CoreData - The framework provides object graph management and persistence for Foundation and Cocoa applications. CoreData typically decreases the amount of code you write by 50 to 70 percent to support the model layer.
  • Core Location - the framework lets you determine the current location or heading associated with a device.
  • SpeechKit - The framework allows integration of cloud speech recognition in the app.
  • CHT Collection View Waterfall Layout - The waterfall layout (i.e. Pinterest) for UI for pin set view.
  • Socket.IO - Socket.IO enables real-time two-way event-based data communication. The library allows development of apps with instant data exchange features like chats and messages.
  • FacebookSDK - The framework is used to integrate Facebook features into the app. For example: authorization, share options, app links, etc.
  • UIBezierPath + Layers - This class defines a path consisting of straight and curved line segments and renders that path in your custom views. Generally, it is used to draw lines inside the app and define simple shapes such as rectangles, ovals, and arcs or they can define complex polygons that incorporate a mixture of straight and curved line segments.
  • MaterialKit - Highly customizable Kit of components for iOS apps written in Swift. MaterialKit allows creating beautiful Material design UI.
  • Dropbox API - Dedicated API integrates Dropbox in the app.
  • AdSupport - The Ad Support framework provides access to identifier that can be used for serving advertisements in the app.
  • RestKit - is a framework for consuming and modeling RESTful web resources on iOS and OSX. REST architecture treats every content as a resource. These resources can be text files, HTML pages, images, videos or dynamic business data. REST Server simply provides access to resources and REST client accesses and modifies the resources.
  • FFmpeg Android - It is a Java library that stands for handling multimedia data on Android Devices. Generally, Ffmpeg is a library with different codecs each designed to process different formats of audio and video files.
  • OkHTTP - An HTTP & HTTP/2 client for Android and Java applications that is used to preserve the efficiency of data exchange in the network. OkHTTP reduces the request latency, saves bandwidth and silently recovers from common connection problems.
  • Acra - This library enables Android applications to automatically post their crash reports to a report server. Acra helps developers to collect bug reports and quickly solve problems using reported data.
  • TransitionKit - This is a Cocoa library that provides an API for implementing a state machine in Objective-C. The state machine collects a number of possible states for each UI option in the app.
  • Google Mobile ADS - Google Mobile ADS function is used for monetization of native mobile apps by accessing mobile ad networks and advertising solutions provided by Google. We can also implement Mobile Ads SDK to enable monetization via Google Ads network in your iOS app.
  • SDWebImage - This library provides asynchronous image downloader with cache support. SDWebImage is used in iOS apps to download images from the web.
  • Kingfisher - We also use Kingfisher, it’s a lightweight, pure-Swift library for downloading and caching images from the web.
  • MessageUI - This framework is used to create user interface to compose email and text messages, so that users can edit and send messages without leaving your app.
  • Crashlytics - This SDK provides real-time information on crashes inside apps. The solution is available for both iOS and Android platforms.
  • AudioToolBox - The Audio Toolbox framework provides interfaces for recording, playback, and stream parsing. In iOS, the framework provides additional interfaces to manage audio sessions.
  • Core Image - Core Image is an image processing and analytic technology designed to provide near real-time processing for still and video images. We use it to apply various filters to the image.
  • AssetsLibrary - We use the Assets Library framework to access pictures and videos managed by the Photo application.
  • MediaPlayer - Framework supports a variety of most common media formats, so we can easily integrate audio, video, and images into your applications and play those media files in the app.
  • AddressBook - This framework allows apps to access the centralized database of users’ contacts.
  • CFNetwotk - Accesses network services and handles changes in network configuration. It is built on abstractions of network protocols. These abstractions simplify the execution of a variety of network tasks, such as working with BSD sockets, administering HTTP and FTP servers, and managing Bonjour services.
  • PDF Reader SDK - with the help of this framework users can read and edit PDF files within the app.

What techs do you use for web development (back- and frontend)? Why so?

We have more than 5 years of experience in the development of high-quality and complex web applications. Here’s the list of major technologies we specialize in:

JavaScript, Angularjs.

Bootstrap, NODE.js, jQuery, PHP, Yii, Yii2, Laravel, Symfony, AWS, REST API, RabbitMQ,CodeIgniter 2.2, Lumen, MySQL, Ajax, jQuery.pjax, jquery.nicescroll.

Payment systems integration, Stripe, Paypal.
Font Awesome, Google ReCaptcha.

Click to - TECHNOLOGY

Web App Development

Back:PHP(Yii)

Our company strives to optimize time and costs expenses of our customers. Therefore, we are not only coding in clean PHP, but also use additional frameworks that contain a variety of ready-made solutions.

We use Yii2 - a PHP framework for development of large-scale Web applications. Yii2 advantages:

  • Easy installation process.
  • High speed of project deployment.
  • High performance.
  • Rich library of ready-made widgets.
  • Large and active community.
  • Doesn't require support.
  • Reduces the development cost.

We have already accumulated a large code-base that will accelerate the development.

We think it's inefficient to use several different programming languages at a time. It must be acknowledged that the longer expert works with a certain set of tools - the faster he levels up.

Criteria Measurement Framework
Yii2 Laravel CakePHP
Supported databases quantity 4 4 5
Documentation quality from 1 to 5 5 5 3
Cloud storage support 1 1 0
Performance from 1 to 5 5 4 4
Use of components from other frameworks yes / no no yes no
Availability of security functions out of the box from 1 to 5 4 4 5
Suitable for projects Small
Medium
Large
Small
Medium
Small
Medium
ORM support from 1 to 5 5 4 3
REST API support quality from 1 to 6 5 4 4
Easy to set up from 1 to 7 5 4 4
Number of ready-made solutions from community from 1 to 8 5 5 4
Framework development speed from 1 to 9 5 5 3
Tools for debugging from 1 to 10 5 4 4
Built-in template engine yes / no no yes yes
OOP quality from 1 to 5 4 4 4
Totla: 4.54 4 3.74

Backend

Node.js is used for backend development when instant data exchange is required. The main advantage of Node.js over PHP is the ability of two-way communication between frontend and backend, while traditional RestFul API is one way street.

Node.js advantages:

  • Rapidly growing software platform.
  • Provides a set of ready-made (package) solutions that save development time.
  • A larger number of ready-made solutions and it gets bigger over time due to the active development community.
  • Allows implementation of functions that require instant delivery of information to the user (e.g. chat); which is impossible with classic http-connection.

Frontend / Client End

Angular.js

Angular.js is a framework, that greatly accelerates the pace of development.

Features:

  • Communicates with the server via API. This means that frontend code is isolated from the backend code, which reduces the probability of errors and simplifies app’s frontend and backend testing.
  • Large and active community that constantly produces and maintains ready-made solutions for a vast variety of business niches, which speeds up the development process and reduces project’s budget.
  • We have strong proficiency in using this technology and already accumulated a large code-base that accelerates the development process.
  • Provides better fluency and overall performance of project’s web interface, which result in better User Experience.

What techs do you use for mobile app development?

Backend for mobile applications is developed using the same technologies that are used for web projects:

In case of classic RESTfull API development , which does not require instant data exchange functionality, we use such technology stack:

  • Apache for Server;
  • Programming language - PHP;
  • Database - MySQL;
  • Framework - Yii2.

In case we need to develop an app with instant data exchange features (chats, instant messages) we opt for:

  • JavaScript as programming language;
  • Framework - Node.js;
  • Library - Socket.io.

However, upon client request, we can apply Google Firebase services as a backend for your mobile app, but only if such solution is compatible with app requirements.

Frontend technologies for iOS apps

Programming Language

Swift - It is a new programming language for MacOS, iOS, watchOS and tvOS that combines best features and principles from C and Objective-C. Swift is compatible with code written in Objective-C (the main language used by Apple in OS X), Cocoa framework and Xcode IDE.

Integrated Development Environment (IDE)

Xcode - It is a free, native application development environment for MacOS, iOS, watchOS. Xcode was created by Apple itself and contains a suite of software tools for development of native apps on Swift and Objective-C programming languages.

Architecture and Patterns

Software design patterns and architectural patterns are general solutions to solve core problems that occur during development of software. The architecture behind particular software solution can implement different patterns and approaches and depends on the initial requirements for the project. During mobile app development we use following patterns: MVC, MVP, VIPER.

Dependency Manager

CocoaPods - It is a dependency manager for Swift and Objective-C Cocoa projects. It has over 27 thousand of different libraries and is used in over 1.6 million apps. CocoaPods saves time for development by providing numerous libraries that help to scale apps and add new features by integrating ready-made solution.

Libraries

  • Alamofire - HTTP networking library is written in Swift.
  • ObjectMapper - is a framework written in Swift that makes it easy for you to convert your model objects (classes and structs) to and from JSON.
  • Realm - It is a free cross-platform database created specifically for mobile apps. Realm is a simple, open-source alternative to SQLite and Core Data. Realm provides the speed and resource optimization that are essential for software that is running on mobile devices.
  • SocketIO - Socket.IO enables real-time bidirectional event-based communication. The library allows development of apps with instant data exchange features like chats and messages.
  • Charts - As its name suggests, this library provides tools for visualisation of different charts inside the app.
  • Facebook/Twitter/Instagram/G+ - These frameworks allow implementation of social functions (authorization, like, share, invite etc.) into the app.
  • Branch - Makes possible to use referral links (deep links) in the app. From start, web links don’t work with native mobile apps. If you use your mobile device to open a link you are taken to the destination in your web browser even if you have the app installed. Mobile app deep links allow users to create and share links from the mobile app via any other messaging tool and redirect viewers to the app or app store to install it.
  • Fabric+Crashlytics - These frameworks provide real-time information on crashes inside apps. Fabric+Crashlytics solutions are available for both iOS and Android.
  • CoreLocation - This framework lets you determine the current location or heading associated with user’s device.
  • MapKit/GoogleMaps - The MapKit framework provides an interface for embedding maps directly into the app.
  • OpenTok - The iOS SDK lets you use OpenTok-powered video sessions in apps you build for iPad, iPhone, and iPod touch devices. OpenTok lets to embed high-quality video, voice, messaging, and screen sharing into the web and mobile apps.
  • Firebase - It is a full-scale mobile platform powered by Google that speeds up the develop of high-quality apps and offers cloud based server infrastructure to maintain them: Cloud, Authentication, Realtime Database, Storage, Hosting, Test Lab, Crash Reporting, Analytics.
  • PromiseKit - This library provides tools for programming and using of asynchronous calls.
  • SpeechKit - SpeechKit framework allows integration of cloud speech recognition feature in the app.

Frontend technologies for Android

Programming language

In most cases we code on Java (JDK 1.6 - 1.8). Optionally, in order to support CPU/GPU intensive operations, we use .so libraries or include c/cpp code. Among such intensive operations are graphics processing (e.g. Qualcomm Vuforia - augmented reality library), or non-graphic operations (Paypal SDK).

Integrated Development Environment (IDE)

Android Studio - Native IDE with all you need to develop and publish app to Google Play store. This is a free, cross-platform IDE that can be used in Windows / Mac / Linux.

Architecture and Patterns

Software design patterns and architectural patterns are general solutions to solve core problems that occur during software development. The architecture behind particular software solution can implement different patterns and approaches depending on the initial requirements for the project.

Build tool

Gradle - It is an open-source build automation system that helps to inserts libraries while building applications. Almost all libraries can be included with just one string(!) in project config. Gradle enables easy transferring of the project to other development team and significantly cats overall time for development.

Popular plugins/libraries

  • Support-library - The library with backward compatibility for different Android OS.
  • Okhttp3 - A simple library for http/https requests.
  • SocketIO - Socket.IO enables real-time bidirectional event-based communication. The library allows development of apps with instant data exchange features like chats and messes.
  • Play-services-* - A set of google libraries for integration of push-messages, advertising, etc.
  • Stetho - It is a powerful open-source debugging platform for native Android apps. Stetho was initially developed by Facebook and now allows use of Google Chrome’s developer tools to perform various debugging activities.
  • Retrolambda - We use this plugin to enable java 1.8 features in old Android OS version.
  • Android-apt - This plugin brings a lot of features which greatly speed up the development process.
  • Rxbindings - We use this library for implementation of asynchronous events in the app (eg: button events, file download complete, etc).
  • Rxjava, Rxandroid - Another library for event-driven development and async operations.
  • Retrofit - This library is used to work with REST API and make the http calls.
  • Dagger - This is the main library for Android which implements Dependency Injection. Dependency Injections is used for testing and creating reusable, interchangeable modules to customize app behavior for each situation.
  • Picasso/Fresco - This libraries ease image processing.
  • GoogleMaps - The framework provides an interface for embedding maps directly into the app.
  • And many-many others.

We use native technologies for the frontend development of Android and iOS apps.

What are the payment terms?

You give an advance payment of 30% of the cost of the first milestone, and 70% upon completion of the first milestone (including testing the app’s functions embedded to the first milestone).

After that, 30% of the second milestone and 70% upon completion. Thus the payment is carried out until the final milestone.

Payment for the project is carried out for each milestone separately. The total project budget is divided by the number of planned milestones. At the beginning of each stage of development, you make advance payment - 30% of the cost of works that are scheduled in this milestone. After you confirm the works completed, you pay the remaining 70%.

If we’ve agreed to run the development in short sprints, then the interval between two payments could not exceed 2 weeks.

What payment methods do you accept?

1. Bank transfer

You should sign a contract to make a payment. Here’s example of our contract:
Click to see example

Pros: you have a formal contract that protects your interests.

Cons:

  • The bank may have additional requirements in order to make a transfer to Ukraine.
  • Bank charges additional fees.

2. Pioneer payment system

You’ll be provided with a link through which you can make a payment. This is the least comfortable option for you because the transfer is carried directly to the credit card with no need to sign a formal contract.

3. Freelance platforms (Upwork, Pickcrew, etc.)

Pros:

  • Escrow Support.
  • The platform acts as a third party that guarantees payment and delivery of the project. You can simply fund a milestone (with no direct prepaid), and money will be released only upon its delivery.

Cons: High Fees

Currencies we accept:

  • US dollars
  • British pounds
  • Euros

Any other currency you need. But it will take up to 2 weeks in order to open a dedicated bank account for the specific currency.

Who will become the owner of the intellectual property and copyright (code, design, concept, etc.) upon the completion of the project?

You are the only owner of the project and all its IP materials. We sign the NDA prior to the start of the development process. We can only ask to list your project in our portfolio as a reference of our work.

Here’s NONDISCLOSURE & CONFIDENTIALITY AGREEMENT we use - Click Here

You can also provide your own NDA.

Do you provide after delivery maintenance? What are the terms?

We do not provide a free product maintenance. But we will be happy to carry out further works, add new features and maintain the system we’ve created.

There are two possible solutions:

  • You hire another team (we can provide our recommendations) and pay for a full-time work when the need for update/maintenance arise.
  • We perform the update/maintenance process each time the overall scope of work reaches at least 40 hours. We take this scope as additional milestone.

How can we help you?

  • Indicating scope, timeframes, or business challenges would allow us to provide a better response
  • Our expert team will get back to you within 24h for free consultation
  • All information provided is kept confidential and under NDA

Looking forward to your message!