Humblr for Reddit. Android Kotlin, Single activity mobile application project with: Clean, MVVM, Hilt DI, coroutines, OAuth2, OkHttp Interceptor, Retrofit, Moshi (including PolymorphicJsonAdapterFactory & ScalarsConverterFactory), DelegateAdapters, Onboarding with ViewPager2 & TabLayout, Lottie animation. Full support of Russian and English locales.
Check Readme file inside the project for description in English .
Onboarding, authorization through Reddit:
New/Popular Subreddits listings with Search function. Subscribe/unsunscribe, share link on subreddit. Open subreddit, upvote/downvote post, download, save to online collection.
Favorites screen: Subreddits - Posts and All - Saved switchers.
My Profile screen: logged user's friends list, Clear saved posts, Logout.
Click on any Reddit user -> User screen with his Posts. Making Friends:
- Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π° Reddit Π²Π°ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (https://github.com/reddit-archive/reddit/wiki/OAuth2) ΠΈ Π²ΠΏΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ» AuthConst.kt:
- const val CLIENT_ID = "your-client-id"
- const val REDIRECT_URI = "your-redirect-uri"
ΠΠ°Π΄Π°Π½ΠΈΠ΅
ΠΠ°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-Π°Π½Π°Π»ΠΎΠ³ Reddit.
ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ²ΡΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅,
Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ Π΅Π³ΠΎ.
ΠΠΎΠ»Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ API: https://www.reddit.com/dev/api
ΠΡΠΎΡΠΎΡΠΈΠΏ Figma
Π‘ΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΎΠ½Π±ΠΎΡΠ΄ΠΈΠ½Π³Π°.
ΠΠ½Π±ΠΎΡΠ΄ΠΈΠ½Π³ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΡΠ°Π·Ρ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ
Π) ΠΠΊΡΠ°Π½ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΊΡΠ°Π½ΠΎΠΌ ΠΏΠΎΡΠ»Π΅ ΠΎΠ½Π±ΠΎΡΠ΄ΠΈΠ½Π³Π°.
Π) ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π±Π΅Π· Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅Π»ΡΠ·Ρ.
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: https://github.com/pratik98/Reddit-OAuth
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΡ Β«Π‘Π°Π±ΡΠ΅Π΄Π΄ΠΈΡΡΒ»
ΠΠ²Π΅ΡΡ
Ρ ΡΡΡΠΎΠΊΠ° ΠΏΠΎΠΈΡΠΊΠ°, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ Β«ΠΠΎΠ²ΠΎΠ΅/ΠΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ΅Β».
ΠΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ ΠΏΡΡΠΌΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡΠΎΠ².
ΠΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡΠ°.
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡ
Π ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡΠ΅ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΡΡΠ°Π·Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π².
ΠΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΎΡΠΊΡΡΡΡ Π΅Π³ΠΎ.
ΠΠ²Π΅ΡΡ
Ρ ΠΎΠΊΠ½Π° Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡΠ° ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠ½ΡΠΎΒ», ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡΠ°.
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡΠ°
ΠΠ±ΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡΠ΅.
ΠΠ½ΠΎΠΏΠΊΠΈ:
Β«ΠΠΎΠ΄ΠΏΠΈΡΠΊΠ°/ΠΎΡΠΏΠΈΡΠΊΠ° Π½Π° ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡΒ».
Β«ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡΒ».
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
ΠΠ²ΡΠΎΡ, Π²ΡΠ΅ΠΌΡ, ΡΠ΅ΠΊΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
ΠΠ½ΠΎΠΏΠΊΠΈ:
Β«Π‘ΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅Β».
Β«ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ°Β».
ΠΠ½ΠΎΠΏΠΊΠΈ Π΄Π»Ρ Π³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΈΠΆΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΏΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° Β«ΠΠΎΠΊΠ°Π·Π°ΡΡ Π²ΡΡΒ».
ΠΠ½ΠΎΠΏΠΊΠ° Π²Π΅Π΄ΡΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ.
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ ΡΠ·Π΅ΡΠ°
ΠΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠΈΠ»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ·Π΅ΡΠ°.
ΠΡΠ°ΡΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠ½ΠΎΠΏΠΊΠ° Β«ΠΠ°ΡΡΠ΅Π½Π΄ΠΈΡΡΡΡΒ».
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΡ Β«ΠΠ·Π±ΡΠ°Π½Π½ΠΎΠ΅Β»
ΠΠ²Π΅ΡΡ
Ρ Π΄Π²Π° ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ: Β«Π‘Π°Π±ΡΠ΅Π΄Π΄ΠΈΡΡΒ»/Β«ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈΒ», Β«ΠΡΠ΅Β»/Β«Π‘ΠΎΡ
ΡΠ°Π½ΡΠ½Π½ΡΠ΅Β».
ΠΠΈΠΆΠ΅ ΡΠΏΠΈΡΠΊΠΈ ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π².
ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄Ρ ΠΏΡΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ½Π½ΠΎΠΌ:
ΠΡΡΠ°ΡΡΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΎΠ½Π»Π°ΠΉΠ½.
ΠΡΠ»ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Π°, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ.
ΠΠ΅Ρ β ΠΏΠΈΡΠ΅ΠΌ, ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½Π°.
ΠΡΡΠ°ΡΡΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. (//ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ)
ΠΠΈΡΠ΅ΠΌ, ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°.
ΠΠΎΠ±Π°Π²ΠΈΡΡ Π² Π΄ΡΡΠ·ΡΡ
ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ·Π΅ΡΠ°.
Π‘ΠΏΠΈΡΠΎΠΊ Π΄ΡΡΠ·Π΅ΠΉ Π»Π΅ΠΆΠΈΡ Π² ΠΏΡΠΎΡΠΈΠ»Π΅.
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΡ Β«ΠΡΠΎΡΠΈΠ»ΡΒ»
ΠΠ½ΠΎΠΏΠΊΠ° ΡΠ°Π·Π»ΠΎΠ³ΠΈΠ½Π°.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ.
ΠΠ½ΠΎΠΏΠΊΠ° Β«ΠΡΠΈΡΡΠΈΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ½Π½ΡΠ΅Β».
Π‘ΠΏΠΈΡΠΎΠΊ Π΄ΡΡΠ·Π΅ΠΉ. //ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΎΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠΊΡΠ°Π½Π΅