Hi all, Pranay 👋

Software Architect | Lead Engineer - Android/Flutter | PROMPTING..., Tech savvy | Investor | Mentor. With over 9 years in Mobile development. I build products and solutions that solve users problems! Proficient in leveraging AI tools to enhance coding efficiency and drive innovation in app development. Passionate about mentoring engineers.

What I do

I have experience in working with Android, Kotlin Multiplatform(KMP) and Flutter technologies.

  • Android

  • Kotlin

  • Flutter

  • Jetpack Compose

  • Kotlin MultiPlatform

  • Java

  • Git

  • aws

  • firebase

  • python

⚡ Taking on the role of a mentor, I leverage my experience to guide and uplift junior colleagues.

⚡ Besides my technical skills, I have a strong background in team management and leadership. I've been able to guide teams to complete projects on time.

⚡ My recent endeavors include delving into AWS and discovering the world of static website generation.

Proficiency

Android

Kotlin

Jetpack Compose

Kotlin MultiPlatform

Git

Firebase

Leadership

Education

Ganpat University, Kherva
Ganpat University, Kherva
Msc(CA&IT)

Jan 2013 - Dec 2015

I have a gold medal in my master's degree.

    Ganpat University, Kherva
    Ganpat University, Kherva
    Bsc(CA&IT)

    Jan 2010 - Dec 2013

    I have a gold medal in my bachelor's degree.

      Experiences

      7Span
      7Span
      Senior Software Engineer (Consultant)
      August 2024 — Present

      • Led Android development on multiple key projects, actively contributing to planning and feature implementation during development cycles.
      • Spearheaded the setup of GitHub action flows, optimizing workflow efficiency across projects.
      • Played a key role in developing a foundational project structure plugin, streamlining project initiation processes.
      • Provided mentorship to junior developers by establishing effective onboarding frameworks and project setup guidelines, fostering team growth and efficiency.
      Mutual Mobile Solutions Pvt. Ltd
      Mutual Mobile Solutions Pvt. Ltd
      Senior Software Engineer - Android
      August 2022 — July 2024

      • Successfully contributed to 3 intricate projects, demonstrating adaptability. Also assumed a leadership role for 2 projects, spearheading Android development to drive project success with other team members.
      • Worked on the setup of GitHub action flows for projects, optimizing workflow efficiency.
      • Collaborated within an internal team to develop a foundational project structure plugin, streamlining project initiation processes.
      • Engaged in a mentorship program, providing guidance and expertise on various topics to fellow team members.
      Superpro.ai
      Superpro.ai
      Senior Software Engineer – Android
      September 2021 — July 2022

      • We are developing product collaboratively with other platform team to target our audience.
      • Leading on android side related to our product requirement, sharing idea to improve product or design new features along with preparing some POC related to video calling app.
      • Working with other team members on Android project to maintain code quality and feature development along with performing code reviewer role.
      • Along with development working on CI/CD tools to make things automated.
      Simform Solutions Pvt Ltd
      Simform Solutions Pvt Ltd
      Senior Software Engineer – Android
      May 2018 — August 2021

      • Working together with cross-functional platform teams to create Android applications and meet development objectives collaboratively.
      • Examining initial project requirements to provide preliminary project estimates and creating necessary proof of concept (POC).
      • Guiding junior and mid-level engineers in establishing project frameworks and initiating project work.
      • Fulfilling the role of a code reviewer for select Android projects to ensure the upkeep of code quality.
      LetsNurture Infotech Pvt Ltd
      LetsNurture Infotech Pvt Ltd
      Software Engineer – Android
      January 2015 — April 2018

      • Developing apps are based on a REST API and Oauth2. Work on the client and server-side of the project using the latest technical solutions for each platform using design patterns like MVP and MVVM.
      • Project Lead for 2 projects and managed project team including Web, Mobile, Design & QA team

      Open Source Projects

      JetKite

      🪁 JetKite - Leaning purpose Zerodha kite clone Android app built with ❤ using Jetpack Compose

      Kotlin

      6

      19

      767 KB

      APODNasa

      Astronomy Picture of the Day Nasa(APOD) media listing and show picture details. Built to learn and use of Latest Android development libs using Coroutines, Flow, Dagger-Hilt, Architecture Components, MVVM, Room, Retrofit, Material Guideline) https://api.nasa.gov/

      Kotlin

      1

      7

      13.6 MB

      AndroidLiveTemplates

      :rocket: A curated android templates to make android development more easy and fast :battery: !

      14

      144

      14.2 MB

      APODNasaCMP

      Compose multiplatform app to show Astronomy Picture of the Day Nasa(APOD). Built to learn and use of Kotlin multiplatform best practices with libs like koin, ktor, decompose etc

      Kotlin

      0

      6

      1.5 MB

      apod_nasa_flutter

      Astronomy Picture of the Day Nasa(APOD) media listing and show picture details. Built to learn and use of Latest Flutter development libs like Provider, GoRouter, lottie, Material Guideline) https://api.nasa.gov/

      C++

      0

      7

      62.8 MB

      UberBookingClone

      Uber Booking Experience Jetpack Compose App

      Kotlin

      0

      3

      1.1 MB

      PROJECTS

      SOME STARTUPS AND COMPANIES THAT I HELPED TO CREATE THEIR TECH

      NEO by The Saudi National Bank (SNB)
      NEO by The Saudi National Bank (SNB)

      NEO is a lifestyle banking and a financial ecosystem that enables your ambitions at every step for all of life’s moments.This is a digital bank that grows with you.

      MedCheck
      MedCheck

      MedCheck App connects to MedCheck blood pressure monitors and blood glucose monitors via Bluetooth. It records medication, height, weight, and other notes, to make sense of disjointed data so users can start to play an active role in their own healthcare.

      BassForecast: Fishing Forecast
      BassForecast: Fishing Forecast

      BassForecast uses science to predict bass feeding times, analyzing weather, water data, and moon phases with our exclusive BassForecast Rating (BFR) system. It's like having a personal bass fishing forecast in your pocket!

      Hello Eyes
      Hello Eyes

      The Hello Eyes app puts the power of an optical shop in your hands. You can access lens scanning, pupillary distance (PD) calculations, and vision exam technology in one convenient place.

      Realest - Real Estate Agent
      Realest - Real Estate Agent

      Realest is a powerful organisation app for estate agents.

      Blogs

      With Love for Developing cool stuff, I love to write and teach others what I have learnt.

      Using Lint pre-commit hook in Android project

      If you work in a team you will surely have felt the pain of not being all on the same page when it comes to code style and formatting. Code style and formatting are important for many reasons.. In this post, you will learn how to automate Ktlint and Detekt checks with a pre-commit Git hook in your Android project to run code-style checks before you commit your change list.. Using pre-commit hooks in your Android project can be beneficial as they help maintain code quality, enforce coding standards, and prevent common mistakes from being committed.. For example, you can use pre-commit hooks to run code formatting checks, static code analysis, unit tests, or any other custom validations that you deem necessary for your project.. There are several Kotlin linters available for Android projects. Some of the popular ones but in our example we are going to use Ktlint and Detekt.. In general Android projects case, Once the pre-commit hook is set up, it will execute the ktlint and detekt tasks when you try to make a commit.. If there are any code style or quality issues identified by the linter, the commit will be aborted, and an error message will be displayed. You will need to fix the issues indicated by the linter before you can successfully commit your changes.. Now navigate to the root directory of your Android project repository. And create directories as scripts and sub-directory under scripts/pre-commit.. Also, create a shell script file named pre-commit (without any file extension) intoscripts/pre-commit the directory. Here is the shell script file content:. If you have any doubts or issues, see the final created directory with file content in the working example on the below link:. :shared:preBuild : example project module task that will start after installGitHooks task completed.. Once the pre-commit hook is in place, it will be executed automatically before each commit. If the hook script exits with a non-zero status, the commit will be aborted, allowing you to fix any issues before proceeding. Let's see how in the next section!. To verify if a Git hook is successfully validating code using ktlint in the Git console, you can follow these steps now:. Now, there are a couple of possible outcomes:. If you need to check more about git hook, please check my GitHub repo.. Congratulations…. That was pretty cool, right? This is all the stuff you need to know about integrated Kotlin linting tools using git hooks in your Android project.. Before wrapping up, I want to take a moment to tell thank you for reading this article. Your continued support, comments, and engagement have been truly inspiring.. Don’t forget to clap👏/recommend as much as you can and also share📤 with your friends. It means a lot to me.. Linting tools:. Git hook docs:.

      Jetpack Compose Preview like a pro!

      Let’s discuss a smarter way to use Jetpack Compose Preview while app development!. Hey Androiders 👋, this is a blog where we’ll discuss how we can use JetpackCompose @Preview in a different way to make our app development more productive!. Before starting of JetpackCompose @Preview let's discuss how we can enable Android projects with required dependencies. We need to add tooling dependencies which will support @Preview annotation in the app:. Create a new Composable using @Composable annotation:. and create a preview for the above Composable annotated with @Composable and @Preview to show a preview in the Android studio window:. Composable preview in the design window:. Now let’s discuss this differently Preview parameters and use cases where we can update our Preview annotation and make the preview more useful.. Output:. specs:. Using MultiPreview, we can define multiple @Preview annotations and create a defined annotation that we can reuse instead of writing multiple Preview annotations every time. For example, you can use this annotation to preview multiple devices, font sizes, or themes simultaneously without repeating those definitions for every single composable.. See the example code below for how I created MultiPreview class to define reusable DevicePreviews annotation that we can reuse every time where we want multiple device preview. Using @DevicePreviews class:. Output:. You can combine multiple multipreview annotations and normal preview annotations, to create a complete set of previews. Combining multipreview annotations doesn’t mean all the different combinations are shown. Instead, each multipreview annotation acts independently and renders only its variants.. So, that was pretty cool, right? This is all the stuff related to JetpackCompose Preview.. More you can learn at Android Studio support for Compose:.

      Hilt - The official new DI Library for Android (Part-1)

      With the use of Hilt, our app code would be:. In this blog guide, we would learn:. Now let’s take a look at Hilt!. Using this codelab, we can learn how to use Hilt for the new app and refactor the existing app.. Here is the startup project which we are going to take as a reference to start integration of Hilt in-app:. So let’s check step by step guide…. 💡 With @AndroidEntryPoint to the LogsFragment will create a dependency container that is attached to LogsFragment's lifecycle. 2️⃣ Now we need an inject instance of different fields (like dateformatter ) in LogsFragment which we can do with @Inject annotation that will do field injection.. So now we have to remove manual initialization of logger and dateFormatter from LogFragment because now Hilt will initialize those fields for us😊 . We need to removeonAttach and populateFields methods.. Before going to learn about @Provides we need to learn modules, which tell hilt how to provide instances of different types.. Now you can see LogFragment has all the necessary information to inject. Hilt needs to be aware of the MainActivity that hosts the LogFragment in order to work. We need to annotate MainActivity with @AndroidEntryPoint.. ⚠️ Hilt Modules cannot contain both non-static and abstract binding methods, so you cannot place @Binds and @Provides annotations in the same class.. To perform best practices for the Hilt, new modules make code more organized. So let's create a new file called NavigationModule.kt in the di folder. Then, let's create a new abstract class called NavigationModule annotated with @Module :. To refactor MainActivity :. Now let's refactor ButtonFragment same as LogFragment . To make the class be field injected by Hilt, we have to:. ⚔Congratulations…. Till now we have covered major and basic things you integrated Hilt in your app including modules and different annotations.⚔. So here we are end up with our part-1 for the Hilt introduction and basics.. In the next article, we will finish this blog and ongoing example. You’ll learn how to scope instances to containers and how we can use qualifiers. See you in part 2….

      CameraX — Getting started guide

      Android Jetpack is a collection of Android software components which helps us in building great Android apps. It provides a series of unbundled libraries not tied to any particular version of Android, giving developers a way to support newer features on older versions of the Android operating system.. All the components of Jetpack are divided into following categories:. So in this article, we will deep dive into all the new CameraX API and features.. Thanks to Google team for working on Camera API problems and introducing a brand new library CameraX. While using CameraX, it would help us in reducing lot of boilerplate code and conditions that we need to tackle because of the vast range of android devices.. It provides a consistent and easy-to-use API surface that works across most Android devices, with backward-compatibility to Android 5.0 (API level 21).. CameraX is an addition to Jetpack that makes it easier to leverage the capabilities of Camera2 APIs. ✔️ Easy to use with capabilities of Camera2 API.. ✔️ All cameraX apis uses approaches are lifecycle aware(No need to handle lifecycle by yourself 😌).. ✔️ No need to add device-specific code in your codebase.. ✔️ Smaller APK size, more human readable code and minimal line of code.. ✔️ Fixed Front/Back camera switch crashes.. ✔️ Optimized camera closures / Fixed Incorrect Orientation / Fixed — Flash not firing.. Lets discuss how CameraX will help developers to make Camera development easy. At present, we can do following tasks by using CameraX library.. Sync your project and now our app is ready to use CameraX.. Lets design layout to achieve our different CameraX scenarios like Preview or capture. For that, Let’s update the activity_main layout file from res > layout > activity_main.xml. As we want to work with Camera we need runtime permission code for Camera and need to declare Camera Permission in our Manifest file:. Now we are ready to test our CameraX Preview case. Run your app and test your preview.. Image capture is much simpler using CameraX. User has to decide how they need image. CameraX provides Capture file and in-buffer Captured image.. We need to prepare ImageCaptureConfig for ImageCapture which we can use for photo capture:. Above code makes our capture button functional. Now you can capture an image.. In my opinion, Analysis is the best use case that cameraX does have via ImageAnalysis. We can perform image processing, computer vision, or machine learning inference on the image. Image Analysis will perform on every camera output frame.. Now run your app and You will get output like below in every second when an image is being analyzed:. CameraX extensions provide a way to access vendor-specific features like Portrait, HDR, Night, Beauty, and bokeh effects. CameraX runs a check if those features are available of the device or not. It will enable them they are available.. So, that was pretty cool, right? This is all the stuff you need to know to get started with CameraX.. Let’s just take a look at summary of what we have learned:.

      TALKS

      I LOVE TO SHARE MY LIMITED KNOWLEDGE AND GET A SPEAKER BADGE 😅

      Make your code shine with Static Analysis and SonarQube

      DevFest Ahmedabad 2022 Talk

      CameraX - Android camera in simple way!

      DevFest Ahmedabad 2019 Talk

      Reach Out to me!

      Discuss a project or just want to say hi? My Inbox is open for all.

      "Software Architect | Lead Engineer (#Android & #Flutter) | 25k+ Reputation on Stackoverflow | DevOps | Cyber Security Aspirant"

      Ahmedabad,Gujarat,India
      Open for opportunities: Yes
      pRaNaY