Kotlin Multiplatfom app for Droidcon Events

Overview

Sessionize/Droidcon Mobile Clients

Build Status

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.

Touchlab's Hiring!

We're looking for a Mobile Developer, with Android/Kotlin experience, who is eager to dive into Kotlin Multiplatform Mobile (KMM) development. Come join the remote-first team putting KMM in production. More info here.

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.

Libraries

Kotlin multiplatform libraries used:

Media

Medium - Droidcon NYC App!

More Media ->

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
  • Update Compose to 1.2.1 and Kotlin to 1.7.20

    Update Compose to 1.2.1 and Kotlin to 1.7.20

    JB's Compose version has been updated to 1.2.1 (https://github.com/JetBrains/compose-jb/releases/tag/v1.2.1), which supports Kotlin 1.7.20. We should update the app and see how Compose performs.

    Once updated, we should try it out on devices to see if there are performance improvements, and look at the binary size to see if that has improved.

    opened by kpgalligan 1
  • DroidconKotlin - 1.8 Release Testing

    DroidconKotlin - 1.8 Release Testing

    Switch from RC to official release, reverify that 1.8 still works and get the branch ready to merge

    Perform the list of sanity checks on your work projects (it mostly consists of basic actions).

    • Compile your project with a current Kotlin version.
    • Check the highlighting in different IDE modules.
    • Compile the project with the EAP Kotlin version and install the EAP IDE plugin.
    • Verify that the project re-imported successfully.
    • Check that highlighting from p.2 works not worse than before.
    • Compile the project again and look for new surprising warnings.
    • Change something in the code and check if incremental compilation works.
    • Run your tests with a new Kotlin version.
    • Stop at some well-known piece of code, run the debugger and try stepping.
    • Look for performance issues in compilation, runtime, re-import or IDE behavior.

    Pay additional attention to these features and subsystems if applicable to your use case:

    • Kotlin Gradle plugin: lots of changes in all typical usage scenarios
    • The new Gradle Incremental compilation, which we plan to stabilize soon
    • Expose compiler flags via Gradle lazy properties
    • Ability to not fallback with compiler daemon by default
    • arm64 support for watchOS targets
    • Xcode 14 and new Objective-C frameworks support in Kotlin/Native
    opened by KatieGalvin 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
Kotlin Multiplatform sample with SwiftUI and Compose (Desktop and Android) clients. Heavily inspired by Wordle game.

WordMasterKMP Kotlin Multiplatform sample heavily inspired by Wordle game and also Word Master and wordle-solver samples. The main game logic/state is

John O'Reilly 56 Oct 4, 2022
Kotlin Multiplatform project that gets network data from Food2Fork.ca

Food2Fork Recipe App This is the codebase for a Kotlin Multiplatform Mobile course. Watch the course List to Detail screen Searching Architecture Shar

Mitch Tabian 317 Dec 30, 2022
A Kotlin multiplatform library for building dynamic server-driven UI

Component Box · A Kotlin multiplatform library for building dynamic server-driven UI. Material Component-Based Interoperable Dynamic What You See Is W

Dropbox 216 Dec 31, 2022
React Native Todo List example app which uses Redux for managing app state

react-native-redux-todo-list A sample todo list app developed by using React Native and Redux. How to run the app Install react-native If you don't ha

null 43 Oct 11, 2022
Google-Blogger-iOS-App - Using Google Blogger API to build an iOS app like Medium

Google Blogger iOS App Using Google Blogger API to build an iOS app like Medium!

Ricky Chuang 9 Dec 13, 2022
Codepath-intro-prework - Hello World iOS App | Prework Project for CodePath Intro to Mobile App Development

Hello World iOS App App Description Prework Project for CodePath Intro to Mobile

null 0 Jan 25, 2022
Turn your Swift data model into a working CRUD app.

Model2App is a simple library that lets you quickly generate a CRUD iOS app based on just a data model defined in Swift. (CRUD - Create Read Update De

Q Mobile 132 Dec 22, 2022
an onboarding app built in SwiftUI

hello hello is application onboarding macOS devices. Inspired by Kandji's Liftoff Logo created with Type with Pride font family Warning DO NOT USE THI

Erik Gomez 118 Dec 26, 2022
LinearMouse - A minimal app to get rid of mouse acceleration on macOS

LinearMouse A minimal app to get rid of mouse acceleration on macOS. Features Reverse the direction of scrolling. Linear scrolling (disable scrolling

Jiahao Lu 1.6k Jan 7, 2023
A template Vapor app with nginx frontend.

This is an example Vapor app. It contains the app itself, as well as surrounding components (Postgres database, nginx frontend for providing secure connection), all runnable out of the box with docker compose. It is a good starting point for Vapor development of an API server which you could access from macOS and iOS clients.

Jaanus Kase 5 Jul 1, 2022
Snapify is an opensource tweak to make the messages app behave like Snapchat's sending system

Snapify A simple tweak to remove the send button in messages, replaced by keyboard key What is Snapify? Snapify is an opensource tweak to make the mes

Hallie 4 Oct 29, 2021
Control Nvidia jetbot which is based on Jetson Nano via iOS app

jetbot-remote-control This is very basic example project which control Nvidia Jetbot remotely via iOS app Based on jetbot of Nvidia, adding sample sou

Nguyen Quoc Thanh 13 Oct 6, 2021
Turbo-iOS base project that's entirely driven from your backend Rails app.

Turbo-iOS base project that's entirely driven from your backend Rails app.

Dale Zak 109 Dec 11, 2022
macOS status bar app to automatically fetch Git repositories.

Fetcher About macOS status bar app to automatically fetch Git repositories. License Project is released under the terms of the MIT License. Repository

JD Gadina 5 Jan 3, 2023
An iOS app/Safari extension to automagically redirect AMP links to their normal counterpart. Comes with a trusty dog.

Amplosion ⚡️ Amplosion is an iOS 15 and greater app that automagically redirects AMP links to their normal counterpart. AMP links can be super annoyin

Michael Pauley 31 Nov 20, 2022
Static Native Template and Dynamic Styling without any other app release

FileManager Project Students and Freshers, Good opportunity for you to learn and contribute in this project. Here you would learn how you can change t

Naveen Chauhan 3 Nov 30, 2021
Restoration tracking & research app for iOS

Tugz Restoration tracking & research app for iOS For Android check out Tea Time Logger Several discussions on the restoration subreddit the idea of a

null 2 Apr 20, 2022
This is a simple mobile app which is connect to the Twitter API

Project 3 - My Twitter My Twitter is a basic twitter app to read your tweets. Time spent on two parts: 8.5 hours spent in total Twitter - Part II This

Alem 1 Dec 14, 2022
A sample app that implements MVVM architecture using Swift, ViewModel, Alamofire

MVVM Architecture Android: Template This repository contains a sample app that implements MVVM architecture using Swift, ViewModel, Alamofire, and etc

null 0 Oct 19, 2021