GithubHelp home page GithubHelp logo

touchlab / droidconkotlin Goto Github PK

View Code? Open in Web Editor NEW
1.0K 40.0 79.0 112.78 MB

Kotlin Multiplatfom app for Droidcon Events

Home Page: https://touchlab.co

License: Apache License 2.0

Swift 19.65% Kotlin 77.27% Ruby 0.06% Python 0.99% HTML 2.03%
kotlin-multiplatform kotlin-native droidcon

droidconkotlin's Introduction

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.

Subscribe!

We build solutions that get teams started smoothly with Kotlin Multiplatform and ensure their success in production. Join our community to learn how your peers are adopting KMM. Sign up 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.

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

droidconkotlin's People

Contributors

ben-whit-ley avatar chislett avatar findjigar avatar julia-brightify avatar juliajakubcova avatar kaeawc avatar kevinschildhorn avatar kpgalligan avatar nicktodd12 avatar nightlynexus avatar philip-han avatar psh avatar rayworks avatar russhwolf avatar samhill303 avatar serbelga avatar tadeaskriz avatar touchlab-faktory[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

droidconkotlin's Issues

Fragment navigation transition

Add slide transition when going from schedule to session, and session to speaker. iOS is doing this now, if you need a model.

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?

Add "my schedule" to android

Android currently shows the full schedule, but needs a "my schedule" view. Wire the params to the fragment and pass into the model data pipeline.

Port speaker view

The layout and logic for the speaker view should be ported over. In the original app, we have a different endpoint to update speaker info, but it really doesn't change that often, so we can skip that. Just pull speaker info from the db and assume updates will be recent enough from global data load.

Unsupported format version '0.3' specified in module metadata

When I open the project in android studio 3.3 canary 6 with gradle version 3.3.0-alpha06, I am facing this error "Unsupported format version '0.3' specified in module metadata. This version of Gradle supports format version 0.4 only". The project doesn't sync and build.

Add analytics events

The most important event is the rsvp event. We want to write whenever an rsvp is performed. Should write event (rsvp/unrsvp) and the session id. We'll use that data to gauge interest in sessions. Other events can be added later, but we're not super interested in actually tracking anything.

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

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(...)

App routinely forgets "My Agenda"

I'm at Droidcon right now, and am trying to track my planned schedule in this app. I am using the "My Agenda" feature, and have marked sessions and workshops for all three days.

The app has forgotten my schedule twice already, and I have to find the sessions again, so I can add them to "My Agenda" again.

I do not know what causes this, but it could be related to internet connectivity problems. I am using this app on a phone without a SIM card (--> phone has no internet if it isn't connected to WiFi).

Phone: Samsung Galaxy A71, running Android 11 / OneUI 3.1 with the August 2021 security patch.

Add Sponsors view

This involves both the data download and the view copies. The views can all come from the existing droidcon app.

Gradle build fails

Hello,
upon running ./gradlew build, I get this error:

Session Block Padding

On Android the lists have zero padding/margins and therefore the items all run together, making it hard to see relevant information at a glance.

Screenshot

Move event detail to a new activity

Currently EventFragment is opened in the MainActivity, but to make nav simpler, I think we should move this to a new activity. The app bar should show a back button, and there should be no bottom bar.

Splash screen

Splash screen showing conference logo and basic "brought to you by" info. Needs design first.

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

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?

Task :sessionize:lib:testDebugUnitTest FAILED

I cloned the repository, opened the project with Android Studio and ran the command ./gradlew build. The build failed with this message:

Task :sessionize:lib:testDebugUnitTest FAILED
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.robolectric.util.ReflectionHelpers$8 (file:/Users/alan/.gradle/caches/modules-2/files-2.1/org.robolectric/shadowapi/4.0/c917fd60b3b82353fbfdf36dc8008af489b8343e/shadowapi-4.0.jar) to method java.lang.ClassLoader.getPackage(java.lang.String)
WARNING: Please consider reporting this to the maintainers of org.robolectric.util.ReflectionHelpers$8
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

co.touchlab.sessionize.StaticFileLoaderTestJVM > testSpeakers FAILED
    java.lang.RuntimeException
        Caused by: java.lang.RuntimeException
            Caused by: java.lang.IllegalAccessException

co.touchlab.sessionize.StaticFileLoaderTestJVM > testAbout FAILED
    java.lang.RuntimeException
        Caused by: java.lang.RuntimeException
            Caused by: java.lang.IllegalAccessException
...
21 tests completed, 21 failed

FAILURE: Build failed with an exception.

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

not able to resolve, co.touchlab.firebase.

Even after taking the latest pull or cloning, upgrading or downgrading the "co.touchlab:firestore", on master branch, i am not able to resolve the issue,

import co.touchlab.firebase.firestore.DocumentSnapshot
import co.touchlab.firebase.firestore.QuerySnapshot
import co.touchlab.firebase.firestore.Source
import co.touchlab.firebase.firestore.TaskData
import co.touchlab.firebase.firestore.collection
import co.touchlab.firebase.firestore.data_
import co.touchlab.firebase.firestore.documents_
import co.touchlab.firebase.firestore.getFirebaseInstance
import co.touchlab.firebase.firestore.get_
import co.touchlab.firebase.firestore.id
import co.touchlab.firebase.firestore.orderBy

'firestoreKmp' : '0.2.7-mt2',
'firestoreKmp' : "co.touchlab:firestore:${versions.firestoreKmp}"

In Lib gradle,
implementation deps.firebase.firestoreKmp

CPU was spinning heavily on iOS

iOS app uses a lot of CPU at rest. Not sure if that's a Compose thing or not (experimental, so if so lets not worry about it...
Screen Shot 2022-08-18 at 6 49 46 PM
)

Notification when session is starting soon

This has traditionally been difficult because you have to get the time zones correct and provide a way to enable/disable. If anybody wants to give it a shot, would love to have it. Just Android for now.

Support for Kotlin 1.3.41

Hey guys, this app is a great example of how a K/Mpp project can be structured and as such I guess that it's used by many people as a kind of a boilerplate project. And as such, it would be great if it could support Kotlin 1.3.41.

Include regular sqldelight

This won't matter until there's a release candidate, but we should replace the fork of sqldelight with the published version when it happens.

Apply style from zepplin design

The zepplin design has the basic layout for the schedule screen, as well as a style guide. Not sure of the best way to approach this, but ultimately I'd like the UI components to be from the material components library, and the style to be done in that context. I did the material components tutorial and it seems like we should be able to have a pretty minimal style definition.

Add network pull

Currently we hard code the data into the app directly. We should also pull from the network on startup, and possibly at other points. Wire in the networking dependency and calls to handle this. Both platforms.

Add analytics endpoints

Add firebase analytics clients to both Android and iOS clients, and have the actual method 'logEvent' write to them.

Prompt for feedback

Need some thoughts on what this would look like, then what to capture and where to put it. We do run a simple heroku web server that can probably accept data push, but if there are services or simpler back ends, would consider that. This will very likely not make it in for this year, but will do if we can.

Wire bottom nav

Bottom nav currently doesn't do anything. Should be wired to showing root level fragments.

About Screen

Create about screen. Can just have similar look from earlier apps.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.