The app made use of the Udemy API to fetch courses the available on the Udemy Platform for users to enroll in. The users can also search for courses that they are interested in and also bookmark them to their local database on their devices.
The app showcases the MVVM architecture, android architecture components, best practices in android development and the use of some popular libraries like Retrofit and Coil
Home Screen | Search Screen | Bookmark Screen |
![]() |
![]() |
![]() |
Detail Screen | Category Screen |
![]() |
![]() |
- 100% Kotlin
- MVVM Architecture
- Android Architecture Components
- Single Activity Pattern
- Retrofit RESTful API and networking client.
- Coil - Image loading.
- Android Architecture Components - A collections of libraries that help you design rebust, testable and maintainable apps.
- Room - Local persistence database.
- ViewModel - UI related data holder, lifecycle aware.
- LiveData - Observable data holder that notify views when underlying data changes.
- Navigation component - Fragment routing handler.
- WorkManager - Tasks scheduler in background jobs. (Upcoming)
- Coroutine Concurrency design pattern for asynchronous programming.
To make any calls to Udemy REST API, you will need to create an API client. Affiliate API client consists of a bearer token, which is connected to a user account on Udemy.
If you want to create an Affiliate API client, Sign up on www.udemy.com and go to API Clients page in your user profile. Once your Affiliate API client request is approved, your newly created Affiliate API client will be active and your bearer token will be visible on API Clients page.
To use use your YOUR_CLIENT_ID and YOUR_CLIENT_SECRET in this project
- Open your
local.properties
file that can be found in the root directory. - Add new key value entry for your CLIENT_ID and CLIENT_SECRET like this example below in the
local.properties
CLIENT_ID=nKfx5HnFnQRiuBETu3NR6fJdhHDl7RJeImtDvxfXFX
CLIENT_SECRET=Clg8QARs5Li2YLQD7KyhRpPsLpCSuWnFLOifZi2zbYM41rKU3qZt67IWBKy3NjzLm7UJaOeVt9AUSuylm7VdymwjyzTBdh0hy8UEankB7aGj1JURxgEiBwTLearaIkquY
then Build your project.
- Then in the
MyInterceptor.kt
file reference your CLIENT_ID and CLIENT_SECRET like this
val CLIENT_ID = BuildConfig.CLIENT_ID
val CLIENT_SECRET = BuildConfig.CLIENT_SECRET