Skip to main content
Back to work

Technical case study · Mobile

NutriSport

Sports-nutrition e-commerce for Android and iOS built with Kotlin Multiplatform and Compose Multiplatform.

Kotlin Multiplatform · Compose Multiplatform · Firebase · Ktor · Koin · GitHub Actions

NutriSport mobile application

Context

NutriSport brings customer and seller/admin flows together in a cross-platform mobile application. The technical challenge was to share as much of the product as possible without losing Android and iOS requirements or usefulness under limited connectivity.

Architecture

The solution separates Android and iOS hosts from shared UI, domain, data, navigation, dependency-injection and feature modules. Firestore provides offline persistence, while Firebase Functions keeps checkout away from direct client writes.

Technical decisions

  1. 01Kotlin Multiplatform and Compose Multiplatform share UI and logic while retaining native hosts.
  2. 02Modularisation separates domain, data, navigation, DI and features to limit coupling.
  3. 03Offline-first reads combine Firestore persistence, image caching and platform-specific connectivity observation.
  4. 04Checkout is delegated to Firebase Functions so final order writes do not rely on client trust.

Reliability & security

Connectivity is treated as a product condition: reads can use local persistence, while critical operations follow a controlled flow. Backend-managed checkout reduces the surface for manipulating final order writes.

Testing & delivery

The project includes testing and CI/CD automation for validation and Android build generation. Modular boundaries keep changes focused between shared features and platform-specific code.

Trade-offs

Shared code reduces duplication but does not remove platform differences: connectivity, hosts and device capabilities still need explicit decisions. The architecture keeps that boundary visible rather than hiding it.