CodeForces Android Contest Tracker is a mobile companion app for Codeforces, bringing essential competitive programming features to Android.
The app enables users to track upcoming contests, set contest reminders, and browse problems filtered by rating and tags, offering a streamlined mobile experience similar to the Codeforces website.
Built using Kotlin and XML, the app focuses on clean architecture, performance, and Android fundamentals without relying on unnecessary external libraries.
- View upcoming and ongoing Codeforces contests
- Set reminders and notifications for contest start times
- Browse and filter problems by rating and topic tags
- View user profile information
- Minimal, clean multi-screen Android UI
- Lightweight implementation using native Android components
- Language: Kotlin
- UI: XML (Android Views)
- Architecture: MVVM
- Networking: Retrofit
- API: Codeforces Public API
- Build System: Gradle
- IDE: Android Studio
Below are the key files and directories relevant to understanding and extending the project:
app/
└── src/
└── main/
├── java/com/example/codeforces/
│ ├── adapter/
│ │ ├── ContestAdapter.kt # RecyclerView adapter for contests
│ │ └── ProblemsAdapter.kt # RecyclerView adapter for problems
│ │
│ ├── api/
│ │ ├── CodeforcesApi.kt # API endpoints definition
│ │ └── RetrofitInstance.kt # Retrofit client setup
│ │
│ ├── models/
│ │ ├── Contest.kt # Contest data model
│ │ ├── Problem.kt # Problem data model
│ │ ├── User.kt # User profile model
│ │ ├── ApiResponse.kt # Generic API response wrapper
│ │ └── RatingChange.kt # Rating change model
│ │
│ ├── notification/
│ │ └── ContestReminderReceiver.kt # Handles contest reminder notifications
│ │
│ ├── ui/
│ │ ├── MainActivity.kt # Hosts bottom navigation
│ │ ├── EnterUsernameActivity.kt # User handle input screen
│ │ ├── ContestFragment.kt # Contest listing UI
│ │ ├── ProblemsFragment.kt # Problem browser UI
│ │ └── ProfileFragment.kt # User profile UI
│ │
│ └── MainViewModel.kt # Shared ViewModel for data handling
│
├── res/
│ ├── layout/ # Activity & fragment XML layouts
│ ├── menu/ # Bottom navigation menu
│ ├── drawable/ # App icons and vector assets
│ ├── animator/ # Logo animation resources
│ ├── anim/ # Interpolators and animations
│ └── values/ # Colors, themes, styles
│
└── AndroidManifest.xml
This project uses the public Codeforces API, which does not require authentication.
Common endpoints used:
- Contest list: https://codeforces.com/api/contest.list
- Problem set: https://codeforces.com/api/problemset.problems
- User info: https://codeforces.com/api/user.info?handles=
Responses are returned in JSON format and parsed using Kotlin data classes.
- Android Studio (latest stable recommended)
- Java JDK 11 or higher
- Android SDK installed
- Android Emulator or physical Android device
-
Clone the repository:
git clone https://github.com/Kishan8548/CodeForces.git cd CodeForces -
Open the project in Android Studio and wait for Gradle sync to complete.
-
Run the app on an emulator or connected Android device.
./gradlew assembleDebugThe generated APK will be available at:
app/build/outputs/apk/debug/
Kishan Garhwal
GitHub: https://github.com/Kishan8548