Platform, not Product

When we in Engineering release a new version of Lime CRM we ship it without a data model, the database only contains what is necessary to bootstrap the application.

This is because we know that for our customers to get the most out of their CRM system, it is important that it is adapted to their particular company and processes. A CRM system must always be designed according to those who will use it. At Lime Engineering we took this to the extreme and made a CRM platform instead of a CRM product.

The data model (entities with fields and the relations between them) are designed by a consultant project manager in close cooperation with the customer. Our graphical tools makes this process very easy. If the data model is changed the system automatically generates database tables with appropriate indexes, elastic document configurations, REST endpoints, web user interfaces, security policies, subscribable web hook events and more. At runtime!

But the customization options does not end there, Lime CRM is designed from the ground up to be super flexible, extendable and with tooling that makes it easy and cost effective for our Lime consultants to tailor it for each customer’s needs.

Data Model Driven Frontend

When our customers grow their database they will naturally have a need to quickly view, search, browse and filter their data. To solve this in the web client we have a number of components to do just that, like tables, lists, cards and so on. Remember that the data model is super flexible and we have no idea what could be in it! So our components are just as flexible and will tabulate and present whatever data the customer might have.

But sometimes tables, lists and cards might not be enough. In those cases our application consultants can insert their own custom made components into slots that we have prepared for them. In other words, we have made our components incredibly customizable!

Stencil

Lime CRM as a platform has been around for many years. It’s evolved and been rewritten times and times again.
Five years ago when it was time to choose a new framework for our frontend, we needed something that would be around for a long time. It also needed to be the same tools for both the platform and for its customizations.

The choice fell on the Stencil toolchain. It is similar enough to other frameworks that it is easy to pick up, but compiles into browser native web components (no additional runtime), a web standard that will be supported for a long time. When you have thousands of customizations, long term support is a must.

Consistent Look and feel

At Lime we have hundreds of consultants making their own components and designing user interactions, usually under time pressure. This presented us with an exciting challenge: Not only does it have to be easy to create new components and customizations, it must be just as easy to do so in a way that is consistent with the rest of the UI.

To tackle this, we made our own web component library Lime Elements based on material design together with guidelines and best practices.

Extendable Application Server

Our backend is written in Python. We use the typical libraries you would expect such as flask, celery and kombu. It is backed by a hard working SQL Server with a Redis cache for managing any type of data, Elastic Search to query for it and Rabbit MQ to power the event driven messaging subsystem.

The platform comes without any business logic built in, instead we provide a Python API for extending the application. This is used by other programmers, for example consultants, partners and customers. It makes it easy for them to create their own actions that run when saving objects, add new endpoints, schedule jobs to run in the background, integrate with other systems or even change the security model.

Being a Python application the server runs equally well as a windows service on a customers server or as a process in a Linux container in our cloud.

Tools for Everything

Not only do we build a solid platform for our company to deliver customer magnets and a great product. We also develop and maintain the tools that accelerates processes and makes everyday life of our coworkers easier.

This includes automation with the assistance of pipelines and GitHub actions, containerization through Docker, as well as CLI and web based tools built from scratch to solve specific needs for coworker and customer alike.

Would you like to build a platform with us?