Skip to content

realAleksha/template-multiplatform-compose

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Compose Multiplatform Fully Configurable Project Template

Supported Platforms

  • Android
  • iOS
  • Web (JS)
  • Desktop (Windows, MacOS, Linux)
  • Backend (Ktor Server)
  • Backend (Supabase)
All target platforms are optional and will be included only if selected during configuration, along with any features.

Table of Contents

Overview

The template follows the general principals:

  • The underlying architecture is minimalistic, pre-configured, and complies with the latest recommended guidelines.
  • Third-party dependencies, components, DevOps practices, and configurations are optional and can be included or excluded through an online service Kotli.
  • All out-of-the-box solutions work seamlessly across all supported platforms and are designed to accelerate the development of complex and production-ready applications within days, prioritizing simplicity and efficiency during the implementation and support phases.

Get started

!IMPORTANT! The given template is a Kotli Template.

To generate the required project structure, use online service Kotli (it's free and only requires an internet connection).

Once you configure the necessary features and generate the archive with source codes, you'll have a ready-to-use and working project structure that can be imported into your IDE to begin adding the required business logic.

The template will also include all necessary showcases to make understanding of the included features easy.

Run your project to check what is included and how it works, and once everything is clear, remove the package with showcases and any references to it.

Architecture

Modules

Frontend

The overall client architecture follows the recommended guidelines and is built on:

Application logic is implemented in the app module and contains only app-specific behavior.

All common logic is part of the shared group, which is split into three modules:

These modules are used only at the app level. This approach lets you develop all three components independently and create a more complex app structure. For example, app-specific features can be implemented as separate modules, having the same shared dependencies.

Module - presentation

Provides architectural solutions and design system of the app to implement user flows and integrate all components with each other in a lifecycle-aware manner.

It includes:

The included solutions are not mandatory to follow, as all required dependencies are properly included to enable you to use your own patterns with Jetpack components.

However, the provided implementations are very intuitive to use and cover all possible cases of communication between components in various real-life scenarios.

Feel free to choose what fits your needs best.

Module - data

Provides a fundamental implementation of commonly used data sources. During project setup via Kotli, only the required data sources will be included.

All data sources have been configured to access the necessary data layer in a flexible and convenient manner.

Module - domain

Encapsulates core business logic and shared data models (Use Cases) that are reusable across all feature-specific modules of the app. This layer serves as the backbone for handling business rules, decoupling feature modules from one another while maintaining consistency and scalability.

Module - app

The Application module itself contains:

  • Logic to properly connect all included components together with the help of Dependency Injection (Koin, by default).
  • Showcases to demonstrate some features included during project setup.

Once you download and import the initial project structure into your IDE, the project is ready to run on a device, enabling you to understand the included functionality and start adding the required features.

Backend

The server architecture is based on either the Ktor Framework or Spring Boot or any other possible solution.

Documentation

Once you've configured your project through Kotli and downloaded the generated source codes, this project become fully yours and is not bound to the service. Each project includes a README.MD file in its root with the following helpful details:

  • A link to the initial template used to prepare the project structure (GitHub page of the template, similar to this one).
  • A link to the architecture (Kotli project) used to prepare and download these sources.
  • A list of all features included in the project during its setup. Each feature includes additional documentation within the project's docs directory, making it easy to check what is included, find official links, and understand how to use and configure each functionality if needed.

All documentation related to features can also be found and accessed online, up-to-date, once you open the link to your Kotli project.

Showcases

When a project is configured and downloaded via Kotli, it also provides showcases of all included features. Furthermore, the screen with showcases is configured as the initial screen when running the downloaded template.

Showcases :: Overview Showcases :: Theme Dialog Showcases :: Key-Value Storage
Showcases Overview Theme Dialog Key-Value Storage

How to use

Once the project is downloaded, it includes the source code as well as a README.md file. This file visualizes all the features included as a table. The most useful columns in this table are:

  • Overview - A summary of the feature, including all official resources used to pre-configure this feature in the template. Use it as a reference to find any additional information related to the feature.
  • Usage - The main information related to using the feature. Use it as a starting point when you need to start working with the feature and don't know how to begin.

For example, if you configured the project with Web and iOS platforms but don't know how to run the app on them (💀), find these platforms in the table and open their Usage guide.

Features

The template is highly configurable, allowing you to include only the necessary features in the app.

All these features are optional, will be updated over time, and can be included in the generated structure during project setup.

The generated project will include a similar table in its README.MD file, but with only the configured features (direct and transitive).

Group Feature Overview Configuration Usage
Platforms iOS Link - Link
Platforms Android Link - Link
Platforms Desktop Link - Link
Platforms Web (JS) Link - Link
Platforms Ktor Link - Link
Platforms Supabase Link - Link
Base Setup Compose Multiplatform Link - -
Base Setup Jetpack Navigation Link - Link
Base Setup Material 3 Link - Link
Base Setup Koin Link - -
Base Setup Gradle (Kotlin DSL) Link - -
Data Flows Korlibs Crypto Library Link - Link
Data Flows Basic Cache API Link - Link
Data Flows Basic Config API Link - Link
Data Flows SQLDelight Link - Link
Data Flows SQLite (Jetpack Room) Link - Link
Data Flows Ktor HTTP Client Link - Link
Data Flows Multiplatform Paging Library Link - Link
Data Flows Basic Analytics API Link - Link
Data Flows Gemini AI Link - Link
User Flows Coil Image Library Link - Link
User Flows Markdown Text Renderer Link - Link
User Flows Adaptive Navigation Link - Link
User Flows Bottom Navigation Link - Link
User Flows Dismissible Navigation Link - Link
User Flows Modal Navigation Link - Link
User Flows Permanent Navigation Link - Link
User Flows Rail Navigation Link - Link
User Flows Save Theme API Link - Link
User Flows Change Theme Screen Link - Link
User Flows Toggle Theme Button Link - Link
User Flows Auth Flow Link - Link
User Flows Passcode Flow Link - Link
User Flows Placeholder UI Link - Link
User Flows FileKit Link - Link
Dev Tools kotlin-logging Link - Link
Dev Tools Kermit Link - Link
Dev Tools Napier Link - Link
Guides README.md Link - -
Guides Feature Showcases Link - -
Guides Feature Template Link - Link