profile-pic
Vetted Talent

Pranjul Dhiman

Vetted Talent

I am a skilled Android/Flutter Developer with over 5 years of experience in developing mobile applications for multiple platforms. My passion for creating high-quality mobile apps has helped me excel in my field, and I am always motivated to learn and grow as a developer.

In my career as a Mobile app developer, I have gained proficiency in a range of programming languages, including Kotlin, Java, Flutter, and Dart. I also have experience with Jetpack Compose, adaptive layouts with constraints, image assets, and Flutter Animations, making me well-equipped to handle UI/UX tasks.

I have worked with several frameworks and libraries such as JSONModel, Crashlytics, Kotlin Coroutines, Kotlin Flows, Android SDK, Google Maps, ADT, Eclipse, Android Studio, Gradle, Maven, MQTT Protocol, Hilt, Realm, SQLite, Retrofit, Volley, Okhttp, MVC, MVVM, MVI, Glide, Picasso, ButterKnife, RxAndroid, EventBus, Getx (State management), Bloc Statemanagement, Dagger, Hilt, Espresso, and Crashlytics. I have also worked with Analytics tools like Firebase and Google Admob.

In terms of repository management, I am well-versed in Git, Bit bucket, and Azure Devops. Additionally, I have experience with Health kit and BT connectivity, WebRtc for Real-time Communication, and Sockets.

  • Role

    Mobile / App Developer

  • Years of Experience

    5 years

Skillsets

  • Map clustering
  • Viewbinding
  • DataBinding
  • Clean Code
  • Google APIs
  • Retrofit
  • okhttp
  • Volley
  • Dio
  • HTTP
  • MAPs
  • Heremap
  • Mapbox
  • Hilt dependency injection
  • realtime
  • In app purchase
  • Sqlite db
  • Room Database
  • Realm Database
  • Supabase database
  • Admob integration
  • Apprtc
  • Flutter bloc
  • GetX
  • RESTful services - 5 Years
  • Socket.IO
  • Flutter/dart - 5 Years
  • Dart - 4 Years
  • Flutter - 5 Years
  • Restful APIs - 5 Years
  • Java - 4 Years
  • Firebase
  • Websockets
  • Kotlin - 5 Years
  • stripe
  • Supabase
  • Twilio
  • Android - 5 Years
  • PayPal
  • Razorpay
  • Analytics
  • Crashlytics
  • Jetpack Compose
  • Kotlin Coroutines
  • Mongo DB
  • MVVM
  • WebRTC
  • Kotlin flows
  • LiveData

Vetted For

13Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Android Developer (Remote)AI Screening
  • 61%
    icon-arrow-down
  • Skills assessed :Strong Communication, asynchronous operations, Kotlin, MVVM, Restful APIs, Retrofit, Android, Firebase, Git, Java, Proactive, Problem Solving Attitude, XML
  • Score: 55/90

Professional Summary

5Years
  • May, 2021 - Present5 yr 1 month

    Sr Flutter/Android Developer

    Soft Radix Technologies pvt ltd
  • May, 2021 - Present5 yr 1 month

    Sr Flutter Developer

    Softradix Technologies pvt ltd
  • May, 2021 - Present5 yr 1 month

    Sr Android Developer

    Softradix Technologies pvt ltd
  • Jul, 2018 - Apr, 20212 yr 9 months

    Android Developer

    Doozycod Systems
  • Feb, 2019 - Apr, 20212 yr 2 months

    Flutter Developer

    Doozycod Systems

Applications & Tools Known

  • icon-tool

    Android Studio

  • icon-tool

    Android SDK

  • icon-tool

    Flutter

  • icon-tool

    Dart

  • icon-tool

    Kotlin

  • icon-tool

    RxJava

  • icon-tool

    Java 11

  • icon-tool

    Java 8

  • icon-tool

    Android

  • icon-tool

    Java

  • icon-tool

    Provider

  • icon-tool

    GetX

  • icon-tool

    Dio

  • icon-tool

    http

  • icon-tool

    Google Maps

  • icon-tool

    Firebase

  • icon-tool

    Firestore

  • icon-tool

    Crashlytics

  • icon-tool

    Analytics

  • icon-tool

    In App Purchase

  • icon-tool

    Stripe

  • icon-tool

    Paypal

  • icon-tool

    SQLite

  • icon-tool

    Room Database

  • icon-tool

    MongoDB

  • icon-tool

    Supabase

  • icon-tool

    Twilio

  • icon-tool

    Websockets

  • icon-tool

    Jetpack Compose

  • icon-tool

    Kotlin Coroutines

  • icon-tool

    Retrofit

  • icon-tool

    Stripe

Work History

5Years

Sr Flutter/Android Developer

Soft Radix Technologies pvt ltd
May, 2021 - Present5 yr 1 month
    • Developed Android and Flutter applications leveraging full-stack technologies
    • Developed Android/Flutter apps using FullStack, Data Engineering, Data Science and Spring Boot
    • Integrated API's, databases and web services with mobile applications
    • Designed user interfaces for mobile applications
    • Resolved application bugs and performance issues
    • Verified the accuracy of product functionality

Sr Flutter Developer

Softradix Technologies pvt ltd
May, 2021 - Present5 yr 1 month
    Lead a team of two, overseeing project development and directly liaising with clients. Translate client requirements into actionable tasks, provide technical guidance, and ensure code quality. Actively contribute to complex coding tasks, mentor junior developers, and manage project timelines.

Sr Android Developer

Softradix Technologies pvt ltd
May, 2021 - Present5 yr 1 month

Flutter Developer

Doozycod Systems
Feb, 2019 - Apr, 20212 yr 2 months
    Worked as a Flutter developer contributing to various projects, ensuring code quality, and collaborating with team members.

Android Developer

Doozycod Systems
Jul, 2018 - Apr, 20212 yr 9 months

    I am a skilled Android Developer and developing mobile applications for multiple platforms. My passion for creating high-quality mobile apps has helped me excel in my field, and I am always motivated to learn and grow as a developer.

    In my career as a Mobile app developer, I have gained proficiency in a range of programming languages, including Kotlin, Java, Flutter, and Dart. I also have experience with Jetpack Compose, adaptive layouts with constraints, image assets, and Flutter Animations, making me well-equipped to handle UI/UX tasks.

    I have worked with several frameworks and libraries such as JSONModel, Crashlytics, Kotlin Coroutines, Kotlin Flows, Android SDK, Google Maps, ADT, Eclipse, Android Studio, Gradle, Maven, MQTT Protocol, Hilt, Realm, SQLite, Retrofit, Volley, Okhttp, MVC, MVVM, MVI, Glide, Picasso, ButterKnife, RxAndroid, EventBus, Getx (State management), Bloc Statemanagement, Dagger, Hilt, Espresso, and Crashlytics. I have also worked with Analytics tools like Firebase and Google Admob.

    In terms of repository management, I am well-versed in Git, Bit bucket, and Azure Devops. Additionally, I have experience with Health kit and BT connectivity, WebRtc for Real-time Communication, and Sockets.

Major Projects

17Projects

Estatemate

    Community App (Real estate management for society)

hiBooks Online Accounting System for business

    hiBooks is a Online Accounting system to manage their expenses & profit for small and mid business.

Systemize Habit Tracker Build a Habit

    Systemize is a habit tracker app that uses systems to help you build lasting habits.

Estatemate - Community App

    Real estate management for society

Wise Online Teaching app

Uppo Flex Digital Money Card for Firm Employee

    Uppo Flex Digital Card for Company Employees to use money in shopping and foods etc.

Amino Move Fitness Reward App

    Amino will let you earn AMO Crypto tokens while you are walking.

Roadside Genius

MegaMind Abacus for kids

Amino Move

Softradix Technologies
Jan, 2023 - Present3 yr 5 months

    Amino Move allows Amino Rewards members to earn FREE $AMO for improving their health and fitness. Earn $AMO for tracking your steps or try one of the daily running challenges to earn even more! Claim your spot on the leaderboard by completing 10k steps a day and see how you rank against other Amino members. More ways to earn for being active and engaging with Amino partners coming soon.

    Earned $AMO tokens can be held, swapped, or redeemed in the Amino Catalog for amazing items and exclusive sports experiences. $AMO tokens have no monetary value and there is no purchase necessary to participate. No NFTs or cryptocurrency knowledge is required.

Chiksha Emoji Keyboard

Systemize

    Habit tracker app that uses systems to help you build lasting habits

Amino

    Earn AMO Crypto tokens while you are walking

Uppo Flex

    Digital Money Card for Firm Employee

hiBooks

    Online Accounting System for business

Systemize Habit Tracker

    Build a Habit

Wise

    Online Teaching app

Education

  • BCA

    The Glocal University, Saharanpur (2018)
  • Bachelors of Computer Applications (BCA)

    The Glocal University
  • Bachelors of Computer Applications (BCA)

    The Glocal University, Saharanpur
  • 10th

    UP Board
  • 12th

    UP Board

Interests

  • Gyming
  • Games
  • Exercise
  • AI-interview Questions & Answers

    Okay, so my name is Ranjan, and I have more than 5 years of experience with Android and mobile development as well. And if I can say, what kind of projects I have worked on, so basically, I have worked on multiple domains. That includes high-tech, fintech apps, and real estate apps as well. And if I want to add more to it, my current project, which I'm working on right now, is a fitness tracker app, and it has 800 thousand users. And if I talk about daily active users, it can have 50 thousand daily active users as well. So, basically, it's an app where you can track your daily steps and then be rewarded in cryptocurrencies. It has multiple features, including a dashboard where you can manage your standing across other users. And you can withdraw your cryptocurrencies to your wallet or utilize them to purchase items on the catalog side. So yeah. And if I talk about the architectural thing I use, I basically prefer NVB and NV main code to consume those things into the app itself. I think that's pretty much about me.

    To implementing you can see a customer panel for retrofit APIs. So we can do that with the app of retrofit itself. Sorry, the room DB itself. So you know it's kind of a database which will be providing us a kind of a structural way to secure data. We can say store data and be local to a user ID. And it helps us to maintain the proper kind of caching mechanism into the app itself. So that's one way to handle those things in the app. If we are having some kind of image caching or something, in that case, with the help of live dependency, we can cache those images as well. So if we have the proper image available we don't need to retrieve it again. So for managing we need to also manage some kind of insane status for the local stuff as well. So we can create a status which is stored into the database that we have stored. You can save the data from the retrofit. We are getting that into the app itself. Right? So that we can create a kind of status for it. Is it partially available for us? Or we can say status is sending. According to that we don't need to call the PLL manager. So that's what we can do to create some kind of cache and alternative. It's similar to if I give you an example, we can have similar to in Instagram itself. So they are managing the status of the data. They have that already. They load it there. So that's how they are managing with the help of pagination as well because we require some kind of pagination if we have multiple lists of data going on there. So according to that we can manage those things as well. So we will not repeat the same replay calls. So yeah.

    So I think basically you can see as you know we require threads to work some stuff, or you can see the data flow into each piece itself. So in that case, we have multiple soft things. Our HR is one of the things that we have. So which will be having us to handle some long running tasks where you can see some network calls or IO calls as well into the app itself on the background that you can see. It's kind of a create to create that into the worker, you can see that as well. So in our next job, basically, we create a subscription for that. So with the help of that, we can create a streamer data. So we can directly listen to that, you can say the appropriate call or you can say you recall as well. To listen to data, you can say continuously in our app. So that's the thing we can do with the other server. We need to create a subscription and for the API calls. Or we are using the app sockets.

    Dynamic feature module, with the help of Firebase remote configuration, we can create a module that delivers directly into the app. We've written a function to handle those things, allowing delivery without uploading to the Google Play Store itself. That's one way to do it. And for fallbacks on devices and Google Play Store issues, we can rectify those problems or note them. Additionally, if there's an issue in the grid itself, we can revert back to the older versions we have. We have the option to migrate to the older one in that case.

    So, as you all know, if we select following these older principles into the Android itself. So in that case, we know we have three layers into the Nvidia and the data domain and the user itself. So, with the help of use cases, what we can define is to decouple the things as well. And other than that, we can also implement the D-I in the app. So it will also allow us to decouple things as well because we are not using the instances again and again. So that one thing we can do. And for the repository and the live data, what we can do is define the repository pattern. But we define the data, knowing where it will be coming from. It can be coming from local sources as well. It can be coming from the remote server itself. So we can drive the logic through it into the repository itself to let if the connection is available, so the data will be coming from the local. As it will be returned from the remote itself. So that's what we can do with the help of it to make things more easier and more abstract today. So what we can do is create some kind of services or we can send services for that. So it can help us to add some extra code to the model itself. So you can say into the view or into the repository itself. So we do directly accessing those things into the line, you can say, into the model itself. So that's what we can do to handle those things. So yeah. So the basic points are the implementation. So to help us create instances for the required things like the repository or the model or anything which will be required into the new model itself or into the domain name itself. Second thing is, also, we need to create the custom kind of mappers for it. So it will help us to maintain a flow where the data will be flowing. Like, where the data will be coming from. Is it from local or from the remote itself. So yeah.

    Okay. So for the best example, I can see, with the help of you, if there is no third-party documentation available. So it's making it more difficult for us to implement those things because we need some kind of proper documentation or some kind of understanding of that code, how it's working, or into the SDK itself. Right? So we need to go through the SDK as well, like what method is used for what purpose in the app. And so after going through the SDK itself, we can implement those things according to our app as well. But, yeah, if there is some kind of documentation available, then it will be more easy for us to download the things. And yeah. So this will be my approach, and I will also try to find some examples if available on the internet. You can see it to see if there are any examples available. If that is not the case, like we haven't found anything on the internet, then the only thing is to go through the SDK itself, and we use those methods we have in the SDK to do that because I'm assuming there are some comments as well in the SDK itself. So, that's what I'm assuming to add the LTV implementation. Some kind of comments, including related to that method itself, can be saved. That'd be another thing we can do.

    I think it should be more like not the context itself. I think it should be like activity there because context can be like having you can say we are using some kind of fragment. So in that case, this code may create some issues. So yeah. And other than that, if we want to like pass some internal data, but then do it so we can't do that in as well. And so just wanted to make it safe within different parts of the application. It is more accessible if you like to read some activity level or you can see application level to start the activity. So that will be a great approach for me. So yeah. I would suggest to like add activity or fragment itself to access the start activity tool. So, yeah, if there is an activity so that contact should be activity and there is a fragment. So then it should be related to the fragment itself. So that will be a data point for me.

    The user data is not initialized. So first of all, it's not going to call that database dot save dot hit options. You can say the data we have in it. And so other than that, it will be creating it will be calling the notes and the data we have. Right? And another issue I'm seeing is there's a backslash into the user data itself, which will be not to make us create or you can say call that log file itself. So if it's possible to add the backslash into the double quotes itself, or we can just directly remove those things because we don't require the backslashes there. So yeah. That will be the output of that same function.

    So, first of all, I would suggest you use some kind of filtering that don't use cluster images into the meeting. So, you should be using the web or I would suggest you do the SMG. Right? So you can convert the last size into a number itself and don't use the unused. You can save third-party live versions in the APT and try to find some smaller options to it. So it can make our app access, you can say, create some less in this size as well as well. Other than that, we should be using the unified enable to, like, enable it to the URL itself so it can remove unnecessary initialization, the ones which will be like, you know, to use anywhere and the unmute method as well. So all unknown resources can be, like, that is, you can say, removed from the APK bundle itself. Other than that, we can use shrink resources as well if we want to. But, it's like, not mandatory because it can create resources into low quality as well. So, yeah, that's the other thing we can do. Other than that, I would suggest using the code certification and the nullified enable from the add-on itself. And, yeah, if we use APK, then it will have more size than the AR bundle if we are uploading that to the Play Store. And it is, you know, it will be also a requirement. We can't say it's required. It can be, say, like, a preferred way to upload some app bundle to the Play Store on that particular app itself. So it makes us distribute distribution available for the larger available with the and put the last phone, you can say, less sizing to the event field itself. So we can do.

    So, ProGuard, as you know, if we have properties, we are referring to where settings are stored, specifically the vehicle ID settings. You can have the integrated MD settings and the ProGuard card and the property wrapper. There is also the side, the ProGuard card and the configuration will be there. And those should also return into the several billing itself to allow our app to be more secure over reverse engineering, having our code equal to other things as well. So, that's the other thing we can do to make our code more difficult to recompile and access our APD code. So that's the other thing we can do.

    Okay, as you know, Dagger is a way to implement dependency injection into the app itself. So basically, if we want to implement that, I prefer to use the link itself into the Android app. So we require a hybrid build app. The annotations we have are useful. There are other things we can do. We need to create an object if we are using Kotlin to create the app module and the Retrofit on the settings at home module. We can provide it according to what's left. If I'm requiring those things, I can provide them once with the current kind of context using the annotation of single time. I need to create a provider and the modules where we want to provide any kind of instance when we access those things. I am accessing the repository in a new model. We can create them injectable into that new model itself, or in the new model if we are using Jetpack Compose in that case. This also helps us to decouple things and follow the solid principles deal. Lower mobile, for instance, cannot be dependent on lower mobile systems. That's why dependency injection is a necessary thing to have in the Android app.