zakirpervez / HitechMachineTest

The HiTechMachineTest app is designed to showcase proficiency in Android development and programming skills.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hitech Machine Test

The HiTechMachineTest app is designed to showcase proficiency in Android development and programming skills.

Getting Started

Discover the latest signup and preview experience.

Software Stack:

  1. Android SDK
  2. Kotlin
  3. Compose
  4. Jetpack Navigation Component
  5. Android Architecture Components
  6. Coil
  7. Retrofit
  8. Hilt Dagger
  9. Coroutines
  10. MVVM
  11. Junit4
  12. MockK
  13. Other

Git branching strategy

A Git branching strategy is a set of rules and guidelines for managing and organizing branches in a Git repository. It helps teams collaborate, maintain code quality, and streamline the development process. There are several branching strategies like Truncate based development, Git Flow etc.

For this project, I plan to use a truncate-based development strategy. Given that I am the sole contributor in this project, using this approach aligns well with the project's needs.

  1. `main` - Main branch, always stable and ready to deploy.
  2. All the feature branches should be created from master branch.
  3. All the feature branches should be merged into master branch.

Note: As I am single developer, I am not creating any feature branches. I am directly pushing the code to master branch.

Commit guidelines

Commit should always be make in following format

type(scope): [commit-details-message]-[ticket/issue_number]

*Note: I didn't used the appropriate commit guidelines in this project. However above are some guidelines which I had in my mind. *

type: Type should be represent the nature of commit. It can be one of the following.

  1. feat: A new code which is return for the feature.
  2. fix: A bug fix.
  3. refactor: A modification inside the existing code.
  4. docs: Documentation only changes.
  5. release: Release of new version.
  6. test: Adding or updating tests.
  7. chore: Updating build tasks, package manager configs, etc; no production code change.

scope: Scope indicates the module, component, or part of the project the commit affects. It can be one of the following.

  1. Component
  2. BugFix
  3. Module
  4. App
  5. Api

commit-details-message: A short, concise summary of the changes.

ticket/issue_number: Represent JIRA/Github/Gitlab ticket/issue number.

  • Note:
  1. There is no git pre-hooks added.
  2. As I don't have any JIRA/Github/Gitlab ticket/issue number, I am assuming a ticket no TN:10000 and adding it in my commits.
  3. No CI/CD integration [Gitlab/Github/Bitrise/Bamboo/Fastlane etc would be good candidates]
*

Architecture Used

This is application is built using a MVVM architecture.

mvvm_architecture

Testing

  1. Unit Testing: Unit test cases are added.
  2. Instrumentation Testing: No instrumentation test cases are added.

Security

  1. Network security config added
  2. Proguard/Dexguard not added

Note: Not adding the proguard/dexguard.

Interceptor/CodeAnalysis/Logging/Memory Detection Tools

Integrated following tools inside the app

  1. lint:

    Lint is a static code analysis tool provided by Android Studio. It helps identify issues in Android project code that may cause runtime errors, security vulnerabilities, performance problems, or other code quality problems. Lint performs a wide range of checks, including identifying unused resources, detecting layout performance issues, highlighting potential security vulnerabilities, and more. It provides suggestions and warnings to help developers write better code and follow best practices.

  2. kt-lint:

    KtLint is a Kotlin-specific code style checker and formatter. It enforces a consistent coding style in Kotlin projects by defining coding rules and then applying those rules to the source code. KtLint helps maintain a uniform and readable codebase by automatically formatting code and highlighting deviations from the defined style rules. It is often used in conjunction with Kotlin projects to ensure code consistency and adherence to a project's coding standards.

  3. detekt:

    Detekt is a static code analysis tool for Kotlin that helps developers identify issues and enforce coding standards in Kotlin codebases. Similar to Lint for Android, Detekt analyzes Kotlin code for various issues, such as complexity, code smells, potential bugs, and anti-patterns. It provides a set of configurable rules to detect issues and can be customized to match the coding standards and guidelines of a project.

  4. leak canary:

    LeakCanary is a memory leak detection library for Android applications. It helps developers identify and diagnose memory leaks in their apps. Memory leaks can lead to increased memory consumption and application crashes, so LeakCanary is a valuable tool for finding and fixing such issues. It automatically detects and reports memory leaks, providing detailed information about the leaking objects and their references, making it easier to address the problem.

    leak_canary
  5. Timber:

    Timber is a popular logging library for Android applications. It provides a simple and efficient way to log messages and debug information in your Android app. Timber offers several benefits over the standard Android logging methods

Note : No other network interceptor and crashing tools are added [Chuck/Stetho/Crashlytics/Sentry]

App Screens

  1. Splash Screen: Pause for a duration of 3 seconds before transitioning to the Signup Screen..
    splash_screen
  2. Signup Screen: Present a signup form featuring validation checks. Once the user successfully passes all validations, seamlessly transmit the signup form data to the Profile Review Screen utilizing a SharedViewModel for efficient communication.

    Signup_Screen
  3. Profile Review Screen: Display the information originating from the signup screen, and upon clicking the sign-in button, initiate a call to the JsonPlaceHolder users API to refresh and synchronize the user data.

    profile_review_screen

About

The HiTechMachineTest app is designed to showcase proficiency in Android development and programming skills.


Languages

Language:Kotlin 100.0%