Skip to content

About

πŸš€ ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ инструмСнтарий ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ для Compose Multiplatform ΠΎΡ‚ WHAT Technologies

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


Compose Foundation Icon

COMPOSE FOUNDATION

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ инструмСнтарий, Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ…ΡƒΠΊΠΈ, сСтСвой ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, навигация ΠΈ UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ для Compose Multiplatform.



GitHub Packages Β  Releases Β  Organization



О ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅

Compose Foundation β€” Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ WHAT Technologies. Π‘ΠΎΠ·Π΄Π°Π½Π° для стандартизации ΠΈ ускорСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Kotlin Multiplatform ΠΈ Compose Multiplatform с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Android, JVM Desktop (Windows, macOS, Linux), Apple iOS (arm64, simulator, x64) ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Ρ‡Π΅Ρ€Π΅Π· WebAssembly (wasmJs).

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: бСзопасноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ настроСк с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (Android Keystore), React-style Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ…ΡƒΠΊΠΈ состояния (useState, useChange), Ρ‚ΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡŽ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ полноэкранных Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ² ΠΈ ΡˆΡ‚ΠΎΡ€ΠΎΠΊ, инспСктор сСтСвого Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Ktor, автоматичСскиС обновлСния ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ доступности Π²Π½Π΅ΡˆΠ½ΠΈΡ… сСрвисов.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ возмоТности

  • Полная ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ β€” Π΅Π΄ΠΈΠ½Ρ‹ΠΉ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ API для Android (AAR), JVM Desktop, iOS ΠΈ WebAssembly.
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎ (core, navigation, state, ui, network, updater, preferences, scraper, healthcheck, delivery) Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ umbrella-Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ compose-foundation.
  • DX-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ…ΡƒΠΊΠΈ β€” Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ useState, useChange, useInterval, useTimeout, useSave ΠΈ useRestore для Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ управлСния ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈ состояниСм UI.
  • ВипобСзопасная навигация β€” NavigationHost с рСгистрациСй экранов Π±Π΅Π· рСфлСксии, динамичСский RootNavigationContext, Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠ°Π½Π΅Π»ΠΈ (BottomNavBar), ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΡ‚ΠΎΡ€ΠΊΠΈ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ стСковыС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ.
  • Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ настройки (Secure Key-Value) β€” Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° Π±Π°Π·Π΅ AES-GCM с ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Android Keystore ΠΈ JSON-ΠΏΠ΅Ρ€ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π° Desktop/Web.
  • Π˜Π½ΡΠΏΠ΅ΠΊΡ‚ΠΎΡ€ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ β€” потокобСзопасный ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊ сСтСвых Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ktor (NetworkMonitorPlugin) с санитизациСй Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ OOM.
  • НадСТныС обновлСния ΠΈ дистрибуция β€” ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· GitHub Releases ΠΈ RuStore, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ скачиваниС с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ возобновлСния ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° цСлостности APK.
  • ΠŸΠ°Ρ€ΡΠΈΠ½Π³ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° работоспособности сСрвисов β€” Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π²Π΅Π±-скрапинга (foundation-scraper Π½Π° Π±Π°Π·Π΅ Ksoup) ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° сСтСвых эндпоинтов (foundation-healthcheck, foundation-delivery).

АрхитСктура ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ структура позволяСт Π³ΠΈΠ±ΠΊΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ зависимостями ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»:

graph TD
    subgraph Meta["ΠœΠ΅Ρ‚Π°-ΠΏΠ°ΠΊΠ΅Ρ‚"]
        ALL["compose-foundation<br/><i>Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½ΠΎ</i>"]
    end

    subgraph CoreLayer["Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ слой"]
        CORE["foundation-core<br/><i>UIController, Logging, Auditor, Platform, Coroutines</i>"]
    end

    subgraph StateAndDataLayer["БостояниС ΠΈ Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅"]
        STATE["foundation-state<br/><i>useState, useChange, useInterval, Controllers</i>"]
        PREF["foundation-preferences<br/><i>PreferenceStorage, Android Keystore AES-GCM</i>"]
    end

    subgraph UiAndNavigationLayer["Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ Навигация"]
        UI["foundation-ui<br/><i>Icons, Themes, Base Components, LiquidBackground</i>"]
        NAV["foundation-navigation<br/><i>NavigationHost, BottomNavBar, Sheets, Dialogs</i>"]
    end

    subgraph NetworkAndServicesLayer["Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ стСк ΠΈ БСрвисы"]
        NET["foundation-network<br/><i>NetworkMonitor, Ktor NetworkMonitorPlugin</i>"]
        SCRAPER["foundation-scraper<br/><i>Ksoup HTML Scraper, Multiplatform Document Parser</i>"]
        HEALTH["foundation-healthcheck<br/><i>Healthcheck Service, UI Ping & Latency Monitors</i>"]
        DELIVERY["foundation-delivery<br/><i>Delivery Engine, Remote Sync & Cache</i>"]
        UPDATER["foundation-updater<br/><i>GitHubUpdateService, APK Manager, Downloader</i>"]
        RUSTORE["foundation-updater-rustore<br/><i>RuStoreUpdateManager</i>"]
        FIREBASE["foundation-firebase<br/><i>FirebaseCrashReporter, FirebaseAnalytics</i>"]
        CRASH["foundation-crash<br/><i>CrashHandler, Bootloop Guard, CrashScreen</i>"]
    end

    ALL --> CORE
    ALL --> STATE
    ALL --> PREF
    ALL --> UI
    ALL --> NAV
    ALL --> NET
    ALL --> SCRAPER
    ALL --> HEALTH
    ALL --> DELIVERY
    ALL --> UPDATER
    ALL --> RUSTORE
    ALL --> FIREBASE
    ALL --> CRASH

    STATE --> CORE
    PREF --> CORE
    PREF --> STATE
    UI --> CORE
    UI --> STATE
    UI --> PREF
    NAV --> CORE
    NAV --> UI
    NET --> CORE
    SCRAPER --> CORE
    SCRAPER --> NET
    HEALTH --> CORE
    HEALTH --> UI
    HEALTH --> NET
    DELIVERY --> CORE
    DELIVERY --> UI
    DELIVERY --> NET
    DELIVERY --> PREF
    DELIVERY --> UPDATER
    UPDATER --> CORE
    UPDATER --> UI
    RUSTORE --> UPDATER
    FIREBASE --> CORE
    CRASH --> CORE
    CRASH --> UI
Loading

БпСцификация ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

ΠœΠΎΠ΄ΡƒΠ»ΡŒ АртСфакт ОписаниС ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ классы ΠΈ API
:foundation-core app.what.foundation:foundation-core АрхитСктурноС ядро, MVI-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈ Π°ΡƒΠ΄ΠΈΡ‚ Π»ΠΎΠ³ΠΎΠ² UIController, AppLogger, Auditor, TimeUtils, Platform
:foundation-state app.what.foundation:foundation-state Π Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ…ΡƒΠΊΠΈ состояния ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΊΠΎΠ½ useState, useChange, useInterval, useSave, DialogController, SheetController
:foundation-preferences app.what.foundation:foundation-preferences Π Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ настроСк с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Keystore PreferenceStorage, AndroidPreferenceEncryptor, KeyValueStorage
:foundation-ui app.what.foundation:foundation-ui UI-ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹, Π½Π°Π±ΠΎΡ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΈΠΊΠΎΠ½ΠΎΠΊ, Ρ‚Π΅ΠΌΡ‹ оформлСния ΠΈ эффСкты SearchBox, StyledTextField, LiquidBackground, WHATIcons
:foundation-navigation app.what.foundation:foundation-navigation ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ навигация для Compose Multiplatform, ΡˆΡ‚ΠΎΡ€ΠΊΠΈ, ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ Navigator, NavigationHost, BottomNavBar, ProvideGlobalDialog, ProvideGlobalSheet
:foundation-network app.what.foundation:foundation-network ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρ‹ΠΉ инспСктор сСтСвых запросов ΠΈ Ktor ΠΏΠ»Π°Π³ΠΈΠ½ NetworkMonitor, NetworkRequest, NetworkMonitorPlugin
:foundation-scraper app.what.foundation:foundation-scraper KMP-парсСр Π²Π΅Π±-страниц Π½Π° Π±Π°Π·Π΅ лСгковСсного Ksoup-lite HtmlDocument, Element, KsoupParser
:foundation-healthcheck app.what.foundation:foundation-healthcheck ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ доступности ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° Π²Π½Π΅ΡˆΠ½ΠΈΡ… сСрвСров ΠΈ эндпоинтов HealthcheckClient, ServiceHealth, HealthIndicator
:foundation-delivery app.what.foundation:foundation-delivery ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΉ доставки ΠΈ синхронизации локального кэша DeliveryEngine, SyncCoordinator, RemoteCacheManager
:foundation-updater app.what.foundation:foundation-updater АвтообновлСниС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· GitHub Releases GitHubUpdateService, GitHubUpdateManager, DownloadState
:foundation-updater-rustore app.what.foundation:foundation-updater-rustore АдаптСр Π°Π²Ρ‚ΠΎΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ RuStore SDK RuStoreUpdateManager
:foundation-firebase app.what.foundation:foundation-firebase ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ фасад для Firebase Analytics ΠΈ Crashlytics FirebaseAnalyticsTracker, FirebaseCrashReporter
:foundation-crash app.what.foundation:foundation-crash ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊ сбоСв, Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ bootloop ΠΈ экран ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΎΠ± ошибкС CrashHandler, CurrentActivityHolder, CrashScreen
:compose-foundation app.what.foundation:compose-foundation ΠœΠ΅Ρ‚Π°-ΠΏΠ°ΠΊΠ΅Ρ‚ (Umbrella), Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ всС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π’Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ доступ ΠΊΠΎ всСм модулям экосистСмы

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

1. Настройка рСпозитория GitHub Packages

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ GitHub Packages ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ whatrushki Π² ваш settings.gradle.kts:

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven {
            url = uri("https://maven.pkg.github.com/whatrushki/compose-foundation")
            credentials {
                username = providers.gradleProperty("gpr.user").orNull 
                    ?: System.getenv("GITHUB_ACTOR")
                password = providers.gradleProperty("gpr.key").orNull 
                    ?: System.getenv("GITHUB_TOKEN")
            }
        }
    }
}

2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² вашСм build.gradle.kts (Π² Π±Π»ΠΎΠΊΠ΅ commonMain.dependencies):

// ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:
implementation("app.what.foundation:compose-foundation:1.1.6")

// Или Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎ ΠΏΠΎ модулям:
implementation("app.what.foundation:foundation-core:1.1.6")
implementation("app.what.foundation:foundation-navigation:1.1.6")
implementation("app.what.foundation:foundation-state:1.1.6")
implementation("app.what.foundation:foundation-preferences:1.1.6")
implementation("app.what.foundation:foundation-ui:1.1.6")
implementation("app.what.foundation:foundation-network:1.1.6")
implementation("app.what.foundation:foundation-scraper:1.1.6")
implementation("app.what.foundation:foundation-healthcheck:1.1.6")
implementation("app.what.foundation:foundation-delivery:1.1.6")
implementation("app.what.foundation:foundation-updater:1.1.6")

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

1. Π Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ…ΡƒΠΊΠΈ состояния (foundation-state)

Π£ΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ состояниСм Π±Π΅Π· лишнСго boilerplate-ΠΊΠΎΠ΄Π°:

@Composable
fun SearchBar() {
    var query by useState("")

    // АвтоматичСская рСакция Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ состояния
    useChange(query) {
        println("ΠŸΠΎΠΈΡΠΊΠΎΠ²Ρ‹ΠΉ запрос измСнился: $query")
    }

    StyledTextField(
        value = query,
        onValueChange = { query = it },
        placeholder = "Поиск..."
    )
}

2. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ навигация (foundation-navigation)

ВипобСзопасная навигация с рСгистрациСй экранов ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ² ΠΈ ΡˆΡ‚ΠΎΡ€ΠΎΠΊ:

@Serializable
data object MainRoute : NavProvider()

val appRegistry: Registry = {
    register(MainScreen::class) { MainScreen(it) }
}

@Composable
fun App() {
    ProvideGlobalDialog {
        ProvideGlobalSheet {
            NavigationHost(
                start = MainRoute,
                registry = appRegistry
            )
        }
    }
}

3. БСзопасноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ настроСк (foundation-preferences)

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-GCM (Android Keystore), сСриализации ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ рСактивности Π² Compose:

@Serializable
data class UserProfile(val name: String, val role: String)

object AppSettings : PreferenceStorage(KeyValueStorageProvider.create()) {
    var isDarkTheme by boolean("dark_theme", defaultValue = false)
    var profile by model("user_profile", defaultValue = UserProfile("Π“ΠΎΡΡ‚ΡŒ", "ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ"))
}

@Composable
fun ThemeToggle() {
    val isDark by AppSettings::isDarkTheme.collect()
    Switch(checked = isDark, onCheckedChange = { AppSettings.isDarkTheme = it })
}

4. Π˜Π½ΡΠΏΠ΅ΠΊΡ‚ΠΎΡ€ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Ktor (foundation-network)

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΊ сСтСвому ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Ktor:

val client = HttpClient {
    install(NetworkMonitor.Plugin) {
        maxMemoryLogs = 200
        sanitizeHeaders = listOf("Authorization", "Cookie")
    }
}

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ публикация

Π‘Π±ΠΎΡ€ΠΊΠ° всСх Ρ‚Π°Ρ€Π³Π΅Ρ‚ΠΎΠ² локально:

./gradlew assemble

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ кэш Maven:

./gradlew publishToMavenLocal

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π² GitHub Packages:

./gradlew publishAllPublicationsToGitHubPackagesRepository

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ связь ΠΈ участиС

  • Π‘Π°Π³-Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ ΠΈ прСдлоТСния: GitHub Issues.
  • ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ: Telegram @whatrushki.

Β© WHAT Technologies. ВсС ΠΏΡ€Π°Π²Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹. ЛицСнзия MIT.

About

πŸš€ ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ инструмСнтарий ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ для Compose Multiplatform ΠΎΡ‚ WHAT Technologies

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages