Coder Social home page Coder Social logo

kotlinconf-app's Introduction

JetBrains incubator project

KotlinConf App

This is the official KotlinConf App! We hope you enjoy(ed) the conference and sessions. This repository contains the source code of the application.

All pieces of the application are implemented in Kotlin. Backend, frontend and mobile apps are Kotlin applications. Yes, Kotlin is powering all parts of the story. Did I already say that? Okay, let's get to the details:

Server

KotlinConf App is connecting to the server running in the cloud to get information about sessions, speakers, favorites and votes. It is developed using Ktor, an asynchronous Kotlin web framework.

The server polls Sessionize service, which is used for planning the conference. Once in a while, it connects to APIs to get the latest information about sessions, speakers, and timeline. It then augments and republishes this information for clients to consume. It also provides a couple of extra APIs to save your favorites and accumulate votes.

iOS, Android, Browser and Desktop Applications

All applications are developed within a single codebase using Kotlin Multiplatform technology. The UI is implemented using Compose Multiplatform UI framework.

How to build and run

Prerequisites

  • JDK >= 17
  • Android Studio with Android SDK
  • XCode with iOS SDK
  • Create a file local.properties in the root directory of the project, pointing to your Android SDK installation. On Mac OS, the contents should be sdk.dir=/Users/<your username>/Library/Android/sdk. On other OSes, please adjust accordingly.

Running the Android app

  1. Open the project in Android Studio or JetBrains Fleet and wait until the project finishes loading.
  2. In Android Studio, select the androidApp run configuration from the drop-down list within the toolbar.
  3. Click on the run icon to start the simulator.

Running the iOS

  1. Open the project in Android Studio or JetBrains Fleet and wait until the project finishes loading.
  2. In Android Studio, select the KotlinConf run configuration from the drop-down list within the toolbar.
  3. Click on the run icon to start the simulator.

Running the desktop app

  • Run ./gradlew :shared:run to start the desktop application

Running the backend

  • Run ./gradlew :backend:run to start the server
  • All API will be available at http://0.0.0.0:8080

Running the browser app

  • To run the web app in the browser, run ./gradlew :shared:wasmJsBrowserRun.
  • Open http://localhost:8000 in your browser after build to see the app.

kotlinconf-app's People

Contributors

3flex avatar 4u7 avatar bashor avatar catalina-chioveanu-aexp avatar catalinachioveanu avatar e5l avatar elizarov avatar esiddeveloper avatar hhariri avatar jarekankowski avatar jkutner avatar jsmonk avatar marcinmoskala avatar orangy avatar quasilyte avatar sandwwraith avatar sebastianaigner avatar yanex 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  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

kotlinconf-app's Issues

Can't build iOS app

Hi,

I'm trying to build the iOS app to test and check how Kotlin Native is working. But I'm getting the following error (I just pulled the repo and changed the bundle identifier nothing else).

Ld /Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Products/Debug-iphoneos/konfswift.app/konfswift normal arm64 (in target: konfswift)
cd /Users/sebastiaan/Documents/Kotlin_Native_Projects/KotlinConf/konfios
export IPHONEOS_DEPLOYMENT_TARGET=9.0
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk -L/Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Products/Debug-iphoneos -F/Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Products/Debug-iphoneos -F/Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Products/Debug-iphoneos/DynamicBlurView -F/Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Products/Debug-iphoneos/MBProgressHUD -F/Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Products/Debug-iphoneos/PopupDialog -F/Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Products/Debug-iphoneos/SDWebImage -F/Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Products/Debug-iphoneos/TagListView-ObjC -F/Users/sebastiaan/Documents/Kotlin_Native_Projects/KotlinConf/konfios-framework/build/konan/bin/ios_x64 -F/Users/sebastiaan/Documents/Kotlin_Native_Projects/KotlinConf/konfios/build/konan/bin/xcode -F/Users/sebastiaan/Documents/Kotlin_Native_Projects/KotlinConf/konfios/build/konan/bin/xcode/ios_x64 -filelist /Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Intermediates.noindex/konfswift.build/Debug-iphoneos/konfswift.build/Objects-normal/arm64/konfswift.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -Xlinker -rpath -Xlinker @executable_path/Frameworks -miphoneos-version-min=9.0 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Intermediates.noindex/konfswift.build/Debug-iphoneos/konfswift.build/Objects-normal/arm64/konfswift_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -Xlinker -add_ast_path -Xlinker /Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Intermediates.noindex/konfswift.build/Debug-iphoneos/konfswift.build/Objects-normal/arm64/konfswift.swiftmodule -framework DynamicBlurView -framework MBProgressHUD -framework PopupDialog -framework SDWebImage -framework TagListView_ObjC -framework common -framework Pods_konfswift -framework Pods_konfswift -Xlinker -dependency_info -Xlinker /Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Intermediates.noindex/konfswift.build/Debug-iphoneos/konfswift.build/Objects-normal/arm64/konfswift_dependency_info.dat -o /Users/sebastiaan/Library/Developer/Xcode/DerivedData/konfswift-booxjrfdbmkeptfctzmufoiwywgq/Build/Products/Debug-iphoneos/konfswift.app/konfswift

ld: warning: directory not found for option '-F/Users/sebastiaan/Documents/Kotlin_Native_Projects/KotlinConf/konfios-framework/build/konan/bin/ios_x64'
ld: warning: directory not found for option '-F/Users/sebastiaan/Documents/Kotlin_Native_Projects/KotlinConf/konfios/build/konan/bin/xcode/ios_x64'
ld: warning: ignoring file /Users/sebastiaan/Documents/Kotlin_Native_Projects/KotlinConf/konfios/build/konan/bin/xcode/common.framework/common, file was built for x86_64 which is not the architecture being linked (arm64): /Users/sebastiaan/Documents/Kotlin_Native_Projects/KotlinConf/konfios/build/konan/bin/xcode/common.framework/common
Undefined symbols for architecture arm64:
"OBJC_CLASS$_CommonConstantsKt", referenced from:
objc-class-ref in AppDelegate.o
"OBJC_CLASS$_CommonKotlinPair", referenced from:
objc-class-ref in SessionViewController.o
"OBJC_CLASS$_CommonSessionListPresenter", referenced from:
objc-class-ref in SessionsViewController.o
"OBJC_CLASS$_CommonKotlinConfDataRepository", referenced from:
objc-class-ref in SessionsViewController.o
objc-class-ref in SessionViewController.o
objc-class-ref in AppDelegate.o
"OBJC_CLASS$_CommonKtor_utils_iosGMTDate", referenced from:
objc-class-ref in SessionsViewController.o
objc-class-ref in SessionViewController.o
"OBJC_CLASS$_CommonUpdateProblem", referenced from:
objc-class-ref in BaseView.o
"OBJC_METACLASS$_CommonKotlinx_coroutines_core_nativeCoroutineDispatcher", referenced from:
OBJC_METACLASS$__TtC9konfswift2UI in UI.o
"OBJC_CLASS$_CommonSpeaker", referenced from:
objc-class-ref in SessionsViewController.o
objc-class-ref in SessionViewController.o
"OBJC_CLASS$_CommonKotlinUnit", referenced from:
objc-class-ref in AppDelegate.o
"OBJC_CLASS$_CommonSessionDetailsPresenter", referenced from:
objc-class-ref in SessionViewController.o
"OBJC_CLASS$_CommonMainPresenter", referenced from:
objc-class-ref in SessionsViewController.o
"OBJC_CLASS$_CommonCannotFavorite", referenced from:
objc-class-ref in BaseView.o
"OBJC_CLASS$_CommonCannotDeleteVote", referenced from:
objc-class-ref in BaseView.o
"OBJC_CLASS$_CommonPlatformSettings", referenced from:
objc-class-ref in AppDelegate.o
"OBJC_CLASS$_CommonSessionRating", referenced from:
objc-class-ref in SessionViewController.o
"OBJC_CLASS$_CommonUnauthorized", referenced from:
objc-class-ref in BaseView.o
"OBJC_CLASS$_CommonCannotPostVote", referenced from:
objc-class-ref in BaseView.o
"OBJC_CLASS$_CommonTooEarlyVote", referenced from:
objc-class-ref in BaseView.o
"OBJC_CLASS$_CommonSessionModel", referenced from:
objc-class-ref in SessionsViewController.o
"OBJC_CLASS$_CommonTooLateVote", referenced from:
objc-class-ref in BaseView.o
"OBJC_CLASS$_CommonKotlinx_coroutines_core_nativeCoroutineDispatcher", referenced from:
objc-class-ref in UI.o
type metadata for konfswift.UI in UI.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Feature: watch later

KotlinConf gives a plenty of interesting talks, so that it's impossible to watch them all being at the place.

It would be nice to mark the talks that I want to watch after the conference when their videos become available and to get a (single) notification about that fact.

Currently we have a flag that represents a bookmarked talk, but it's impossible to distinguish the talks I already watched and those that I still want to watch.

Bookmarking a presentation bookmarks all instances of that presentation

I am giving the same presentation twice in the 2023 conference ("Introduction to Context Receivers"). In the iOS app, when I go to my speaker page within in the app and click one of those talks to bookmark it, both instances of the talk are bookmarked. I would expect that I bookmark each talk individually.

"Unresolved reference: libs" when opening in CLion

CLion is unable to resolve the Core Data classes in the iOS module. When running the kotlinconf.kexe in Clion I get the following errors:

src/main/kotlin/data/FavoritesManager.kt:1:8: error: unresolved reference: libs
import libs.*
       ^
src/main/kotlin/data/FavoritesManager.kt:7:29: error: unresolved reference: KSession
    fun isFavorite(session: KSession) = getFavorite(session) != null

Can't build iOS app

I'm trying to build the iOS app to test and check how Kotlin Native is working. But I'm getting the following error (I just pulled the repo and changed the bundle identifier nothing else).

Feature: synchronize user preferences between kotlinconf site and app

Use case:

  • as a user I browse kotlinconf.com before the conference and mark talks as favorites.
  • then I install ConfApp and scan QR-code displayed on the site to establish a link between my app account and website session.
  • after that all favorites are now synchronized between site and app. If I make changes in favorites and vote for talks, it is immediately reflected on the site.
  • after the conference I can browse my favorites on the site again, for example to watch published talks I was not able to attend at the conference and to vote for them.

Bug: iOS cannot revote

Agenda -> Choose talk with active vote -> Click VoteButton (smile)
Try to revote
Result: Previously chosen VoteButton stays active, cannot revote

Problems with opening Android app

Hey, despite following the instructions in the README, I'm having some issues with building/installing the Android app. I'm not quite sure what I might be doing wrong...

  1. Should I be opening the kotlinconf-app folder or android?

  2. The README says Open the project in IntelliJ IDEA which sounds like Android Studio truly shouldn't be used to open the project. Is this correct? Or is Android Studio ok?

  3. My local.properties setup appears to be ๐Ÿ‘Œ

ndk.dir=/Users/langstonsmith/Library/Android/sdk/ndk-bundle
sdk.dir=/Users/langstonsmith/Library/Android/sdk
  1. When I open kotlinconf-app with IntelliJ IDEA, I get the following error message:

This Gradle plugin requires a newer IDE able to request IDE model level 3. For Android Studio this means version 3.0+

screen shot 2018-10-21 at 11 14 41 am

  1. When I cd to kotlinconf-app in Terminal and then run ./gradlew build, it looks like there's some sort of issue with Task :common:compileKotlinIos and/or the Java version I'm using?:
Starting a Gradle Daemon, 5 stopped Daemons could not be reused, use --status for details
Parallel execution is an incubating feature.

> Configure project :common
Kotlin Multiplatform Projects are an experimental feature.
w: /Users/langstonsmith/Desktop/kotlinconf-app-master/common/src/commonMain/kotlin/org/jetbrains/kotlinconf/CoroutineUtils.kt: (12, 5): 'launch(CoroutineContext = ..., CoroutineStart = ..., CompletionHandler? /* = ((cause: Throwable?) -> Unit)? */ = ..., suspend CoroutineScope.() -> Unit): Job' is deprecated. Standalone coroutine builders are deprecated, use extensions on CoroutineScope instead
<=w: Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
    /Users/langstonsmith/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.3.0-rc-145/968215130d1a70629cb182a9e80cccf3f110a8b2/kotlin-stdlib-jdk8-1.3.0-rc-145.jar (version 1.3)
    /Users/langstonsmith/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.3.0-rc-145/6d0d6543e9d44bf483827dfe5dd9540a8513efd8/kotlin-reflect-1.3.0-rc-145.jar (version 1.3)
    /Users/langstonsmith/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.3.0-rc-145/8ed86a36342e47cb3f2082c0a07aed739b95ab02/kotlin-stdlib-jdk7-1.3.0-rc-145.jar (version 1.3)
    /Users/langstonsmith/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre8/1.1.50/4cbd6804d74e98883b1b905fa98d31269ca0198f/kotlin-stdlib-jre8-1.1.50.jar (version 1.1)
    /Users/langstonsmith/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre7/1.1.50/2c2354711f85e22aaf5bc7567edee789a60016a0/kotlin-stdlib-jre7-1.1.50.jar (version 1.1)
    /Users/langstonsmith/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.0-rc-145/35b788147113c41d872cfc68d97d142de93d55ce/kotlin-stdlib-1.3.0-rc-145.jar (version 1.3)
    /Users/langstonsmith/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-runtime/1.1.50/1c550ddb891b185aab912d1a0ea30381e38df547/kotlin-runtime-1.1.50.jar (version 1.1)
    /Users/langstonsmith/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.0-rc-145/1b877564c35422eea2edd616e69da2ccb4174a51/kotlin-stdlib-common-1.3.0-rc-145.jar (version 1.3)
w: Some runtime JAR files in the classpath have an incompatible version. Consider removing them from the classpath
w: /Users/langstonsmith/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre7/1.1.50/2c2354711f85e22aaf5bc7567edee789a60016a0/kotlin-stdlib-jre7-1.1.50.jar: kotlin-stdlib-jre7 is deprecated. Please use kotlin-stdlib-jdk7 instead
w: /Users/langstonsmith/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre8/1.1.50/4cbd6804d74e98883b1b905fa98d31269ca0198f/kotlin-stdlib-jre8-1.1.50.jar: kotlin-stdlib-jre8 is deprecated. Please use kotlin-stdlib-jdk8 instead
w: /Users/langstonsmith/Desktop/kotlinconf-app-master/backend/src/org/jetbrains/kotlinconf/backend/Api.kt: (195, 14): 'withETag(String, Boolean = ..., suspend () -> Unit): Unit' is deprecated. Use configuration for ConditionalHeaders
w: /Users/langstonsmith/Desktop/kotlinconf-app-master/backend/src/org/jetbrains/kotlinconf/backend/Api.kt: (206, 18): 'withETag(String, Boolean = ..., suspend () -> Unit): Unit' is deprecated. Use configuration for ConditionalHeaders
w: /Users/langstonsmith/Desktop/kotlinconf-app-master/backend/src/org/jetbrains/kotlinconf/backend/Api.kt: (213, 49): Unnecessary safe call on a non-null receiver of type List<Session>
w: /Users/langstonsmith/Desktop/kotlinconf-app-master/backend/src/org/jetbrains/kotlinconf/backend/Api.kt: (214, 18): 'withETag(String, Boolean = ..., suspend () -> Unit): Unit' is deprecated. Use configuration for ConditionalHeaders
w: /Users/langstonsmith/Desktop/kotlinconf-app-master/backend/src/org/jetbrains/kotlinconf/backend/KotlinxConverter.kt: (20, 61): Unchecked cast: KSerializer<out Any> to SerializationStrategy<Any>
w: /Users/langstonsmith/Desktop/kotlinconf-app-master/backend/src/org/jetbrains/kotlinconf/backend/Main.kt: (34, 13): 'XForwardedHeadersSupport: XForwardedHeaderSupport' is deprecated. 
w: /Users/langstonsmith/Desktop/kotlinconf-app-master/backend/src/org/jetbrains/kotlinconf/backend/Sessionize.kt: (27, 5): 'launch(CoroutineContext = ..., CoroutineStart = ..., CompletionHandler? /* = ((cause: Throwable?) -> Unit)? */ = ..., suspend CoroutineScope.() -> Unit): Job' is deprecated. Standalone coroutine builders are deprecated, use extensions on CoroutineScope instead
w: /Users/langstonsmith/Desktop/kotlinconf-app-master/backend/src/org/jetbrains/kotlinconf/backend/Sessionize.kt: (27, 12): 'CommonPool' is deprecated. Use Dispatchers.Default
Warning: The rule `-keep public class *extends java.lang.annotation.Annotation {
  *;
}` uses extends but actually matches implements.

> Task :common:compileKotlinIos
common/src/commonMain/kotlin/org/jetbrains/kotlinconf/CoroutineUtils.kt:12:5: warning: 'launch(CoroutineContext = ..., CoroutineStart = ..., CompletionHandler? /* = ((cause: Throwable?) -> Unit)? */ = ..., suspend CoroutineScope.() -> Unit): Job' is deprecated. Standalone coroutine builders are deprecated, use extensions on CoroutineScope instead
    launch(context) {
    ^
common/src/commonMain/kotlin/org/jetbrains/kotlinconf/model/KotlinConfDataRepository.kt:150:38: warning: inliner failed to obtain function declaration: kotlin.properties.Delegates.observable

FAILURE: Build failed with an exception.

* What went wrong:
Gradle build daemon has been stopped: stop command received

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org
newHostName:kotlinconf-app-master langstonsmith$ 
  1. I guess the failing ./gradlew build task is why Android Studio can't find the module? I'm currently seeing ๐Ÿ‘‡ when I open kotlinconf-app with Android Studio

screen shot 2018-10-21 at 11 30 17 am

screen shot 2018-10-21 at 11 30 06 am

Build failed with ios

Unable to find any JVMs matching version "1.8".
/Users/username/Downloads/kotlinconf-app-master/konfios
ios_x64
cp: /Users/username/Downloads/kotlinconf-app-master/konfios/../common/build/bin/ios/main/debug/framework: No such file or directory

FAILURE: Build failed with an exception.

  • What went wrong:
    Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory().

Could not create service of type PluginResolutionStrategyInternal using BuildScopeServices.createPluginResolutionStrategy().

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 0s
Command PhaseScriptExecution failed with a nonzero exit code

Unable to finish checkout on Windows

git clone https://github.com/JetBrains/kotlinconf-app.git
Cloning into 'kotlinconf-app'...
remote: Enumerating objects: 5770, done.
remote: Counting objects: 100% (639/639), done.
remote: Compressing objects: 100% (330/330), done.
remote: Total 5770 (delta 351), reused 386 (delta 261), pack-reused 5131
Receiving objects: 100% (5770/5770), 31.14 MiB | 24.51 MiB/s, done.
Resolving deltas: 100% (2150/2150), done.
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/black|white.colorset/Contents.json'
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'
cd kotlinconf-app
git restore --source=HEAD :/
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/black|white.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/grey-20|grey-50.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/grey-50|grey-20.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/grey-50|grey-50.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/grey-50|white.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/grey-5|black.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/grey-5|grey.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/grey|grey-20.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/grey|grey-5.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/grey|grey-50.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/grey|white.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/white|black.colorset/Contents.json'
error: invalid path 'iosApp/iosApp/Assets.xcassets/Colors/white|grey.colorset/Contents.json'

Windows cannot put a | character in a directory or file name.

Error while perform ./gradlew build in iOS folder

I tested out all works, Android, Web and Backend Server.

Except for iOS, where I have the below error

> Task :compileKonanAppIphone
KtFile: FavoritesManager.kt
KtFile: KonfLoader.kt
KtFile: KonfService.kt
KtFile: NetworkService.kt
KtFile: VotesManager.kt
KtFile: dataUtils.kt
KtFile: main.kt
KtFile: AboutViewController.kt
KtFile: AppDelegate.kt
KtFile: SessionViewController.kt
KtFile: SessionsViewController.kt
KtFile: coreDataUtils.kt
KtFile: dateUtils.kt
KtFile: interopUtils.kt
KtFile: misc.kt
KtFile: networkUtils.kt
ld: warning: directory not found for option '-F/Users/user.name/Library/Developer/Xcode/DerivedData/konan-fbrevwjizfuqtigjzqsjmzjkiwce/Build/Products/Debug-iphoneos'
ld: framework not found helperlib
error: linker invocation reported errors


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileKonanAppIphone'.
> Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

What could be the cause? Any tips of how to proceed would help. Thanks!

broken conf url

The link in the conferenceservice under service variable is broken url

Convert build.gradle files to Kotlin DSL

This repo serves as a prime example to people. Now that the Kotlin DSL for Gradle is fully implemented, wouldn't it be good to use it here? That makes it even more Kotlin everywhere.

Build error: Could not get unknown property 'MAPBOX_ACCESS_TOKEN'

Added local.properties and ran ./gradlew build
I have the following error

Kotlin Multiplatform Projects are an experimental feature.
Target 'ios' for platform ios_x64 is ignored during build on this mingw_x64 machine. You can build it with a mac

FAILURE: Build failed with an exception.

  • Where:
    Build file 'D:\MY_UNIVERSE\ws\github_ws\JetBrains\kotlinconf-app\android\app\build.gradle' line: 31

  • What went wrong:
    A problem occurred evaluating project ':android:app'.

Could not get unknown property 'MAPBOX_ACCESS_TOKEN' for ProductFlavor_Decorated{name=local, dimension=null, mVersion=null, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptSupportModeBlasEnablenabled=null, versionCode=null, versionName=null, applicationId=null, testApplicationId=null, testInstrumentationtrumentationRunner=null, testInstrumentationRunnerArguments={}, testHandleProfiling=null, testFunctinfig=null, monalTest=null, signingConfig=null, resConfig=null, mBuildConfigFields={API_URL=com.android.builder.internal.ClassFieldImpl@f1a41eac}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}, mWearAppUnbundled=null} of type com.android.build.gradle.internal.dsl.ProductFlavor.

Why iOS app has not any data while android has

I have checked that EndPoint seems the same in Android/iOS, And I just clone the project without any code modifications, So I am confused.
image
image

The result interface show like this.
image
image
Though I try to refresh the iOS app, no data appear

Use target shortcut for iOS

In the docs, it's stated that you can use ios as a target shortcut instead of individually defining each architecture for the target but in this example, it gets defined individually.

Is using this the preferred way rather than using the shortcut?

How to execute the tests in common?

There is a test in common/src/test.

Am I right in assuming that this test can be executed against both, the JS implementation of parseDate() and the JVM implementation of it?

If I run gradle build, the test shows up in the report in common-jvm/build/reports, so I guess that the JVM implementation passes the test.

How can I run the test and see the result for the JavaScript implementation?

Conference feed?

A central conference feed in the app would be nice. Use cases:

  • Announcements from the organizers & speakers
  • Communication between participants ("Hello I am X and would love to chat about Y")
  • Permits participants to ask organizational questions

All of this CAN be done via slack/twitter but experience shows: people tend to engage way more if it's directly in the conference app.

Favorites dropped

Here's a slack thread quote:

The Android app doesn't seem to save favorites properly. My whole team lost our favorite lists

Wow. I just checked, saw my favorites for about half a second, and they all disappeared, and now, they are not coming back... I'll use ink and paper or a notes/calendar app to keep track of the talks I'll attend then...

project structure

Hi I have a question about the project folder structure, I'm not sure if this is designed or just happened to happen like this.

So Some project have a package in the src directory, other have src/main/kotlin now I know both are valid and depends on user creating project, But then when I look at the Android project all sources are in a java folder src/main/java.

So is this because of how the project was put together or is their a valid reason. Im asking this question as I'm trying to get Kotlin in to our company and all 3 developers I got to download this project were confused by the different project folder layouts but that was easy to explain but I don't know why the Android project would have sources under java and could not explain why.

IF this is not by design I happy to fix and issue a pull request as I think samples like this should be clear and consistent, As confusion among our developer just makes it that much harder to let our managers let us try Kotlin in a production app. The quicker staff feel comfit-able the easer it is to have them learn a new language and have management agree.

How to use expect-actual across modules?

In the old blog https://hadihariri.com/2017/11/10/multiplatform-projects-with-kotlin/, it talked about how to use expect in the common module, and implement it with actual in separated android/js module. Also, sample code here https://github.com/hhariri/kotlin-mpp-sample

In this repo (considered the latest tech to use kotlin/native in the multiform platform), the actual implementation must be essentially implemented in the same ':common' module, which is kinda awkward.

Here is my scenario.

In this repo, there is an interface org.jerbrains.kotlincof.storage.Settings declared in the common module, and implemented in the Android module and ios sourceset which is also in the common module.

I'm trying to change the interface to expect-actual, since the Settings interface only has one implementation on one platform. Only to find I have to do actual Settings in the jvmMain sourceset, like this.

image

I want to implementate the Settings in my android/ios module for multiple reasons:

  1. my Settings implemetation depends lots of Android librarys
  2. my Settings implemetation depends lots of Android module source code
  3. my Settings implemetation depends on my Android application config

Thanks in advance!

Problems, finding the iOS-specific Ktor dependencies

I ran into some issues trying to build the iosMain library. Basically, it appears, as if Gradle cannot download the iOS-specific dependencies for Ktor:

image

I checked Bintray a few times and the paths seem correct. I also downgraded the dependency version to what seemed a more stable one, but that did not help either.

I am using the latest community version of IntelliJ as well as v 1.3 of the Kotlin plugin.

Breaks when upgrading Gradle to 4.x

I've been using kotlinconf-app as a reference for how to get a Kotlin React application to work with a Kotlin Multiplatform dependency. Super cool stuff!

I noticed that the Gradle wrapper in this project is set to v3.3 and the setup here only works with v3.x. When I try to upgrade to a more recent v4.x Gradle version I get these Webpack errors:

Hash: da24f46d6a2df326d929
Version: webpack 3.4.1
Time: 159ms
        Asset       Size  Chunks             Chunk Names
    bundle.js  719 bytes       0  [emitted]  main
bundle.js.map    6.42 kB       0  [emitted]  main
   [0] ./src/main/js/index.js 43 bytes {0} [built]

ERROR in ./src/main/js/index.js
Module not found: Error: Can't resolve 'common-js.js' in '/Users/leonhardt/workspace/kotlinconf-app/web/src/main/js'
 @ ./src/main/js/index.js 1:0-23

ERROR in ./src/main/js/index.js
Module not found: Error: Can't resolve 'web.js' in '/Users/leonhardt/workspace/kotlinconf-app/web/src/main/js'
 @ ./src/main/js/index.js 2:0-17

I'd like to get this working with Gradle v4.x because I'm trying to integrate this approach into an existing Gradle multi-project application that has a Spring Boot application. The org.springframework.boot Gradle plugin requires Gradle 4.0 or later (spring-projects/spring-boot#9516).

Any ideas of how to get a Gradle setup like the one here in kotlinconf-app to play nice with Gradle v4.x or even just what's going wrong when I try it?

Project build issues

When I build the project as is with the master branch, I get the following error as expected:

  • What went wrong:
    A problem occurred evaluating project ':android:app'.
    Failed to apply plugin [id 'com.android.application']
    Configuration on demand is not supported by the current version of the Android Gradle plugin since you are using Gradle version 4.6 or above. Suggestion: disable configuration on demand by setting org.gradle.configureondemand=false in your gradle.properties file or use a Gradle version less than 4.6.

Then I change gradle_android_version to 3.2.0 with gradle-4.7 and getting more errors like:

This declaration is experimental and its usage should be marked with '@io.ktor.util.KtorExperimentalAPI' or '@UseExperimental(io.ktor.util.KtorExperimentalAPI::class)'

As far as I understand, we also can not upgrade the gradle version above gradle-4.7 because of Ktor. I do try to use 4.10.2

Anyone has a successful build?

Released macOS version is actually iPhone version

Steps to reproduce:

  1. Go to https://apps.apple.com/de/app/kotlinconf/id1299196584?l=en-GB on macOS (in my case it was through the marketing email about upcoming KotlinConf, )
  2. install the kotlinConf application on the macOS
  3. Open It

The Result Obtained:
The application emulates iPhone 5, it is not resizable, it does not support system scroll, so on.

Expected Result:
The application is Either

  1. unavailable for macOS
  2. works as a native macOS application - supporting fullscreen mode, window resize, touchbar scrolling, so on.

Download target-sysroot-1-darwin-macos.tar.gz failed

:checkKonanCompiler
:compileKonanLibsIphone
Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed only on the first run of the compiler.
Exception in thread "main" java.lang.IllegalStateException: Cannot download dependencies.
at org.jetbrains.kotlin.native.interop.tool.ToolConfigKt.maybeExecuteHelper(ToolConfig.kt:66)
at org.jetbrains.kotlin.native.interop.tool.ToolConfigKt.access$maybeExecuteHelper(ToolConfig.kt:1)
at org.jetbrains.kotlin.native.interop.tool.ToolConfig.downloadDependencies(ToolConfig.kt:42)
at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.processLib(main.kt:235)
at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.interop(main.kt:33)
at org.jetbrains.kotlin.cli.utilities.MainKt.invokeCinterop(main.kt:90)
at org.jetbrains.kotlin.cli.utilities.MainKt.main(main.kt:112)
Caused by: org.jetbrains.kotlin.konan.util.DependencyDownloader$HTTPResponseException: Server returned HTTP response code: 403 for URL: https://download.jetbrains.com/kotlin/native/target-sysroot-1-darwin-macos.tar.gz
at org.jetbrains.kotlin.konan.util.DependencyDownloader.checkHTTPResponse(DependencyDownloader.kt:51)
at org.jetbrains.kotlin.konan.util.DependencyDownloader.tryDownload(DependencyDownloader.kt:128)
at org.jetbrains.kotlin.konan.util.DependencyDownloader.download(DependencyDownloader.kt:164)
at org.jetbrains.kotlin.konan.util.DependencyDownloader.download$default(DependencyDownloader.kt:142)
at org.jetbrains.kotlin.konan.util.DependencyProcessor.processDependency(DependencyProcessor.kt:155)
at org.jetbrains.kotlin.konan.util.DependencyProcessor.run(DependencyProcessor.kt:171)
at org.jetbrains.kotlin.konan.util.Helper0.run(Helper0.kt:31)
at org.jetbrains.kotlin.native.interop.tool.ToolConfigKt.maybeExecuteHelper(ToolConfig.kt:62)
... 6 more
:compileKonanLibsIphone FAILED

Storyboard reference

How did you make the connection between Storyboard and ViewController kotlin file. It doesn't support drag and drop, like we used to do in Swift. right ? Did you edit the Storyboard file using any text editor and wrote the connection manually ? Or Is there any way to accomplish this ?

Feature: allow bookmarking and voting offline

Sometimes internet can be unavailable (on the way to)/overloaded (at a venue), so it would be nice to allow changing user preferences, namely bookmarks and votes, offline and synchronize them to the server later when connection becomes available.

API Key in public

<string>pk.eyJ1IjoiZGVuaXN2b3Jvbm92MSIsImEiOiJjanl0emhmdWYwOHRkM21wcjhka3BoNmJjIn0.Rt6kMPmQXvQznBNDdHU_VQ</string>

In build.gradle.kts we get the Mapbox API key from local.properties. Before that, it is required to get our own API key at https://www.mapbox.com/

But here your API key is public. I think it is a mistake. Correct me, if I'm wrong, please.

Thank you!

Needs a "scroll to now" button

The conference was "only" two days but the list of talks was still very long. I've been scrolling myself to death just trying to find the ongoing talks. A "scroll to current timeslot" functionality would be highly appreciated. Also, visually highlighting the current time some more would be helpful.

F-Droid

Hi,

Since this app is Apache2 licensed, would it be possible to include it in F-Droid? :) It would be interesting for future conferences and some of F-Droid users are probably interested in this.

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.