├── androidApp ├── faved │ ├── .gitignore │ ├── src │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── res │ │ │ └── values │ │ │ │ └── strings.xml │ │ │ └── java │ │ │ └── com │ │ │ └── rafag │ │ │ └── stonks │ │ │ └── android │ │ │ └── faved │ │ │ ├── presentation │ │ │ └── FavedQuotesViewModel.kt │ │ │ └── view │ │ │ └── FavedQuotesScreen.kt │ └── build.gradle.kts ├── search │ ├── .gitignore │ ├── src │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── res │ │ │ └── values │ │ │ │ └── strings.xml │ │ │ └── java │ │ │ └── com │ │ │ └── rafag │ │ │ └── stonks │ │ │ └── android │ │ │ └── search │ │ │ ├── presentation │ │ │ └── SearchViewModel.kt │ │ │ └── view │ │ │ └── SearchStonksScreen.kt │ └── build.gradle.kts ├── design │ ├── .gitignore │ ├── src │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── res │ │ │ └── values │ │ │ │ └── strings.xml │ │ │ └── java │ │ │ └── com │ │ │ └── rafag │ │ │ └── stonks │ │ │ └── android │ │ │ └── design │ │ │ ├── TintStatusBar.kt │ │ │ ├── theming │ │ │ ├── StonksTheme.kt │ │ │ ├── Palette.kt │ │ │ ├── Typography.kt │ │ │ └── StonksText.kt │ │ │ └── views │ │ │ ├── Delete.kt │ │ │ ├── Loading.kt │ │ │ ├── Faved.kt │ │ │ ├── StonkQuote.kt │ │ │ ├── Error.kt │ │ │ └── SearchBar.kt │ └── build.gradle.kts ├── navigation │ ├── .gitignore │ ├── src │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ └── com │ │ │ └── rafag │ │ │ └── stonks │ │ │ └── android │ │ │ └── navigation │ │ │ └── ComposeNavigation.kt │ └── build.gradle.kts ├── src │ └── main │ │ ├── res │ │ └── values │ │ │ ├── styles.xml │ │ │ └── strings.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── rafag │ │ └── stonks │ │ └── android │ │ ├── StonksApplication.kt │ │ ├── di │ │ └── ViewModelsProvider.kt │ │ └── MainActivity.kt └── build.gradle.kts ├── shared ├── src │ ├── androidMain │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ │ └── com │ │ │ └── rafag │ │ │ └── stonks │ │ │ └── data │ │ │ └── db │ │ │ └── DatabaseDriverFactory.kt │ ├── commonMain │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── rafag │ │ │ │ └── stonks │ │ │ │ ├── data │ │ │ │ └── db │ │ │ │ │ └── DatabaseDriverFactory.kt │ │ │ │ ├── domain │ │ │ │ └── usecases │ │ │ │ │ ├── ToggleFavouriteUseCase.kt │ │ │ │ │ ├── FetchFavedQuotesUseCase.kt │ │ │ │ │ ├── SearchStonksUseCase.kt │ │ │ │ │ └── UseCasesProvider.kt │ │ │ │ └── internal │ │ │ │ ├── domain │ │ │ │ ├── repositories │ │ │ │ │ ├── FavouritesRepository.kt │ │ │ │ │ ├── QuoteRepository.kt │ │ │ │ │ └── SearchRepository.kt │ │ │ │ └── usecases │ │ │ │ │ ├── ToggleFavouriteUseCaseImpl.kt │ │ │ │ │ ├── SearchStonksUseCaseImpl.kt │ │ │ │ │ └── FetchFavedQuotesUseCaseImpl.kt │ │ │ │ └── data │ │ │ │ ├── httpclient │ │ │ │ ├── HttpRequest.kt │ │ │ │ └── StonksHttpClient.kt │ │ │ │ └── repositories │ │ │ │ ├── favourites │ │ │ │ ├── FavouritesPersistence.kt │ │ │ │ └── FavouritesRepositoryImpl.kt │ │ │ │ ├── quote │ │ │ │ ├── QuotePersistence.kt │ │ │ │ ├── QuoteApi.kt │ │ │ │ └── QuoteRepositoryImpl.kt │ │ │ │ └── search │ │ │ │ ├── SearchApi.kt │ │ │ │ └── SearchRepositoryImpl.kt │ │ └── sqldelight │ │ │ └── com │ │ │ └── stonks │ │ │ └── db │ │ │ ├── DbFavourites.sq │ │ │ └── DbQuote.sq │ ├── iosMain │ │ └── kotlin │ │ │ └── com │ │ │ └── rafag │ │ │ └── stonks │ │ │ └── data │ │ │ └── db │ │ │ └── DatabaseDriverFactory.kt │ ├── iosTest │ │ └── kotlin │ │ │ └── com │ │ │ └── rafag │ │ │ └── stonks │ │ │ └── ExpectIos.kt │ ├── commonTest │ │ └── kotlin │ │ │ └── com │ │ │ └── rafag │ │ │ └── stonks │ │ │ ├── Expect.kt │ │ │ └── internal │ │ │ ├── fixtures │ │ │ ├── QuoteFixture.kt │ │ │ └── SearchFixture.kt │ │ │ ├── data │ │ │ ├── repositories │ │ │ │ ├── search │ │ │ │ │ └── SearchRepositoryImplTest.kt │ │ │ │ ├── quote │ │ │ │ │ └── QuoteRepositoryImplTest.kt │ │ │ │ └── favourites │ │ │ │ │ └── FavouritesRepositoryImplTest.kt │ │ │ └── httpclient │ │ │ │ └── MockHttpClient.kt │ │ │ └── domain │ │ │ └── usecases │ │ │ ├── ToggleFavouriteUseCaseImplTest.kt │ │ │ ├── FetchFavedQuotesUseCaseImplTest.kt │ │ │ └── SearchStonksUseCaseImplTest.kt │ └── androidTest │ │ └── kotlin │ │ └── com │ │ └── rafag │ │ └── stonks │ │ └── ExpectJvm.kt └── build.gradle.kts ├── .gitignore ├── iosApp ├── iosApp.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ ├── xcuserdata │ │ └── rafa.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ └── project.pbxproj └── iosApp │ ├── Data │ ├── Stock.swift │ ├── Money.swift │ └── Data.swift │ ├── StockLookupView copy.swift │ ├── Views │ ├── StockLookupView.swift │ ├── ContentView.swift │ └── StockView.swift │ ├── StockView copy.swift │ ├── App │ ├── AppDelegate.swift │ └── SceneDelegate.swift │ └── Info.plist ├── gradle.properties ├── gradle └── wrapper │ └── gradle-wrapper.properties ├── settings.gradle.kts └── README.md /androidApp/faved/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /androidApp/search/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /androidApp/design/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /androidApp/navigation/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /shared/src/androidMain/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /androidApp/design/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /androidApp/search/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /androidApp/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |