Skip to content

Latest commit

 

History

1,413 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Val Esports

An independent, unofficial companion for competitive Valorant. Follow matches, scores, events, rankings and news, and keep your favorites together.

Val Esports previews showing match schedules, match details, favorites, events and rankings

Formerly VLR.gg (Unofficial). The Android package remains dev.staticvar.vlr, so existing users can upgrade without installing a separate app.

Website · Google Play · Open beta · GitHub releases · Privacy policy · Terms

Beta release workflow

Features

  • Browse live, upcoming and completed matches, with scores, maps and match details.
  • Explore events, brackets, standings, teams and players.
  • Follow regional rankings and esports news.
  • Favorite teams, players, matches and events to personalize Home.
  • Hide scores when you want to watch without spoilers.
  • Follow favorite matches from Android and iOS home screen widgets.
  • Use layouts adapted for Android tablets and foldables.
  • Read release highlights in Settings > What's new?

Favorites and settings are stored locally. The Android rewrite migrates supported favorites from the older app. No app account is required.

Platforms and implementation

The active kmp branch targets Android and iOS. Android is available through Google Play; iOS is in development and is not yet publicly released.

The app uses Kotlin Multiplatform and Compose Multiplatform for shared application code and UI, with the Prism design system. Platform integrations include Glance widgets on Android and SwiftUI/WidgetKit widgets on iOS.

The current stack includes Koin, Ktor, Kotlin coroutines and serialization, SQLDelight, Navigation 3, and Sentry diagnostics. Older Android versions used Firebase; see the privacy policy for the differences in data handling.

Project layout

Module Responsibility
androidApp Android application and platform integration
iosApp Xcode application and iOS widget extension
shared Application composition, navigation and dependency wiring
feature-* Home, matches, events, rankings, news, teams, players and settings
designsystem Prism components, themes, typography and icons
shared-ui UI shared across features
domain Domain models and repository contracts
data Repository implementations and refresh coordination
remote-source Network clients and remote data sources
local-source SQLDelight database and local persistence
core Common utilities and telemetry contracts
baselineProfile Android profile generation and user journeys
build-logic, lint Build conventions and code checks

The older app/ module is retained as legacy source and is excluded from the active Gradle build.

Local development

Use JDK 17 and an Android SDK matching the project's Gradle configuration. iOS development also requires macOS and Xcode. Follow AGENTS.md for repository-specific tooling and platform guidance.

Configure the Android SDK through local.properties or your environment. Backend access uses VLR_AUTH_TOKEN; Android also accepts TOKEN in local.properties. Keep credentials in local configuration or environment variables and out of version control.

Build the Android debug app from the repository root:

build-brief ./gradlew :androidApp:assembleDebug

If the machine-specific Java path in gradle.properties does not exist on your system, supply your JDK explicitly:

build-brief ./gradlew :androidApp:assembleDebug -Dorg.gradle.java.home="$JAVA_HOME"

For iOS, open iosApp/iosApp.xcodeproj, select the iosApp scheme and an iPhone or iPad destination, and configure signing for physical devices. The Xcode build integrates the shared Kotlin framework.

Android releases and profiles

Release builds enable R8 code shrinking, obfuscation and resource shrinking. Saved Baseline and Startup Profiles are consumed during the build; R8 rewrites profile rules to match the optimized release code.

See baselineProfile/README.md for generation commands, device requirements and covered journeys. Profile generation is separate from release builds.

Edit version.xcconfig to set the shared version: MARKETING_VERSION is the version name and CURRENT_PROJECT_VERSION is the build number. Android, the iOS app, the iOS widget, and release workflows all read this file. Increase the build number before each new store upload. Debug and release builds use the same version values.

The beta workflow uses the checked-in shared version. It builds a signed AAB, uploads it to the open-testing track, creates a GitHub release and sends the configured Telegram announcement. Changes must then be submitted for review in Play Console; an upload does not mean the update is available to users.

Play Store release notes live in distribution/whatsnew/whatsnew-en-US and must stay below 500 characters. In-app highlights live in BundledRelease.kt. Keep both focused on changes users can understand. Change the bundled release identifier only when users should see a new announcement.

Attribution and license

This project is not affiliated with or endorsed by Riot Games or VLR.gg. Valorant and related marks belong to their respective owners. Esports content and images remain subject to their owners' rights.

Thanks to akhilnarang for the VLR.gg scraper used by the original app.

Source code is available under the MIT license. Third-party fonts and other assets retain their respective licenses.

About

An android app is written in Jetpack compose, which uses REST API that parses vlr.gg and gives a list of upcoming matches, completed matches, and their match details.

Topics

Resources

Stars

39 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages