Movies - простой способ найти популярные фильмы. Это легковесный TMDb-клиент.
Цель этого проекта - реализовать приложение с единообразным пользовательским интерфейсом для Android-смартфонов, Android-планшетов, Android Auto, Android Wear, Android TV, iOS, Desktop (MacOS, Windows, Linux) и Web. Используя Material3, Compose, Kotlin и Multiplatform.
Проект находится в активной разработке. Приложение для Android уже доступно.
Android
iOS
macOS
Перейди в local.properties
и укажи свой собственный TMDB API key как здесь:
TMDB_API_KEY=your_own_tmdb_api_key
Приложение можно использовать без ключа API, но его функциональность будет сильно ограничена.
Выбери конфигурацию запуска для соответствующего приложения в Android Studio и запусти его.
-
Клонируй репозиторий используя последнюю версию Android Studio
-
Запусти приложение на устройстве или эмуляторе
- Для Android, запусти конфигурацию
androidApp
. - Для iOS, запусти конфигурацию
iosApp
. - Для Desktop, запусти конфигурацию
desktopApp
.
- Для Android, запусти конфигурацию
-
Android Flavors
- Android с Google Mobile Services:
./gradlew :androidApp:installGmsDebug
- Android с Huawei Mobile Services:
./gradlew :androidApp:installHmsDebug
- Android Free and Open Source Software:
./gradlew :androidApp:installFossDebug
- Android с Google Mobile Services:
-
Desktop Run
./gradlew :desktopApp:run
- Modularization
- MVVM
- KTS Gradle Files
- Kotlin Symbol Processing API
- Gradle Version Catalog
- Build Variants
- Product Flavors
- Using buildSrc Directory
- MinSDK 23
- TargetSDK 34
- CompileSDK 34
- Dark Theme
- Amoled Theme
- Material You Dynamic Colors
- Themed App Icon
- Palette Colors API
- Accompanist
- Compose PreviewParameterProvider
- Downloadable Fonts
- KotlinX Coroutines
- KotlinX Serialization
- Appcompat
- ViewModel
- Lifecycle
- WorkManager
- DataStore
- Startup
- Navigation
- Paging3
- Browser
- OkHttp
- Chucker
- Flaker
- Timber
- App Shortcuts
- Github Releases
- Lint
- Detekt
- Spotless
- Distribute App via Telegram Bot
- Non-Transitive R classes
- SplashScreen API
- Per-App Language Preferences
- Settings Panel
- Benchmark
- Support Localization
- Notification Runtime Permission
- Changing Launcher App Icon
- Predictive Back Gesture
- Codacy Static Code Analysis
- Display Content Edge-to-Edge
- Support Landscape Orientation
- Support Display Cutouts
- Voice Input
- User Interactions
- Glance AppWidget
- Tile Quick Settings
- Grammatical Gender
- Biometric Authentication Dialog
- Type safety Navigation
- LeakCanary
- Koin
- Screenshot Detection
- BuildKonfig
- Dagger Hilt removed in #274
- Retrofit removed in #275
graph TD;
main-impl-->androidApp
main-impl-->iosComposeApp
main-impl-->desktopApp
account-->main-impl
auth-->main-impl
details-->main-impl
feed-->main-impl
gallery-->main-impl
search-->main-impl
settings-->main-impl
debug-->main-impl
account-impl-->account
auth-impl-->auth
details-impl-->details
feed-impl-->feed
gallery-impl-->gallery
search-impl-->search
settings-impl-->settings
debug-impl-->debug
core-->account-impl
core-->auth-impl
core-->details-impl
core-->feed-impl
core-->gallery-impl
core-->search-impl
core-->settings-impl
core-->debug-impl
navigation-->core
ui-->core
common-->core
interactor-->core
notifications-->core
work-->core
widget-->core
platform-services-->core
analytics-->interactor
repository-->interactor
network-->repository
persistence-->repository
Твоя помощь приветствуется!
⭐ Присоединяйся к звездочетам
Если попался баг или хочешь предложить фичу, не стесняйся, заводи issue.
Подписывайся на telegram-канал
Добавляйся в друзья на Кинопоиске
Добавляйся в друзья на MyShows
Copyright 2017 Michael Bely
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.