Abdelilah27 / Pokemon-App

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pokemon-App

This Android application is a showcase of modern Android development practices and the Jetpack Compose framework. It provides a delightful experience for exploring Pokemon details and information.

Project Details

Tech Stack

  • Kotlin Version: 1.9.0
  • Compose Version: 1.5.4
  • Architecture: Clean Architecture with MVVM
  • Async Programming: Coroutines and Flow
  • Dependency Injection: Dagger Hilt
  • Network Calls: Retrofit
  • Unit Testing: JUnit and Mock
  • Image Loading: Coil
  • Color Extraction: Palette
  • Splash Screen: Google Splash Screen API

Project Links

App Features

  • Ui Compose State Management: Effectively manages UI state using Jetpack Compose.
  • Responsive Design: Ensures an optimal viewing experience across various screen sizes.
  • Paging: Implements paging for efficient loading and displaying of Pokemon entries.
  • Clean Code: Follows clean coding practices for maintainability and readability.
  • Unit Tests: Includes unit tests covering up to 80% of the codebase.
  • Secure Base URL: Ensures the security of the base URL.
  • Logger Mechanism: Utilizes a network response adapter for efficient error tracking.
  • Dark and Light Mode: Supports both dark and light themes for user preference.
  • Animated Splash Screen: Welcomes users with an engaging animated splash screen.
  • Animated Bar States: Implements animated bar states for a dynamic user interface.

Improvement

  • Enable Obfuscation: Enhance code security through obfuscation techniques.
  • UI Tests: Develop UI tests for comprehensive coverage and robustness.
  • Cache Encrypt Store Mechanism: Implement a secure mechanism for caching and encrypting data.
  • Logging to File Device or Using Crashlytics: Track errors efficiently by implementing logging to a file on the device or using Crashlytics.
  • Implement SearchBar: Added for UI conformity, further enhancements are possible.

Challenges and Resolutions

  • Details Lists States Management: Resolved by using produceState to manage states such as success, loading, and failure effectively.
  • Nested Scrolling Column and LazyVerticalGrid: Resolved by adjusting the screen height to the LazyVerticalGrid to prevent infinite height problems.

Demo

Demo.1.mp4

Design

Design influenced by:

Note: All commits in this repository are made using the company account "abdelilah.ngadi@idemia.com."

Thank You. To Success!

About


Languages

Language:Kotlin 100.0%