Skip to main content

About

Kotli helps to prepare the architecture of your product and generate all required production-ready artifacts based on it (layers, source codes, solution templates, documentation, CI/CD automation, etc).

The project is driven by the following principals:

Higher quality, lower cost

The architecture of any product represents a compromise between quality and the effort required to achieve it. Depending on the available resources (time, money, people, experience), the project can be more resistant to erosion or less so.

 

Kotli leverages the best software development practices to generate an initial project structure of any complexity while prioritizing simplicity and efficiency in further development and project support phases. As a result, at the beginning of the development, you have ready-to-use project architecture and workflows with no cost.

Write less, reuse more

When starting a project from scratch, typical steps involve:

  1. designing the product's architecture
  2. setting up the initial project structure
  3. configuring deployment
  4. implementing patterns for recurring scenarios
  5. writing tests
 

Kotli aims to streamline this process by generating code based on the planned architecture. The less code is written, the fewer issues it has… but it is not certain.

Learn while coding

In product development, teams typically consist of specialists collaborating: DevOps engineers, frontend and backend developers, manual and automated testers, architects, etc. It’s advantageous when the team truly includes all these specialists, or at least some possess experience across various areas, ensuring coverage of all necessary technical skills to maintain the product’s quality during implementation.

 

Kotli can provide ready-to-use technical solutions and step-by-step instructions on how to use them. As a result, developers can begin using production-ready practices with a lower entry threshold and gain knowledge of why and how these practices work throughout the process.

Kotlin first

Kotlin is designed to be multi-platform. Moreover, it generates native code for the target platform. You can create backend services, Android and iOS apps, desktop and web solutions using almost the same code base. And it is easy to learn… but:

  • Having the same code base is not always advantageous when developing complex products with numerous specialists or when utilizing development lifecycle practices specific for each layer (CI/CD, automated testing, deployment, etc.).
  • While it is easy to learn, prior knowledge of Java is beneficial.
  • It can be challenging to use when building complex or production-ready systems.
  • Despite Kotlin being pretty awesome, you have to know how to cook it.
 

Kotli provides out-of-the-box project templates with a set of ready-made practical solutions that can be customized to meet any project needs, considering both functional and non-functional product requirements. Ideally (in its current form it is not 💀) all that have to be done in the resulting project structure is to implement typical business cases based on the same template solutions.

No vendor lock

Project architecture usually comprises a set of technical solutions combined to achieve the product vision optimally. The freedom of choice is valuable and influences the project throughout its entire development lifecycle.

 

Kotli does not reinvent the wheel nor force the use of specific frameworks. Instead, it provides a tool to connect what you need, generating all connecting logic as source code, allowing for the adoption of necessary changes at any time.

Open source

All the benefits mentioned for Kotli are valuable and can significantly aid in building better apps faster. However, it’s important to note that while the technical solutions, practices, and ready-to-use templates provided by Kotli are beneficial, they are not a silver bullet and should be open to consideration for change or alternative solutions.

 

Kotli is designed to be flexible and to accommodate the implementation of alternative solutions to approach the same problem differently. Therefore, open source serves as a gateway, and community is key for expansion and improvements.