Pont is a cross-platform word puzzle game that challenges users to discover etymological connections between words in different languages. Built with Kotlin Multiplatform, it works on Android and iOS.
- Guess English words from words in other languages
- Able to clear progress
- Able to pick a puzzle at random
- Learn about etymology
- Kotlin Multiplatform (2.2.0) - Cross-platform development
- Jetpack Compose / Compose Multiplatform (1.8.2) - Modern declarative UI
- MVVM Architecture - Clean separation of concerns
- Koin (4.1.0) - Dependency injection
- Room Database (2.7.0-alpha12) - Local data persistence with KMP support
- Kotlin Coroutines & Flow - Asynchronous programming and reactive state management
- kotlinx.serialization - JSON parsing for puzzle data
- Material Design 3 - Modern UI components and theming
- JDK
- Android Studio
- Kotlin Multiplatform Mobile Plugin
- Android SDK: API Level 24-35
- Minimum Android Version: Android 7.0 (Nougat)
- Target Android Version: Android 15 (API 35)
- macOS
- Xcode
xcode-select --install
git clone https://github.com/Khanner1/pont.git
cd pont- Launch Android Studio
- Select File > Open
- Navigate to the cloned
pontdirectory - Click OK
- Wait for Gradle sync to complete (this may take several minutes on first run)
- Go to
Settings/Preferences > Build, Execution, Deployment > Build Tools > Gradle - Set Gradle JDK to JDK 11 or higher
- Ensure Gradle version is 8.9 or compatible
# Clean and build the project
./gradlew clean build
# This will download dependencies and generate necessary code- Connect an Android device via USB with USB debugging enabled, OR
- Start an Android emulator (API 24 or higher)
- Access the
MainActivity.ktfile in thecomposeApp/androidMain/folder
- Navigate to the
iosAppdirectory - Open
iosApp.xcodeprojin Xcode - Select a simulator (e.g., iPhone 15) or connected iOS device from the scheme menu
- Click the Run button (▶) or press
Cmd + R - Wait for the build to complete and the app to launch
pont/
├── composeApp/ # Main application module
│ ├── src/
│ │ ├── commonMain/ # Shared code across all platforms
│ │ │ ├── kotlin/
│ │ │ │ ├── data/ # Data layer (models, repository, database)
│ │ │ │ └── ui/ # UI layer (screens, ViewModels)
│ │ │ │ ├── home/ # Home screen with puzzle carousel
│ │ │ │ ├── library/ # Puzzle library screen
│ │ │ │ ├── puzzle/ # Main puzzle gameplay screen
│ │ │ │ └── theme/ # Material Design theme
│ │ │ └── composeResources/ # Shared resources
│ │ │ └── files/ # JSON data files
│ │ ├── androidMain/ # Android-specific code
│ │ └── iosMain/ # iOS-specific code
│ ├── build.gradle.kts # Module build configuration
│ └── schemas/ # Room database schemas
├── iosApp/ # iOS application wrapper
│ ├── iosApp/
│ │ ├── ContentView.swift # iOS app entry point
│ │ └── iOSApp.swift
│ └── iosApp.xcodeproj # Xcode project
├── gradle/ # Gradle wrapper and dependencies
│ ├── libs.versions.toml # Centralized dependency versions
│ └── wrapper/
├── build.gradle.kts # Root build configuration
├── settings.gradle.kts # Project settings
└── README.md # This file
This project is licensed under the Apache License 2.0