Skip to content

Hear local historical markers as you travel on your road-trip. 100% Shared Compose UI, Kotlin native cross-platform codebase. Includes Cocoapods, Google Maps, GPS Location, notifications, background location tracking, In-App purchases, web-scraping, networking, persistent storage, CommonFlow

Notifications You must be signed in to change notification settings

realityexpander/FredsRoadtripStoryteller

Repository files navigation

image

Fred's Roadtrip Storyteller

Listen to historical markers as you travel - Learn about local history as you drive.

  • KMP (Kotlin Multi-Platform) Compose-based Proof-of-concept experimental app using Google Maps for iOS and Android.
  • Pure Kotlin App using SHARED core and SHARED Compose based UI, running in native Kotlin.

Kotlin badge-kmp badge-kmp badge-android badge-ios

YouTube series following the development of the app:

image

YouTube Video Views

Assets

Screen Shots

Android Screenshots

image image image image image image image image image image

iOS Screenshots

note: screenshots may differ slightly from current version

image image image image image image image image image image image

External Locations for Promoting Project

Application Architecture

Developer notes

INSTALLATION

  • Secrets Files

    • Check the *.example files for proper placement
    • Must create AppSecrets.plist from within Xcode - in password vault, for google maps account ID's.
    • Can get google-services.json from Google Cloud Console for google maps account ID's.
  • Add to local.properties file located in the root directory (create if it doesn't exist):

    • MAPS_API_KEY=YOUR_KEY where YOUR_KEY is your key from previous step;
    • sdk.dir=YOUR_SDK_PATH where YOUR_SDK_PATH is a path to Android SDK in your system.
  • From root dir, must run ./gradlew :shared:generateDummyFramework.

  • Must run pod update then pod install in the iosApp folder.

  • Must build the Android app before running the iOS app.

  • Open project in IntelliJ IDEA or Android Studio and run the androidApp configuration.

  • Note: There are many spurious warning messages from the AS IDE and pop-up warnings.

    • It seems these can be safely ignored. (I assume they will address these issues in upcoming releases)

Source: (Code snapshot taken 10/8/23) https://github.com/JetBrains/compose-multiplatform/tree/master/examples/cocoapods-ios-example

Latest commit Ran & Built with:

  • Android Studio Koala | 2023.3.2 Canary 2
  • Build #AI-233.14475.28.2332.11606850, built on March 21, 2024
  • Runtime version: 17.0.10+0-17.0.10b1087.21-11572160 aarch64
  • VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
  • macOS 14.4
  • GC: G1 Young Generation, G1 Old Generation
  • Memory: 4096M
  • Cores: 10
  • Metal Rendering is ON
  • Registry:
  • ide.tooltip.initialDelay=812
  • ide.browser.jcef.gpu.disable=true
  • debugger.new.tool.window.layout=true
  • analyze.exceptions.on.the.fly=true
  • ide.experimental.ui=true
  • Non-Bundled Plugins:
  • com.c5inco.modifiers (1.0.15)
  • dev.j-a.swift (0.21.0.336-233)
  • wu.seal.tool.jsontokotlin (3.7.4)
  • idea.plugin.protoeditor (233.13135.65)
  • com.wakatime.intellij.plugin (14.3.11)
  • com.github.airsaid.androidlocalize (3.0.0)
  • DBN (3.4.3073.0)
  • net.seesharpsoft.intellij.plugins.csv (3.3.0-233)
  • com.jetbrains.kmm (0.8.2(233)-8)
  • com.squareup.sqldelight (2.0.1)
  • com.developerphil.adbidea (1.6.15)
  • org.jetbrains.compose.desktop.ide (1.6.1)
  • by.overpass.svg-to-compose-intellij (0.14)
  • com.github.copilot (1.5.0.5148)
  • mobi.hsz.idea.gitignore (4.5.2)
  • com.abeade.plugin.figma.import (1.0.8)

Code style

KMP Stuff

Android

iOS

-[Solved] iOS 17 MapKit: How to use Map(selection:)? -https://www.hackingwithswift.com/forums/swiftui/ios-17-mapkit-how-to-use-map-selection/22886

https://www.hackingwithswift.com/books/ios-swiftui/integrating-mapkit-with-swiftui

Dev notes

Asset links

Potential app names:

icons: https://www.google.com/search?q=flat+icons+navigation&sca_esv=585465592&tbm=isch&sxsrf=AM9HkKkbHZOj7DIYI42VD56hpTfPgmYrYQ:1701032930698&source=lnms&sa=X&ved=2ahUKEwj_kte8yeKCAxVQIEQIHeeIDDsQ_AUoAXoECAIQAw&biw=1622&bih=1050&dpr=2#imgrc=Tx7XOXuIaxmJtM

Play store badge generator: https://play.google.com/intl/en_us/badges/

Privacy Policy: https://www.privacypolicygenerator.info/ https://www.privacypolicygenerator.info/download.php?lang=en&token=dhslNflkEHizHHbsBssrE8zM1p5AXwnR

Firebase console: https://console.firebase.google.com/u/0/project/talkingmarkers/overview

Photo editors

Original Readme:

Compose Multiplatform iOS CocoaPods example

This example showcases using Kotlin Multiplatform shared module in Swift as a CocoaPods framework.

The official Kotlin documentation provides more information on working with CocoaPods:

Setting up your development environment

To setup the environment, please consult these instructions.

How to run

Choose a run configuration for an appropriate target in IDE and run it.

run-configurations.png

About

Hear local historical markers as you travel on your road-trip. 100% Shared Compose UI, Kotlin native cross-platform codebase. Includes Cocoapods, Google Maps, GPS Location, notifications, background location tracking, In-App purchases, web-scraping, networking, persistent storage, CommonFlow

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published