Kailona is a Nextcloud app with its server components implemented using Nextcloud app development guidelines and client components implemented as a standalone platform in React.

Architecture Diagram

Project Structure#

The main project structure is constructed based on Nextcloud app structure. The client packages are maintained as monorepo, containing many repositories. You can individually use those packages on your custom apps as well.

โ”œโ”€โ”€ appinfo # Nextcloud app metadata and configuration
โ”œโ”€โ”€ img # Icons and images
โ”œโ”€โ”€ js # Client source code
โ”‚ โ”œโ”€โ”€ platform # Client platform
โ”‚ โ”‚ โ”œโ”€โ”€ core # Business logic
โ”‚ โ”‚ โ”œโ”€โ”€ ui # UI elements
โ”‚ โ”‚ โ””โ”€โ”€ main # Main app components
โ”‚ โ”‚
โ”‚ โ””โ”€โ”€ plugins # Custom plugins
โ”œโ”€โ”€ i10n # Translation files
โ”œโ”€โ”€ lib # Server business logic, Custom API controllers, FHIR API gateway
โ”œโ”€โ”€ templates # Server templates
โ”œโ”€โ”€ tests # Server unit tests
โ”œโ”€โ”€ ... # Misc. configuration files
โ”œโ”€โ”€ lerna.json # MonoRepo (Lerna) settings for client-side packages
โ”œโ”€โ”€ package.json # Client package configuration
โ””โ”€โ”€ # Quick development instructions

The lib folder contains server-side business logic, Custom API controllers and FHIR API Gateway. The js folder contains all client-side business logic, modules and components.

The platform folder contains the client business logic, application components and UI elements. The main folder contains the main application module that combines all other components to create the client application.

The plugins folder contains many packages that can be registered in Kailona's config file, main/src/config/default.js to expand the features and functionality of Kailona such as new data types.