GADS 2020 Leaderboard

Google Africa Developer Scholarship

In 2020, I was honored to participate in the Google Africa Developer Scholarship (GADS) program - an initiative by Google, Andela, and Pluralsight to grow the developer community across Africa.

This app was the final project submission, demonstrating proficiency in Android development fundamentals.

App Features

Splash Screen

A clean entry point that sets the tone for the app.

Splash Screen
Splash Screen

Leaderboard - Learning Hours

Displays the top 20 learners ranked by total learning hours on Pluralsight.

Learning Hours Leaderboard
Learning Hours Leaderboard

Leaderboard - Skill IQ

Shows the top 20 learners ranked by their Skill IQ scores.

Skill IQ Leaderboard
Skill IQ Leaderboard

Submission Form

Allows participants to submit their information to a Google Form directly from the app.

Submission Form
Submission Form

Confirmation Dialog

Confirms the user's intent before final submission.

Confirmation Dialog
Confirmation Dialog

Success & Error States

Clear feedback for successful submissions and error handling.

Success State
Success State
Error State
Error State

Technical Implementation

Architecture

The app follows Android best practices:

API Integration

interface LeaderboardApi {
    @GET("learning-leaders")
    suspend fun getLearningLeaders(): List<Learner>

    @GET("skill-iq-leaders")
    suspend fun getSkillIQLeaders(): List<Learner>

    @POST("submit")
    suspend fun submitForm(@Body submission: Submission): Response<Unit>
}

Key Dependencies

dependencies {
    // Networking
    implementation "com.squareup.retrofit2:retrofit:2.9.0"
    implementation "com.squareup.retrofit2:converter-gson:2.9.0"

    // Navigation
    implementation "androidx.navigation:navigation-fragment-ktx:2.3.0"
    implementation "androidx.navigation:navigation-ui-ktx:2.3.0"

    // UI
    implementation "com.google.android.material:material:1.2.0"
}

Lessons Learned

This project reinforced several Android development principles:

  1. Error Handling - Always anticipate network failures and provide clear user feedback
  2. Loading States - Users should always know what's happening
  3. Form Validation - Validate before submission to prevent unnecessary API calls
  4. Tab Navigation - Material Design tabs with ViewPager2 for smooth transitions

Acknowledgments

Thank you to Google, Andela, and Pluralsight for providing this incredible learning opportunity to developers across Africa.

Resources