Kotlin Multiplatfom app for Droidcon Events

Overview

Sessionize/Droidcon Mobile Clients

General Info

This project has a pair of native mobile applications backed by the Sessionize data api for use in events hosted by the Sessionize web application. These are specifically for Droidcon events, but can be forked and customized for anything run on Sessionize.

Building

The apps need a Firebase account set up to run. You'll need to get the google-services.json and put it in android/google-services.json for Android, and the GoogleService-Info.plist and put that in ios/Droidcon/Droidcon/GoogleService-Info.plist for iOS.

Compose UI for both!

We're running a very early version of Compose UI for iOS as the iOS interface. It mostly shares the screen code with the Android app. While Native Compose UI is obviously experimental, it works surprisingly well.

Check out the blog post

Media

Blog posts and videos ->

About

Sessionize/Droidcon brought to you by...

Touchlab Logo

Comments
  • Question: Is there any reason why the :sessionize:app module is in Multiplatform?

    Question: Is there any reason why the :sessionize:app module is in Multiplatform?

    Just wondering why the sessionize module was configured as a Multiplatform Module. It seems to me that it could simply be a normal android application. Is there any special reason for this?

    opened by archiegq21 6
  • Unable to `./gradlew build`

    Unable to `./gradlew build`

    When trying to runs with ./gradlew build (based on IOSDEV.md steps no. 5), the ktlint works as expected (failing if there's file violate the rules), due to a lot of file violated, I'm commenting the ktlint plugin, and re-run the ./gradlew build afterwards following error happened:

    > Task :shared-ui:compileKotlinIosSimulatorArm64 FAILED
    e: /root/DroidconKotlin-Mobile/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/PlatformSpecificSettings.kt: (7, 21): Expected function 'PlatformSpecificSettingsView' has no actual declaration in module <Droidcon:shared-ui> for Native
    e: /root/DroidconKotlin-Mobile/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/util/Dialog.kt: (6, 21): Expected function 'Dialog' has no actual declaration in module <Droidcon:shared-ui> for Native
    e: /root/DroidconKotlin-Mobile/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/util/LocalImage.kt: (7, 21): Expected function '__LocalImage' has no actual declaration in module <Droidcon:shared-ui> for Native
    e: /root/DroidconKotlin-Mobile/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/util/NavigationBackPressWrapper.kt: (6, 21): Expected function 'NavigationBackPressWrapper' has no actual declaration in module <Droidcon:shared-ui> for Native
    e: /root/DroidconKotlin-Mobile/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/util/RemoteImage.kt: (7, 21): Expected function '__RemoteImage' has no actual declaration in module <Droidcon:shared-ui> for Native
    
    opened by mochadwi 4
  • [Fix] Session Block

    [Fix] Session Block

    This fixes the padding issues on the session blocks. When you have a time slot with multiple sessions they all ran together. This fixes #160

    | Before | After | | ------------- | ------------- | | Screenshot_before | Screenshot_after |

    opened by hopeman15 4
  • Can't find SQLiter dependency

    Can't find SQLiter dependency

    Hi

    I am trying to build and run the iOS app, and got two errors on running ./gradlew build. The first related to failure to find sessionize/app/release.jks, so I created that.

    Following that was a failure to find co.touchlab.sqliter:sqliter:0.1.1-k1.3.0-a6, this could not be found in any of the repositories.

    I assume this needs to succeed before I can build the iOS app in Xcode, because the Run Script phase there is looking for the folder sessionize/lib/build/xcode-frameworks.

    Is there a missing repository for sqliter library?

    opened by dhoskins 3
  • Building sqldelight

    Building sqldelight

    Hello, whilst building the android project, I get this error:

    Could not resolve com.squareup.sqldelight:gradle-plugin:1.0.0-kn0.9.1-a2. > Could not parse module metadata https://dl.bintray.com/touchlabpublic/kotlin/com/squareup/sqldelight/gradle-plugin/1.0.0-kn0.9.1-a2/gradle-plugin-1.0.0-kn0.9.1-a2.module > Unsupported format version '0.3' specified in module metadata. This version of Gradle supports format version 0.4 only.

    I ran the command ./gradlew generateSqlDelightInterface too.

    Any ideas how to solve it?

    opened by IgorGanapolsky 3
  • Scroll position after rsvp click

    Scroll position after rsvp click

    Scroll sessions list, click into a session, click back. No problem. Click into a session, click rsvp, then back, and we lose position.

    I suspects the database flow updating data, and that wipes the state.

    Tested on ios

    opened by kpgalligan 2
  • Keep getting notifications

    Keep getting notifications

    When I restart the phone, or turn internet on/off, not sure, but I've seen multiple notifications for all my talks come up days after the event. This happened about 3-4 times since 29 Oct.

    Here's the last instance:

    Screenshot_20211224-203811.png

    opened by TWiStErRob 2
  • Async way to getData from Firestore

    Async way to getData from Firestore

    Hi, first of all thank you for this library!

    But I have a question, is there any way to get data from Firestore without callbacks? Are you thinking to develop it?

    getFirebaseInstance()
                    .collection("sponsors-sf-2019")
                    .orderBy("displayOrder")
                    .get_()
                    .addListeners(...)
    
    opened by jarroyoesp 2
  • Doesn’t remember scroll position in tabs when navigating

    Doesn’t remember scroll position in tabs when navigating

    Assume this is when selecting different bottom nav, going back to the schedule resets all. Should probably implement a more standard nav control. Possibly try out the jetpack nav thing?

    opened by kpgalligan 2
  • Animate fragment transaction between schedule and session

    Animate fragment transaction between schedule and session

    Add a new navigateTo function that allows for transition animations. Use the new navigateTo function when clicking a session from schedule.

    Fixes #15

    session_anim

    opened by csdodd 2
  • Discoverability

    Discoverability

    • Please add the "Droidcon" topic to this repo. https://github.com/topics/droidcon
    • Looks like https://github.com/droidcon/conference-mobile-app should be archived and README.md and project description updated to point here.
    opened by TWiStErRob 1
  • Save RSVP's

    Save RSVP's

    I'd like to see if we can save our rsvp's to a user account so if you log in on a different device, you don't lose your settings.

    I think the simplest solution would be to:

    1. Add login with gmail to the Droidcon app
    2. With that user info, push a list of session id's to firebase/firestore. We can alternatively do this on our backend server. To discuss.
    3. Whatever place we keep the list, it should be a list and a "last update" timestamp. On app start, if logged in, check and see if that timestamp is newer than our last sync (we should keep last sync in internal settings). If newer, update our local values.
    4. As the user is selecting sessions, we should push values to our central store (but also update the local last sync value so we don't overwrite our own changes).

    It's a very basic sync algorithm. We can iterate on it a bit if needed. It's OK if we don't get perfection. This should be relatively rare.

    opened by samhill303 0
  • Admin Push Messages

    Admin Push Messages

    *copied from internal tracker Old versions of the app used to be able to listen for events sent from Firebase cloud messaging. I'd like to add that back into the app. The messaging should only really do 2 things.

    1. Tell the app to update the schedule. We may have made schedule changes on the sessionize server and we want the app to run the update now. This won't show anything to the user. It'll just tell the app to do something.

    2. Admin message. Just a text string that will show up in the app. Just in case there's some announcement the conference organizer would like to send out.

    opened by samhill303 0
  • Automatically Update Local Schedule File

    Automatically Update Local Schedule File

    We manually create local files which are bundled with the apps and used until the remote schedule can be loaded. Right now those files are created manually with a script. It could be helpful to automate this as part of the build process.

    Initial idea, open to adjustments as I'm not sure what will be ideal:

    • Create a gradle task which runs the update script
    • Make build tasks depend on new gradle task
    • Add the ability to skip this task if we don't want the file to update (if we are using test schedules for example)

    Is this too often? do we want to do it only before publish? Are there any risks?

    opened by samhill303 0
Owner
Touchlab
Kotlin Multiplatform Mobile Development
Touchlab
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

BioWink GmbH 39 Nov 4, 2022
Android calendar library provides easy to use widget with events

Kotlin-AgendaCalendarView Kotlin-AgendaCalendarView based on AgendaCalendarView Kotlin-AgendaCalendarView is a awesome calendar widget with a list of

Ognev Zair 88 Nov 21, 2022
Notes-App-Kotlin - Notes App Built Using Kotlin

Notes-App-Kotlin Splash Screen Home Page Adding New Notes Filter Feature Search

Priyanka 4 Oct 2, 2022
An app architecture for Kotlin/Native on Android/iOS. Use Kotlin Multiplatform Mobile.

An app architecture for Kotlin/Native on Android/iOS. Use Kotlin Multiplatform Mobile. 项目架构主要分为原生系统层、Android/iOS业务SDK层、KMM SDK层、KMM业务逻辑SDK层、iOS sdkfra

libill 4 Nov 20, 2022
RoomJetpackCompose is an app written in Kotlin and shows a simple solution to perform CRUD operations in the Room database using Kotlin Flow in clean architecture.

RoomJetpackCompose is an app written in Kotlin and shows a simple solution to perform CRUD operations in the Room database using Kotlin Flow in clean architecture.

Alex 27 Jan 1, 2023
Run Kotlin/JS libraries in Kotlin/JVM and Kotlin/Native programs

Zipline This library streamlines using Kotlin/JS libraries from Kotlin/JVM and Kotlin/Native programs. It makes it possible to do continuous deploymen

Cash App 1.5k Dec 30, 2022
A somewhat copy past of Jetbrain's code from the kotlin plugin repo to make it humanly possible to test Intellij IDEA kotlin plugins that work on kotlin

A somewhat copy past of Jetbrain's code from the kotlin plugin repo to make it humanly possible to test Intellij IDEA kotlin plugins that work on kotlin

common sense OSS 0 Jan 20, 2022
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.

Conferences4Hall Real life Kotlin Multiplatform project with an iOS application developed in Swift with SwiftUI, an Android application developed in K

Gérard Paligot 98 Dec 15, 2022
Name of your app is an android app that allows building a todo list

Project 1 - SimpleToDo Name of your app is an android app that allows building a todo list and basic todo items management functionality including add

Javier Nazario 0 Nov 23, 2021
Crunch-Mobile - A Food Delivery Mobile App which uses Modern App Architecture Pattern, Firebase And a Simple Restful Api

Crunch-Mobile This is a Food Delivery Mobile App which uses Modern App Architect

Bright Ugwu 1 Jan 1, 2022
Matches-simulator-app - App Android Nativo de Simulação de Partidas

Matches Simulator App App Android Nativo de Simulação de Partidas. Este repositório foi organizado em algumas branches que representam as implementaçõ

DIO 127 Dec 28, 2022
MVIExample - A sample app showing how to build an app using the MVI architecture pattern

MVIExample A sample app showing how to build an app using the MVI architecture p

Yasser AKBBACH 0 Jan 8, 2022
This is a demo android app representing implementation of SE principles in android app development

Articles Demo This repository contains a sample Android App that shows most popular articles data from NY Times API. This is a sample app that shows h

Waesem Abbas 2 Jan 20, 2022
Matches-simulator-app - App Android Nativo de Simulação de Partidas de Futebol

Matches Simulator App App Android Nativo de Simulação de Partidas de Futebol - E

Glaucio Coutinho da Silva 1 Jan 18, 2022
A beautiful Fashion Store like Android App Mock built on Jetpack Compose with compose navigation, hilt, dark theme support and google's app architecture found on uplabs Here

A beautiful Fashion Store like Android App Mock built on Jetpack Compose with compose navigation, hilt, dark theme support and google's app architecture found on uplabs Here

Puncz 87 Nov 30, 2022
Android To-Do MVVM Architecture App written in Kotlin.(ViewModel, ROOM, Livedata, Coroutines)

MVVM-To-Do-App A To-Do application written in kotlin using Android Architectural components What's new? Room + Coroutines - Upgraded Room to v2.1. Roo

Naveen T P 77 Dec 8, 2022
Android News Reader app. Kotlin Coroutines, Retrofit and Realm

News Reader Android News Reader app Code that follows Packt Publishing Kotlin in Practice Video Course Example of Kotlin Coroutine usage, with Realm a

Marko Devcic 22 Oct 3, 2022
Open source Crypto Currency Tracker Android App made fully in Kotlin

CoinBit CoinBit is a beautiful CryptoCurrency app, completely open sourced and 100% in kotlin. It supports following features Track prices of over 300

Pranay Airan 50 Dec 5, 2022