Skip to content

SDKForge/Exif

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

57 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

SDKForge Template

Kotlin Android iOS License Platform

A modern Kotlin Multiplatform SDK template for building cross-platform libraries and applications. This template provides a robust foundation for creating SDKs that work seamlessly across Android and iOS platforms. Currently in development - this template is designed to be forked and customized for your specific SDK needs.

πŸš€ Features

  • Kotlin Multiplatform: Write once, run on Android and iOS
  • Modern Architecture: Clean, modular structure with separate modules for different concerns
  • Compose Multiplatform: Shared UI components using Jetpack Compose
  • Comprehensive Testing: Unit tests, integration tests, and performance benchmarks
  • Code Quality: KtLint, dependency guard, and binary compatibility validation
  • Documentation: Automated API documentation with Dokka
  • CI/CD Ready: GitHub Actions workflows for automated builds and publishing
  • Performance Monitoring: Built-in benchmarking tools

πŸ“± Supported Platforms

  • Android: API 21+ (Android 5.0+)
  • iOS: 12.0+
  • Kotlin: 2.2.20+
  • Gradle: 8.0+

πŸ—οΈ Project Structure

SDKForge.Template/
β”œβ”€β”€ app-android/         # Android sample application
β”œβ”€β”€ app-ios/             # iOS sample application
β”œβ”€β”€ app-shared/          # Shared sample UI components (Compose Multiplatform)
β”œβ”€β”€ shared/              # Main SDK library with all components
β”œβ”€β”€ shared-core/         # Core shared functionality
β”œβ”€β”€ shared-template/     # Template for shared modules
β”œβ”€β”€ build-logic/         # Gradle build logic and conventions
β”œβ”€β”€ internal-benchmark/  # Performance benchmarks
└── internal-ktlint/     # Custom ktlint rules

πŸ› οΈ Installation

Note: This project is currently in development and not yet published to any repository. Installation instructions will be available once the project is published.

Future Installation (Coming Soon)

Once published, you'll be able to install the SDK using:

Gradle (Kotlin DSL)

dependencies {
    implementation("dev.sdkforge.template:shared:1.0.0")
    implementation("dev.sdkforge.template:shared-core:1.0.0")
}

Gradle (Groovy)

dependencies {
    implementation 'dev.sdkforge.template:shared:1.0.0'
    implementation 'dev.sdkforge.template:shared-core:1.0.0'
}

Maven

<dependency>
    <groupId>dev.sdkforge.template</groupId>
    <artifactId>shared</artifactId>
    <version>1.0.0</version>
</dependency>

πŸš€ Quick Start

Prerequisites

  • Java Development Kit (JDK): Version 21 or higher
  • Android Studio: Latest stable version (for Android development)
  • Xcode: Latest stable version (for iOS development, macOS only)
  • Kotlin: Version 2.2.20 or higher
  • Gradle: Version 8.0 or higher

Development Setup

  1. Clone the repository:

    git clone https://github.com/SDKForge/template-sdk.git SDKForgeTemplate
    cd SDKForgeTemplate
  2. Build the project:

    ./gradlew build
  3. Run tests:

    ./gradlew lint ktlintCheck dependencyGuard apiCheck
  4. Generate documentation:

    ./gradlew dokkaHtml

Using as a Template

This project serves as a template for creating Kotlin Multiplatform SDKs. To use it:

  1. Fork or clone this repository
  2. Customize the module names, package names, and functionality
  3. Add your SDK logic to the shared-* modules
  4. Configure publishing when ready to distribute
  5. Update documentation to reflect your specific SDK

πŸ“– Usage

Basic SDK Structure

The template provides a modular structure with platform-specific implementations:

// Common interface (shared/src/commonMain/kotlin/dev/sdkforge/template/core/Platform.kt)
interface Platform {
    val name: String
    val version: String
}

expect val currentPlatform: Platform

Platform-Specific Implementations

Android Implementation

// shared-core/src/androidMain/kotlin/dev/sdkforge/template/core/Platform.android.kt
actual val currentPlatform: Platform = object : Platform {
    override val name: String get() = "Android"
    override val version: String get() = android.os.Build.VERSION.SDK_INT.toString()
}

iOS Implementation

// shared-core/src/iosMain/kotlin/dev/sdkforge/template/core/Platform.ios.kt
import platform.UIKit.UIDevice

actual val currentPlatform: Platform = object : Platform {
    override val name: String get() = UIDevice.currentDevice.systemName
    override val version: String get() = UIDevice.currentDevice.systemVersion
}

Compose Multiplatform UI

The template includes a shared UI component using Compose Multiplatform:

// app-shared/src/commonMain/kotlin/dev/sdkforge/template/app/App.kt
@Composable
fun App(
    modifier: Modifier = Modifier,
) = ApplicationTheme {
    Surface(
        modifier = modifier,
        color = MaterialTheme.colorScheme.background,
    ) {
        Column(
            verticalArrangement = Arrangement.spacedBy(
                space = 8.dp,
                alignment = Alignment.CenterVertically,
            ),
            horizontalAlignment = Alignment.CenterHorizontally,
        ) {
            Text(
                text = "Platform name: ${currentPlatform.name}",
            )
            Text(
                text = "Platform version: ${currentPlatform.version}",
            )
        }
    }
}

SDK Version Information

Access SDK version information through the Library object:

// shared/src/commonMain/kotlin/dev/sdkforge/template/Library.kt
data object Library {
    const val VERSION = "0.0.1"
}

// Usage
val sdkVersion = Library.VERSION

πŸ§ͺ Testing

Run All Tests

./gradlew test

Run Platform-Specific Tests

# Android tests
./gradlew app-android:test

# iOS tests
./gradlew app-ios:test

Performance Benchmarks

./gradlew internal-benchmark:connectedAndroidTest

πŸ“š Documentation

πŸ”§ Development

Adding New Modules

  1. Create a new module in the shared-* directory
  2. Apply the appropriate plugins in build.gradle.kts
  3. Update the main shared module to export the new module
  4. Add tests and documentation

Code Style

This project uses KtLint for code formatting. Run the following to check and fix code style:

./gradlew ktlintCheck
./gradlew ktlintFormat

Dependency Management

The project uses dependency guard to prevent dependency drift:

./gradlew dependencyGuard

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Before Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Ensure all checks pass
  6. Submit a pull request

Code of Conduct

This project adheres to a Code of Conduct. By participating, you are expected to uphold this code.

πŸ”’ Security

We take security seriously. Please report security vulnerabilities to volodymyr.nevmerzhytskyi@sdkforge.dev.

Do NOT create public GitHub issues for security vulnerabilities.

πŸ“„ License

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

πŸ†˜ Support

πŸ—ΊοΈ Roadmap

  • Publishing Setup - Configure Maven Central or other repository publishing
  • CI/CD Pipeline - Automated publishing workflows
  • Web platform support - Extend to web platforms
  • Desktop platform support - Add desktop (Windows, macOS, Linux) support
  • Enhanced performance monitoring - Advanced benchmarking and profiling
  • More UI components - Additional Compose Multiplatform components
  • Advanced configuration options - Flexible SDK configuration
  • Documentation site - Dedicated documentation website

πŸ™ Acknowledgments


Made with ❀️ by the SDKForge Team

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 98.3%
  • Other 1.7%