Skip to content

FelipeKoga/deeplink-launcher

Repository files navigation

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

🌐 Supported Platforms

Platform Status Download
Android ✅ Available Download on Google Play
iOS ✅ Available Not yet released.
Desktop ✅ Available Download for Desktop

🔑 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 A modern UI toolkit for building native UIs across all platforms.
Voyager A multiplatform navigation library.
Koin A powerful dependency injection framework for Kotlin.
SQLDelight A multiplatform database library that generates type-safe Kotlin APIs.
DataStore A modern data storage solution for key-value pairs or protocol buffers with Kotlin coroutines.
Material3 Google's design system for a consistent user experience across platforms.
Kotlinx Immutable Immutable collections for Kotlin.
Kotlinx DateTime Library for working with date and time in Kotlin.
AboutLibraries Displays open-source libraries used in Android apps.
Detekt A static code analysis tool for Kotlin.
Ktlint A Kotlin linter for enforcing code style guidelines.
MPFilePicker A multiplatform file picker for Compose.
Material 3 Window Size Class A library to detect window size across different platforms.
RevenueCat 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


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