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:
KotlinConf App is connecting to the server running in the cloud to get information about sessions, speakers, favourites 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 favourites and accumulate votes.
As you can imagine, the Android version is developed in Kotlin/JVM. What's interesting here is that this time application utilizes Multiplatform support, which is an experimental feature in Kotlin 1.2. Data structures for retrieving data from the backend server and some date-time operations are shared across multiple projects.
iOS version is written in Swift, but it uses presenters and repositories written in Kotlin in the common module. This way iOS part itself is responsible only for specifying how the application looks like and how it represents changes requested by logic. Kotlin and Swift are highly interoperable, so from Swift, you can easily use all classes and tools defined in the common module.
local.propertiesin 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.
./gradlew backend:runfrom the command line or from Gradle tool window
To just generate Objective-C framework for iOS, use