Kotlin Multiplatform project that gets network data from Food2Fork.ca

Overview

Food2Fork App Icon Food2Fork Recipe App

This is the codebase for a Kotlin Multiplatform Mobile course. Watch the course

List to Detail screen

Searching

Architecture

Shared Components

  1. Ktor (Network Client)
  2. SQL Delight (Caching Client)
  3. Kotlinx.datetime

Android Specific Components

  1. Jetpack Compose
  2. Jetpack Compose Navigation
    • (Single activity, zero fragments)
  3. Accompanist Coil
  4. Hilt
    • I decided to use AAC ViewModel because it gives so much state management stuff for free. Maybe in the future a shared viewmodel will be more practical. I'll talk about this in detail in the course.
    • See this tweet thread if you want to do some reading: https://twitter.com/ianhlake/status/1388517293005574144

iOS Specific Components

  1. SwiftUI


Android Studio Version

The project dependencies have been updated and you can use Android Studio Bumblebee (2021.1.1) Canary 3. Download from the archive here.

Kotlin Multiplatform Talks

  1. Mitch Tabian
    1. Is Kotlin Multiplatform Ready for Production?
    2. KMM - Fragmented Podcast
  2. Daniele Barconcelli
  3. Ekaterina Petrova
  4. Dmitry Savvinov
  5. Kevin Galligan
  6. Ben Asher and Alec Strong
Comments
  • Cannot run project on AS Arctic Fox 2020.3.1 Beta 3

    Cannot run project on AS Arctic Fox 2020.3.1 Beta 3

    After downloading the project I am required to update

    private const val gradleBuildTools = "7.0.0-alpha09"to "7.0.0-beta04"

    but this causes the following exception

    * Exception is:
    org.gradle.api.GradleException: Please initialize at least one Kotlin target in 'shared (:shared)'.
    Read more https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#setting-up-targets
    	at org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper.whenBuildEvaluated(KotlinPluginWrapper.kt:217)
    	at org.jetbrains.kotlin.gradle.plugin.KotlinBasePluginWrapper$apply$1.execute(KotlinPluginWrapper.kt:68)
    	at org.jetbrains.kotlin.gradle.plugin.KotlinBasePluginWrapper$apply$1.execute(KotlinPluginWrapper.kt:67)
    

    I just went through the README file again and noticed that this project was built on an older version of AS. It would be cool to know which dependencies have to be updated in order to be able to run the project on the latest beta version.

    grafik
    opened by GianlucaVeschi 3
  • How to join your discord server.

    How to join your discord server.

    Dear sir, I'm following you for around 3-4 months and I want to join your discord server. I have some doubts regarding Ktor, so I thought that by joining your discord server I'll get some help:).

    opened by EGOR-IND 2
  • Gradle build failed

    Gradle build failed

    Error message:

    FAILURE: Build failed with an exception.

    • Where: Build file '~/Food2Fork-KMM/androidFood2Fork/build.gradle.kts' line: 1

    • What went wrong: An exception occurred applying plugin request [id: 'com.android.application']

    Failed to apply plugin [id 'com.android.internal.version-check'] Minimum supported Gradle version is 6.8.2. Current version is 6.5. If using the gradle wrapper, try editing the distributionUrl in ~/Food2Fork-KMM/gradle/wrapper/gradle-wrapper.properties to gradle-6.8.2-all.zip

    opened by FoRRestDp 2
  • SwiftUI previews not working

    SwiftUI previews not working

    Do I have to do anything special to get the SwiftUI previews working? Any preview of a view that uses a Type defined in the shared coded crashes for me (RecipeCard.swift for instance). At first it says that it took more than 5 seconds, and after a few tries it crashes.

    opened by cgaisl 1
  • Update to Kotlin 1.6.0 and associated library changes (including fixes for some deprecations)

    Update to Kotlin 1.6.0 and associated library changes (including fixes for some deprecations)

    Description

    Upgrade Kotlin from 1.5.10 to 1.6.0 and upgrading Gradle, Compile SDK and libraries along with it. Also, removed arm64 setting from EXCLUDED_ARCHS in xcodeproj so that it can be built on M1 Mac. Also fixed some deprecations.

    Developed system environment info

    Build #AI-212.5457.46.2112.8094850, built on January 20, 2022
    Runtime version: 11.0.12+0-b1504.28-7817840 aarch64
    VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
    macOS 11.6
    GC: G1 Young Generation, G1 Old Generation
    Memory: 1280M
    Cores: 8
    Registry: external.system.auto.import.disabled=true
    Non-Bundled Plugins: IdeaVIM (1.9.2), org.moe.community (1.4.10), com.jetbrains.kmm (0.3.0(212-1.6.0-release-795-IJ)-132), Dart (212.5632), io.flutter (63.3.3)
    
    opened by 5altNaCl 0
  • Cannot run latest master

    Cannot run latest master

    IDE: AS Bumblebee 2021 1.1 Canary 3

    Error: No class roots are found in the JDK path: /Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk/Contents/Home

    OS: Mac

    opened by crjacinro 0
Owner
Mitch Tabian
youtube.com/c/codingwithmitch
Mitch Tabian
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
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
Test application that gets its data from the themoviedb api

SWorld app Aplicacion de prueba que obtiene sus datos de la api themoviedb, se permite listar, buscar por titulos y acceder al detalle Prerquisitos pa

null 0 Nov 17, 2021
This is BouncyBall, from Develop in Swift Explorations Unit 3, completed into Part 3, where the onTapped function gets a little squirrelly

This is BouncyBall, from Develop in Swift Explorations Unit 3, completed into Part 3, where the onTapped function gets a little squirrelly. Use this version when you add a function to be called when the funnel is tapped and taps aren't registered in the simulator.

Teaching Develop in Swift 0 Nov 20, 2021
Kotlin Multiplatfom app for Droidcon Events

Sessionize/Droidcon Mobile Clients General Info This project has a pair of native mobile applications backed by the Sessionize data api for use in eve

Touchlab 838 Jan 4, 2023
A starter project for Sample Project in Objective C.

A starter project for Sample Project in Objective C.

Zeeshan Haider 31 Jul 31, 2021
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
Create an easy to peek SwiftUI View to showcase your own data, catalog, images, or anything you'd like.

Create an easy to peek SwiftUI View to showcase your own data, catalog, images, or anything you'd like.

Peter Larson 17 Jun 27, 2022
The iOS pod which can collect profile data to detect code coverage.

CodeCoverageKit Installation CodeCoverageKit is available through CocoaPods.

木子 2 Sep 29, 2021
The Xcode playground labs from the Develop in Swift Fundamentals and Data Collections books.

Develop in Swift Labs A repository with the student materials from the Xcode 12 version of Develop with Swift Fundamentals This repo contains the Swif

Teaching Develop in Swift 9 Dec 15, 2022
a playground app using `MultipeerConnectivity` to transfor data wirelessly between iOS / iPadOS

README An example app using MultipeerConnectivity to transfor data wirelessly between iOS / iPadOS. Both using Data and Stream to transfer data are su

null 3 Aug 6, 2022
An iOS App which shows live AQI (Air quality index) data for different cities using Web-socket

AQI - Assignment This is an iOS App which shows live AQI (Air quality index) dat

Pratik Prajapati 3 Jul 21, 2022
An IPFS client/api Swift Package, with the ability to add and pin any data on iOS/iPadOS/macOS

An IPFS client/api Swift Package, with the ability to add and pin any data on iOS/iPadOS/macOS. Originally bundled with GraniteUI, pulled out for independant use by any party.

Kala 4 Dec 8, 2022
Pendo captures product usage data, gathers user feedback, and lets you communicate in-app to onboard, educate, and guide users to value

Pendo SDK for IOS The Pendo Mobile SDK is a code-less, retro-active analytics collector across all of your app's versions. The SDK also allows present

Pendo 30 Jan 4, 2023
A Swift command line tool for generating your Xcode project

XcodeGen XcodeGen is a command line tool written in Swift that generates your Xcode project using your folder structure and a project spec. The projec

Yonas Kolb 5.9k Jan 9, 2023
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
PlayCover is a project that allows you to sideload iOS apps on macOS( currently arm, Intel support will be tested.

PlayCover is a project that allows you to sideload iOS apps on macOS( currently arm, Intel support will be tested.

Alexandr 4k Jul 8, 2022
This project is a minimalistic Pomodoro timer for OS X written in Swift

Minimalistic Pomodoro for OSX This project is a minimalistic Pomodoro timer for OS X written in Swift started by @bengsfort, and substantially enhance

Kushal Shingote 2 Nov 17, 2021
XCode Preview template for UIkit based project.

SwiftPreview XCode Preview template for UIkit based project. Support custom file template class inherit from UIView and UIViewController. How to use?

Won Heo 10 Mar 31, 2022