Real life Kotlin Multiplatform project with an iOS application developed in Swift with SwiftUI, an Android application developed in Kotlin with Jetpack Compose and a backed in Kotlin hosted on AppEngine.

Last update: Jun 15, 2022

Conferences4Hall

Real life Kotlin Multiplatform project with an iOS application developed in Swift with SwiftUI, an Android application developed in Kotlin with Jetpack Compose and a backed in Kotlin hosted on AppEngine.

Features

  • Create the agenda of your conference, optionally from Conference Hall
  • Fetch your partners from CMS4Partners
  • Create your feedback forms to OpenFeedback.io
  • Import a participant ticket from BilletWeb
  • Networking space which respect privacy from mobile to mobile
  • Mobile application for Android and iOS

Build With

  • Kotlin - First class and official programming language for Android development
  • Jetpack Compose - Modern toolkit for building native UI
  • Accompanist - Collection of extension libraries for Jetpack Compose
  • Coil - Media management and image loading framework for Android
  • ViewModel - Stores UI-related data that isn't destroyed on UI changes
  • Navigation Compose - Allow users to navigate across, into, and back out from the different pieces of content within your app
  • Swift - First class and official programming language for iOS development
  • SwiftUI - Build apps across all Apple platforms with Swift
  • Kotlin Coroutines - Light-weight threads
  • kotlinx.serialization - Kotlin Multiplatform / multi format serialization
  • SQLDelight - Generates typesafe Kotlin APIs from SQL
  • Multiplatform Settings - Kotlin Multiplatform library for saving simple key-value data
  • ktor - Client to make HTTP request and HTTP server routing
  • Firestore - JVM client to make request on Firestore
  • Storage - JVM client to make request on Storage

Architecture

Kotlin Multiplatform project where :androidApp and :iosApp share the same codebase for the business logic (with :shared module). :backend and :shared modules share the same models due to :models module and avoid any errors in the parsing of backend responses.

flowchart LR
    :androidApp --> :shared
    :iosApp --> :shared
    :shared --> :models
    :backend --> :models

Testing

Running in local

Start firebase emulators inside a terminal with Firestore service.

firebase login # If you are not yet logged
firebase emulators:start --project $RANDOM_FIREBASE_PROJECT_ID

Start appengine server inside another terminal to interact with the local instance of your Firebase.

# Export credential of a random GCP account.
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json
./gradlew :backend:installDist && ./backend/build/install/backend/bin/backend

Now, you can start to interact with the backend.

Deploy in GCP

# If you are not yet logged
gcloud auth login
gcloud config set project $PROJECT_ID
# Deploy in production
./gradlew :backend:appengineDeploy

References

License

Copyright 2022 Gérard Paligot.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

GitHub

https://github.com/GerardPaligot/conferences4hall
You might also like...

Library to use Kotlin Coroutines from Swift code in KMP apps

KMP-NativeCoroutines A library to use Kotlin Coroutines from Swift code in KMP apps. Flows Kotlin Create an extension property to expose the Flow as a

Jun 22, 2022

Swift-friendly api generator for Kotlin/Native frameworks

Swift-friendly api generator for Kotlin/Native frameworks

MOKO KSwift KSwift it's gradle plugin for generation Swift-friendly API for Kotlin/Native framework. Kotlin sealed interface/class to Swift enum Kotli

Jun 22, 2022

A Kotlin Multiplatform Project using TMDB Api. Currently supports Android,iOS,Desktop and web platforms

A Kotlin Multiplatform Project using TMDB Api. Currently supports Android,iOS,Desktop and web platforms

A Kotlin Multiplatform Project using TMDB Api(https://www.themoviedb.org/). Currently this project is implemented in following platforms Andr

Jun 11, 2022

Kstr is a set of helpful methods library for Kotlin intended for make the developer life easier.

Kstr is a set of helpful methods library for Kotlin intended for make the developer life easier. Kstr uses the powerful feature of extension func

Nov 3, 2021

Schedule-4-me is an opinionated to-do app to bring chaos to your life.

Schedule-4-me Have you ever had too much control in your life? Ever find yourself stuck at home repeating the same motions over and over again? Well f

Jan 16, 2022

A Bluetooth kotlin multiplatform "Cross-Platform" library for iOS and Android

Blue-Falcon A Bluetooth "Cross Platform" Kotlin Multiplatform library for iOS, Android, MacOS, Raspberry Pi and Javascript. Bluetooth in general has t

Jun 16, 2022

Dependency Injection library for Kotlin Multiplatform, support iOS and Android

Multiplatform-DI library for Kotlin Multiplatform Lightweight dependency injection framework for Kotlin Multiplatform application Dependency injection

Apr 23, 2022

Simple Kotlin Multiplatform PrayerTimes App for iOS and Android

Kotlin Multiplatform ___ _______ ___ / _ \_______ ___ _____ ___/_ __(_)_ _ ___ ___ / _ | __

Jan 29, 2022

Location Service Manager for Kotlin Multiplatform Mobile iOS and android

Location Service Manager for Kotlin Multiplatform Mobile iOS and android

Location Service Manager for Kotlin Multiplatform Mobile iOS and android Features Provides simple permission settings Dramatically reduce the amount o

May 17, 2022
Comments
  • 1. feat(android): ProfileInput UI changes

    • Content padding
    • From TextField to OutlinedTextField (arguable)
    • Enable/disable button depending on form fields

    | Before | After | | ------------- | ------------- | | | | | | |

    Reviewed by BapNesS at 2022-06-19 18:46
  • 2. feat(android): Request permission screen improvement

    • Small improvement of request permission screens : outlined button, wording, spacing, margin, …
    • Extract composable to enable Previews

    Result without external margin: image

    Reviewed by BapNesS at 2022-06-07 12:30
  • 3. Add a screen to display the lunch menu of the event

    Lunch bag Gourmande Wrap dinde, celeri, salade frisée, Cheddar Salade de concombre, chèvre frais, menthe Riz au lait à la framboise

    Lunch bag de la mer Faluche au thon façon bagnat Haricot vert au thon Mousse au deux chocolats

    Lunch bag végétarienne Ch'ti faluche, mousse betterave, endive, brique du nord, fromage frais Carotte - orange - choux Eclair passion

    Reviewed by GerardPaligot at 2022-05-20 19:35
  • 4. Return 304 http status code when the agenda doesn't change

    • /agenda need to return the version of the agenda (like the last update timestamp)
    • Clients need to send a version name in a header (but can be optional, in this case, 304 won't be sent)
    • If the version name is the same in database, we return 304. Otherwise, we return the full agenda
    Reviewed by GerardPaligot at 2022-06-19 17:54
KmMScientists is a Kotlin multiplatform app with swift ui, jetpack compose, koin and realm
KmMScientists is a Kotlin multiplatform app with swift ui, jetpack compose, koin and realm

KmMScientists KmMScientists is a Kotlin multiplatform app built with swift ui, jetpack compose, koin and realm. Whats Shared? Local Data Persistence w

May 21, 2022
Opinionated Redux-like implementation backed by Kotlin Coroutines and Kotlin Multiplatform Mobile

CoRed CoRed is Redux-like implementation that maintains the benefits of Redux's core idea without the boilerplate. No more action types, action creato

Feb 27, 2022
Server Sent Events (SSE) client multiplatform library made with Kotlin and backed by coroutines

OkSSE OkSSE is an client for Server Sent events protocol written in Kotlin Multiplatform. The implementation is written according to W3C Recommendatio

May 14, 2022
GraphQL based Jetpack Compose and SwiftUI Kotlin Multiplatform sample
GraphQL based Jetpack Compose and SwiftUI Kotlin Multiplatform sample

GraphQL based Jetpack Compose and SwiftUI Kotlin Multiplatform sample

May 29, 2022
Kotlin Multiplatform lifecycle-aware business logic components (aka BLoCs) with routing functionality and pluggable UI (Jetpack Compose, SwiftUI, JS React, etc.), inspired by Badoos RIBs fork of the Uber RIBs framework
Kotlin Multiplatform lifecycle-aware business logic components (aka BLoCs) with routing functionality and pluggable UI (Jetpack Compose, SwiftUI, JS React, etc.), inspired by Badoos RIBs fork of the Uber RIBs framework

Decompose Please see the project website for documentation and APIs. Decompose is a Kotlin Multiplatform library for breaking down your code into life

Jun 21, 2022
Kotlin Multiplatform Mobile + Mobile Declarative UI Framework (Jetpack Compose and SwiftUI)

Kotlin Multiplatform Mobile + Mobile Declarative UI Framework (Jetpack Compose and SwiftUI)

Dec 15, 2021
MangaKu App Powered by Kotlin Multiplatform Mobile, Jetpack Compose, and SwiftUI
MangaKu App Powered by Kotlin Multiplatform Mobile, Jetpack Compose, and SwiftUI

MangaKu ?? Introduction MangaKu App Powered by Kotlin Multiplatform Mobile, Jetpack Compose, and SwiftUI Module core: data and domain layer iosApp: io

Jun 25, 2022
Image loading for Android backed by Kotlin Coroutines.

An image loading library for Android backed by Kotlin Coroutines. Coil is: Fast: Coil performs a number of optimizations including memory and disk cac

Jun 23, 2022
D-KMP Architecture official sample: it uses a shared KMP ViewModel and Navigation for Compose and SwiftUI apps.
D-KMP Architecture official sample: it uses a shared KMP ViewModel and Navigation for Compose and SwiftUI apps.

D-KMP architecture - official sample This is the official sample of the D-KMP architecture, presenting a simple master/detail app, for Android, iOS an

Jun 23, 2022
Kotlin and Java API for generating .swift source files.

SwiftPoet SwiftPoet is a Kotlin and Java API for generating .swift source files. Source file generation can be useful when doing things such as annota

May 27, 2022