Skip to content

A modern Android app to explore Codeforces user profiles, contests, and problems — built using Kotlin and XML.

Notifications You must be signed in to change notification settings

Kishan8548/CodeForces

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CodeForces: Android Contest Tracker

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.


Features

  • 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

Tech Stack

  • Language: Kotlin
  • UI: XML (Android Views)
  • Architecture: MVVM
  • Networking: Retrofit
  • API: Codeforces Public API
  • Build System: Gradle
  • IDE: Android Studio

Project Structure

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

Codeforces API

This project uses the public Codeforces API, which does not require authentication.

Common endpoints used:

Responses are returned in JSON format and parsed using Kotlin data classes.


Getting Started

Prerequisites

  • Android Studio (latest stable recommended)
  • Java JDK 11 or higher
  • Android SDK installed
  • Android Emulator or physical Android device

Setup

  1. Clone the repository:

    git clone https://github.com/Kishan8548/CodeForces.git
    cd CodeForces
  2. Open the project in Android Studio and wait for Gradle sync to complete.

  3. Run the app on an emulator or connected Android device.


Build APK

./gradlew assembleDebug

The generated APK will be available at:

app/build/outputs/apk/debug/

Author

Kishan Garhwal
GitHub: https://github.com/Kishan8548

About

A modern Android app to explore Codeforces user profiles, contests, and problems — built using Kotlin and XML.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages