# Guide for Cytomine developers

In this section, you will learn how to extend the Cytomine platform or develop new features.

If you don't know Cytomine yet, follow the Getting Started page in the user guide to have a tour and discover the main concepts of Cytomine.

Cytomine project is composed of multiple components implemented with different programming languages that are interacting each other. It is then possible to contribute to one or another component according to your skills. Please see the How to contribute guide to discover the multiple ways of improving Cytomine easily and our Contributor Code of Conduct.

The main components of Cytomine are:

  • Core (opens new window). This component embeds the programming logic, the object representations, their dependencies and the access permissions. Core is also the component connected to the databases. It is developed with the Grails framework (opens new window).
  • PIMS. This component is the image management system and is connected to the storage disk. Imported images on Cytomine are handled by this component. It is also responsible to return the tiles displayed in the viewer when you browse an image as well as the thumbnails and annotation crops. It is developed in Python.
  • Web-UI (opens new window). This component is our officially supported front-end. It is a Web User Graphical Interface developed in VueJS. All graphical components you see during your Cytomine browser navigation are implemented here.
  • The external clients API libraries (currently Javascript (opens new window), Python (opens new window) and Java (opens new window)). As Cytomine is a RESTful platform, it is possible to interact with a Cytomine instance with HTTP(S) requests and without using a graphical interface. Clients are libraries developed to help you to integrate interactions with Cytomine in your scripts or your applications. As we know, the Java client is mostly used for integration in other applications, the Python client is used for IA researchers and scripting and the Javascript client is used to build Web User Interface.

The interactions between these components are shown here: Bootstrap overview

Last Updated: 10/27/2022, 4:53:19 PM