Thanks to visit codestin.com
Credit goes to github.com

Skip to content
/ bring Public

Shopping list app with live updates, available on all platforms thanks to Kotlin Multiplatform

License

avan1235/bring

Repository files navigation

πŸ›’ Bring! - A Multiplatform Shopping List App

Platforms Platforms Platforms

Build Latest Release Google Play Docker

License: MIT GitHub Repo stars Fork Mini Games

πŸ“± Overview

Bring! is a modern, feature-rich shopping list application built with Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP). It allows users to create, manage, and share shopping lists across multiple platforms with a seamless, native-like experience.

Web version is publicly available at https://bring.procyk.in

πŸš€ Features

  • βœ… Create and manage shopping lists
  • βœ… Import shopping lists data from external websites
  • βœ… Mark items as favorites for quick access
  • βœ… Real-time synchronization across devices
  • βœ… Customizable settings
  • βœ… Beautiful, responsive UI with Material Design

πŸ› οΈ Technology Stack

Client

  • Kotlin Multiplatform - Share code across platforms
  • Compose Multiplatform - UI framework for all platforms
  • Ktor Client - HTTP client for API communication
  • KStore - Cross-platform storage solution
  • Arrow - Functional programming library
  • Kotlinx Serialization - JSON/CBOR serialization
  • Kotlinx Coroutines - Asynchronous programming
  • Kotlinx DateTime - Cross-platform date/time handling
  • Kotlinx RPC - Type-safe client-server communication

Server

  • Ktor Server - Asynchronous web framework
  • Exposed - SQL framework for database access
  • PostgreSQL - Relational database
  • GraalVM - Native compilation for improved performance
  • Koin - Dependency injection
  • Kotlinx RPC - Type-safe client-server communication

πŸ’» Supported Platforms

The client application supports:

  • πŸ“± Android Get it on Google Play
  • 🍎 iOS (requires macOS for building)
  • πŸ–₯️ Desktop (Windows, macOS, Linux)
  • 🌐 Web (via WebAssembly)

πŸ—οΈ Project Structure

bring/
β”œβ”€β”€ composeApp/           # Client application code
β”‚   └── src/
β”‚       β”œβ”€β”€ androidMain/   # Android-specific code
β”‚       β”œβ”€β”€ commonMain/    # Shared client code
β”‚       β”œβ”€β”€ iosMain/       # iOS-specific code
β”‚       β”œβ”€β”€ jvmMain/       # Desktop-specific code
β”‚       └── wasmJsMain/    # Web-specific code
β”œβ”€β”€ server/               # Server application code
β”‚   └── src/
β”‚       └── main/         # Server implementation
β”œβ”€β”€ shared/               # Shared code between client and server
β”‚   └── src/
β”‚       └── commonMain/   # Data models, API definitions
└── shared-client/        # Client-specific shared code
    └── src/
        └── commonMain/   # API clients, network communication

πŸš€ Getting Started

Prerequisites

  • JDK 21 or higher
  • Docker and Docker Compose (for running the server)
  • Android Studio or IntelliJ IDEA (for development)
  • Xcode (for iOS development, macOS only)

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘¨β€πŸ’» Author

Maciej Procyk