N|Solid hexfa

N|Solid Inpost Android App


    Details 📜

    This Android project is a simple and lightweight application that allows users to view a list of postal shipments along with their respective status. The application reads the shipment data from a static JSON file and presents it to the users. With this app, users can easily track and monitor the status of their shipments.

    The user interface of the app is designed to be simple and efficient, enabling users to effortlessly browse through the list of shipments and check their status. Additionally, users will be able to view the status of multiple shipments simultaneously, staying informed about the progress and latest updates of each shipment. The app aims to provide a user-friendly and cost-effective solution for users to conveniently track their shipments.

    Features 🚩

    • Shipment list
    • Parcel more details
    • Archivement
    • Archive list
    • Rotatable
    • Highlight parcels
    • Sorting by: Status, PickupDate, ExpireDate, StoredDate, Number
    • Pull to refresh
    • Local database
    • Simple dark mode style
    • UnitTest
    • Modern strcuture
    • Modern libraries

    Lets Start đŸ•ē

    Clone this repository and import it into your Android IDE

    https://github.com/hexfa/InpostApp.git

    Resources ℹī¸

    • Documents

      For looking at the last document code version of this project, you can generate it by Dokka section.

      Also, you can see the first document version of the project on this link Documentation

    • Remote API

      This app doesn't have any remote API
    • Structure

      Model-View-ViewModel (MVVM)

    Configuration ⚙ī¸

    • Dokka

      • I recommend Html document type

      • I recommend to use the JAVA JDK 18 and set it in your JAVA_HOME environment. after putting it in the system needs a restart

        • Dokka terminal commands
          Type Syntax
          Html ./gradlew.bat dokkaHtml
          Java doc ./gradlew.bat dokkaJavadoc
          Gfm ./gradlew.bat dokkaGfm
        • Output Location

          app -> build -> dokka

    Keystore 🗝ī¸

    • Location of the keystore is in root directory(inpost.jks).
    • Alias= inpost
    • Key password= inpost2023
    • Key store password= inpost2023

    Preview 📱

    Images đŸ–ŧī¸

    Inpost App hexfa Inpost App amir

    Video đŸ“Ŋī¸

    Inpost App dehdarian fallah

    Built With 🛠

    • Kotlin: A modern and concise programming language for Android development.

    • Coroutine: A Kotlin library that simplifies asynchronous programming and enables the writing of asynchronous code in a sequential manner.

    • Hilt: A dependency injection library for Android that simplifies the process of injecting dependencies into Android components.

    • LiveData: A lifecycle-aware data holder class in Android Jetpack that allows data to be observed for changes and provides automatic updates to the UI.

    • Dokka: A documentation generation tool for Kotlin and Java that generates API documentation in various formats, including HTML and Markdown.

    • Junit: A popular unit testing framework for Java and Kotlin that provides a set of annotations and assertions for writing automated tests.

    • Mockito: A mocking framework for unit testing in Java and Kotlin that allows the creation of mock objects to simulate dependencies and behavior during testing.

    • Room: An SQLite database library for Android that provides an abstraction layer over SQLite and enables efficient database operations using annotations and generated code.

    • Moshi: A modern JSON parsing and serialization library for Kotlin and Java that makes it easy to convert JSON data to Kotlin/Java objects and vice versa.

    • Gson: Gson is a powerful JSON library that simplifies JSON parsing and serialization in Android through a flexible reflection-based approach.

      💡 Note 💡

      Using both Moshi and Gson in an Android project offers the benefits of efficient code generation, support for Kotlin-specific features, and flexibility in handling different JSON structures and external dependencies. This ensures compatibility with a wider range of libraries and APIs, enhancing the overall flexibility and functionality of the application. Additionally, having both libraries available allows developers to choose the most appropriate one for each scenario, optimizing performance and convenience during JSON parsing and serialization tasks.

      💡 Advice 💡

      In some cases, it may even be beneficial to use both LiveData and Flow together. You can use Flow for data processing and transformation in the background, and then use LiveData to observe and update UI components based on the transformed data.

    GitHub

    View Github