Software Development

Our custom software development services are designed to help businesses address their specific challenges and achieve their goals. We work closely with our clients to understand their requirements and create software solutions that are tailored to their needs. Our team has extensive experience working with a variety of programming languages and platforms, ensuring that we can deliver solutions that are both robust and scalable.

In addition to custom software development, we offer mobile app development services to help businesses reach their customers. Our mobile apps are designed to be user-friendly, intuitive, and optimized for performance across all devices.

Our comprehensive cloud application development services are designed to help businesses make the most of cloud technology, whether you need a new cloud application developed or want to improve an existing one.

At Amarula Solutions, we are committed to delivering exceptional software solutions that help businesses achieve their goals. Contact us today to learn more about our software development services and how we can help your business stay ahead of the curve.


QT

At Amarula Solutions, we have been developing custom software for embedded systems using the Qt toolkit across a wide range of sectors as industrial automation and medical devices. Our team has extensive experience in creating complex user interfaces that are highly functional and intuitive for a wide variety of sectors, including industrial systems and medical devices.

We use C++ and QML to create solutions that run  seamlessly on various technologies like EGLFS, Wayland, and Xorg. We develop applications for different platforms, including the Intel x86 family, Nxp imx6 family, Nxp imx8 family, and Rockchip rk3288, rk3399, px30, ensuring that our applications are highly versatile and can cater to the unique needs of different clients in various industries.

Our expertise in developing Qt applications allows us to create applications that provide a seamless user experience while meeting the most stringent quality and safety standards.


Cross-platform

We provide software for cross-platform applications that can run seamlessly across multiple operating systems. With our expertise, we can help businesses reach a wider audience and engage with their customers on different platforms such as Android, iOS, and Windows.

Using frameworks like React Native, Xamarin, Flutter, and Ionic, we can create mobile applications that are highly efficient, cost effective, and provide native-like performance and functionality. Our team of expert developers can write code once and deploy it across multiple platforms, saving valuable time and resources for our clients. We are ready to help your business enhance their digital presence, improve customer engagement, and stay ahead of the competition.


Android applications

For many years we have been developing android applications ranging from simple test applications to complex applications tailored to meet the specific needs and requirements of our clients. We are proficient in using standard Android features as well as specific ones related to particular hardware, which has enabled us to develop expertise in a variety of areas, including:

  • Barcode scanning
  • Security testing
  • Diagnostic features
  • Integration of robotic arm for automated testing of devices
  • Detailed NFC testing focused on particular Mifare NFC technologies
  • Reading SD cards
  • Testing specific modem features
  • Testing video and playback features

In addition to our technical expertise, we have a proven track record of success. We have participated in developing and publishing applications on Google Play like Door Entry, Voclarion App, Alcosystem Application, and Deva Control Application. Our Android applications have been designed to meet the highest quality standards, ensuring that our clients’ expectations are not only met, but exceeded.


IOS Applications

At our company we have a dedicated team for native iOS development. This is particularly valuable for high complexity applications that require specific native features. By using native development, we have better control over the code and avoid dependence on external libraries.

Without an additional layer between the code and the native features, we can develop more efficient and optimized applications. This approach also allows for better compatibility with the iOS platform and a more seamless user experience.


Cloud Applications

Our company is dedicated to providing comprehensive cloud application development services to businesses. Our experienced developers specialize in creating secure, scalable, and user-friendly cloud-based solutions. We can design and develop new cloud applications or improve existing ones. Our team can also help with migrating applications to the cloud or creating cloud-native applications that take full advantage of cloud computing.

We provide end-to-end cloud application development services, including front-end and back-end server components. Our team specializes in developing cloud-based back-end servers that are deployed within the cloud. We use a Continuous Integration infrastructure to automate the deployment process of back-end server code changes, allowing for faster updates. We take pride in developing solutions that are simple, scalable, and secure, and we have extensive experience working with different frameworks for back-end development.


Workflow

We take pride at Amarula Solutions to have established a successful workflow by integrating a variety of development tools. We would like to share our process with you.

  1. Requirement Analysis: The first step is to thoroughly analyze the requirements of the embedded Linux application. This includes understanding the functional and non-functional requirements, hardware constraints, and system specifications.
  2. Design and Architecture: Based on the requirements, design and architecture of the system should be created. This includes creating the software architecture, system design, and partitioning of the system.
  3. Development of Software: Once the architecture is finalized, the development process can begin. This includes developing software modules, writing code, and integrating them with existing modules. A suitable programming language such as C, C++, or Python can be chosen based on the requirements.
  4. Tasks: We define our tasks as user stories rather than just technical tasks, to help focus on the end user and their needs. We use Jira backlog to prioritize tasks to ensure efficiency and a smooth development process. All tasks should be analyzed to estimate complexity this helps to identify potential blocks. The progress of task are discussed during stand-up meetings.
  5. Code Review: After the code is developed, it should be submitted for a code review. Experienced developers should review the code and suggest any changes required, as well as approve the code. Our team uses both Gerrit and Gitea to make the review process very efficient.
  6. Verification Builds: Once the code review is completed, the code should be submitted for verification builds. Verification builds ensure that there are no compile errors, security errors, or unit test errors. This process should be automated using tools such as Jenkins or Buildbot, we use Jenkins.
  7. Testing: After the verification builds are completed, the software should be tested thoroughly to ensure that it meets the requirements. Testing should include unit testing, integration testing, system testing, and acceptance testing. Automated testing tools such as Robot Framework or pytest can be used to make this process more efficient. We use a variety of testing methods tailored to the project.
  8. Debugging: If any issues are found during testing, they should be debugged and resolved as quickly as possible.
  9. Release Builds: Once the testing and debugging are completed, the code should be submitted for release builds. Release builds should be automated using tools such as Jenkins or Buildbot. The release process should be straightforward and easy to perform using build scripts. We use Jenkins, our build scripts are adopted to make releases with few clicks via the web interface.
  10. Deployment: Once the release build is completed, the software can be deployed on the target hardware. This includes installing the software on the target hardware and configuring it.
  11. Maintenance: After deployment, the software needs to be maintained to keep it up-to-date and to fix any issues that may arise. Maintenance includes bug fixing, updating the software, and enhancing the system.
  12. Documentation: Finally, the entire software development process should be documented. This includes the design, development, testing, deployment, and maintenance of the software. We are extending our knowledge base daily with Confluence documentation tool. All our specific experience is easily accessible in one central place by all developers. It is well organized for our developers to find relevant information quickly.
  13. Communication: Throughout the entire development process, communication between team members is critical. An efficient communication tool such as Slack or Mattermost can be used to share information and collaborate in real-time. We recognize the importance of establishing effective communication with our clients. We make sure that both sides are well-informed about the development process, attention points and decisions made. Regular sprint planning sessions are hold to define the sprint backlog and ensure the team is aligned with the project goals. Our teams use the stand-up Raven plugin in Mattermost in addition to progress meetings.

We hare happy to share our workflow details with you. Contact us today and we will help your team establishing your customized workflow with our interactive support program.


Have a project idea in mind?