Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/felipekoga/deeplink-launcher

Launch deeplinks easily - built with Compose Multiplatform
https://github.com/felipekoga/deeplink-launcher

android compose-multiplatform datastore desktop ios jetpack-compose kmp koin kotlin kotlin-multiplatform-mobile kotlin-multiplatform-sample material3 modularization sqldelight voyager

Last synced: 17 days ago
JSON representation

Launch deeplinks easily - built with Compose Multiplatform

Awesome Lists containing this project

README

        


DeepLink Launcher Logo

DeepLink Launcher


DeepLink Launcher is a multiplatform app designed for executing and managing deeplinks. This tool offers developers and QA teams an intuitive interface for testing, organizing, tracking, and sharing deeplinks.



Stars


Release

## 🚀 Demo
[![demo](https://github.com/user-attachments/assets/174c5fdd-8e15-4ae2-aa9c-94fc72e2c13c)](https://www.youtube.com/watch?v=umB3ZlYJMGA)

## 🌐 Supported Platforms

| Platform | Status | Download |
|-----------|---------|--------------------------------------------------------------|
| **Android** | ✅ Available | [Download on Google Play](https://play.google.com/store/apps/details?id=dev.koga.deeplinklauncher.android) |
| **iOS** | ✅ Available | Not yet released. |
| **Desktop** | ✅ Available | [Download for Desktop](https://github.com/FelipeKoga/deeplink-launcher/releases) |

## 🔑 Key Features

- **Execute Deeplinks**: Instantly execute deeplinks on Android, iOS, and Desktop platforms.
- **Device Bridge**: The Desktop app integrates with **ADB** (Android) and **Xcrun** (iOS) to run deeplinks directly on devices in real-time.
- **Auto-suggestions**: Get suggestions for deeplinks based on previously executed links.
- **Deeplink History**: Easily track and revisit all previously executed deeplinks.
- **Favorites**: Mark your most used deeplinks as favorites for quick access.
- **Folders**: Organize your deeplinks into folders for better management.
- **Export/Import**: Export and share your deeplinks in **JSON** or **TXT** formats. Import deeplinks as needed.
- **Duplicate Deeplinks**: Quickly duplicate existing deeplinks to save time on similar or recurring tasks.
- **Theme Support**: Choose between Light and Dark themes to match your preferences.
- **Search**: Find any deeplink fast with the built-in search functionality.
- **In-App Purchase**: Support the project by buying a coffee (Android only).

## ⚙️ Built With

| Technology | Description |
|------------|-------------|
| [**Compose Multiplatform**](https://github.com/JetBrains/compose-jb) | A modern UI toolkit for building native UIs across all platforms. |
| [**Voyager**](https://github.com/adrielcafe/voyager) | A multiplatform navigation library. |
| [**Koin**](https://insert-koin.io/) | A powerful dependency injection framework for Kotlin. |
| [**SQLDelight**](https://cashapp.github.io/sqldelight/) | A multiplatform database library that generates type-safe Kotlin APIs. |
| [**DataStore**](https://developer.android.com/jetpack/androidx/releases/datastore) | A modern data storage solution for key-value pairs or protocol buffers with Kotlin coroutines. |
| [**Material3**](https://m3.material.io/) | Google's design system for a consistent user experience across platforms. |
| [**Kotlinx Immutable**](https://github.com/Kotlin/kotlinx.collections.immutable) | Immutable collections for Kotlin. |
| [**Kotlinx DateTime**](https://github.com/Kotlin/kotlinx-datetime) | Library for working with date and time in Kotlin. |
| [**AboutLibraries**](https://github.com/mikepenz/AboutLibraries) | Displays open-source libraries used in Android apps. |
| [**Detekt**](https://github.com/detekt/detekt) | A static code analysis tool for Kotlin. |
| [**Ktlint**](https://github.com/pinterest/ktlint) | A Kotlin linter for enforcing code style guidelines. |
| [**MPFilePicker**](https://github.com/Wavesonics/compose-multiplatform-file-picker) | A multiplatform file picker for Compose. |
| [**Material 3 Window Size Class**](https://github.com/chrisbanes/material3-windowsizeclass-multiplatform) | A library to detect window size across different platforms. |
| [**RevenueCat**](https://www.revenuecat.com/) | In-app purchase library for managing subscriptions and one-time purchases. |

## 🏗️ Architecture Overview

The architecture used is designed to enforce modularization and encapsulation, promoting clean and maintainable code. Here's how it is structured:

### Modules
Each feature in the app is divided into three submodules:

1. **:ui**
- Contains the user interface components (e.g., screens, widgets, and Compose code).
- Depends on the **API Module** for any shared interfaces or contracts.

2. **:ui**
- Implements the business logic and core functionality of the feature.
- Depends on the **API Module** for interface definitions.
- Completely hidden from other feature modules to prevent tight coupling.

3. **:api**
- Defines public contracts, such as interfaces and shared data models.
- Serves as the communication layer between **UI** and **Impl**, and is the only module exposed to other feature modules.

### Rules
- **Feature Isolation**: Other feature modules can only access the **API** or **UI Module** of another feature, ensuring clear boundaries and reducing dependencies.
- **Encapsulation**: The **Impl Module** is internal to the feature, encapsulating its implementation details.
- **Reusability**: Common components can be placed in the **API Module** for easy reuse across the app.

This approach ensures:
- **Scalability**: Features can be developed, tested, and maintained independently.
- **Clear Dependency Management**: Modules explicitly declare their dependencies, making it easy to track changes.
- **Improved Code Quality**: Separation of concerns makes the codebase easier to navigate and less prone to bugs.

### References
- [Android Modularization](https://www.reddit.com/r/RedditEng/comments/vwrrrf/android_modularization/)
- [Android at Scale @ Square](https://www.droidcon.com/2019/11/15/android-at-scale-square/)

---

Feel free to reach out with any questions or suggestions! 😄