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 - Present4 yr 7 months

    Sr Flutter/Android Developer

    Soft Radix Technologies pvt ltd
  • May, 2021 - Present4 yr 7 months

    Sr Flutter Developer

    Softradix Technologies pvt ltd
  • May, 2021 - Present4 yr 7 months

    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 - Present4 yr 7 months
    • 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 - Present4 yr 7 months
    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 - Present4 yr 7 months

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 - Present2 yr 11 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, uh, my name is Ranjan, and I have more than 5 years of experience with the Android and the mobile development as well. And if I can say, like, uh, what kind of project I have worked on. So, basically, I have worked on the multiple domains. So you can count, uh, that as, uh, into the, uh, high-tech, fintech apps, and to the, uh, real estate apps as well. And if I want to let him, uh, add more something to it, so my instant project, which I'm working on right now, which is a fitness tracker app and which has, like, right now, 800 k users. And if I talk about the daily active users, it can have the 50, uh, k daily active users as well. So, basically, it's kind of where you can say, uh, with the tracker app, then you can then do daily daily take steps and then you will be rewarded into the cryptos. So if and it has the multiple features as well, like each other feature and the dashboard, so you can manage your, like, where you are standing, uh, across your other users. And other than that, uh, you can withdraw your or you can say the cryptos to your wallet, or you can utilize them to consume some, uh, you can say to show up anything on the catalog side. So yeah. And if I talk about, like, what kind of architectural thing I use, I basically prefer NVB and NV main code to, like, consume those things into the app itself. I think that's pretty much about me.

    Okay. To implementing, uh, you can see customer panel for, uh, retrofit APIs. So we can do that with the app of retrofit itself. Uh, sorry, the room DB itself. So, you know, it's kind of as well a database which will be, uh, providing us a kind of a structural way to secure data. We can say, uh, store data and be locally in user ID. And it helps us to, like, maintain the proper, you can say you can say kind of a, uh, caching mechanism into the app itself. So that's the one another way to, like, handle those things into the app. If we are having some kind of, uh, image caching or something, in that case, you can with the help of live dependency, uh, we can, like, cache those images as well. So if, like, uh, we have the proper, you know, you can say the image available so we don't need to recall it again. So and for, like, managing, we need to also managing some kind of insane status, uh, for the local stuff as well. So we can, like, uh, create a status which is stored into the database that we have stored. Uh, you can save the, uh, data from the retrofit. We are, like, uh, getting that into the, uh, app itself. Right? So, uh, that we can, like, create a kind of a status for it. Is it partially, you can say, uh, available for us? Or we can say status is, like, sending. According to that, so we don't need to, like, call the PLL manager. So that what we can do to, like, create some kind of cache and alternative. It's, like, similar to, uh, if I give you an example, we can have, like, similar to in Instagram itself. So they are managing the status of the data. They have that already. They load it there. So, uh, that's how they are managing with the help of pagination as well because we required some kind of, uh, pagination if we have, like, multiples of list 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.

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

    Okay. So dynamic feature module, what we can do with the help of Firebase remote configuration, with the help of that, we can, like, uh, create some kind of module which will be, like, uh, to, you can say, deliver into the directly into the app. So, uh, some kind of function we have written to, like, handle those things. So it can be delivered, uh, without, like, the upload into the Google Play Store itself. So that should be one way we can do. And the fallback of the devices and the Google Play Store issues. Okay. So, uh, in that case, we can, like, uh, rectify those things or we can say, you know, note that. And other than that, we can if there is something, like, a issue in the grid itself. So in that case, you can, like, you can say, uh, revert back to the older ones that we have. So we have the option of that to, like, migrate to the older one. So that what we can do in that case. So yeah.

    Okay. So, uh, as you all know, if we are select following these older principles into the, you can say, the Android itself. So in that case, we know we have the 3 layers into the Nvidia and, like, the data domain and the, let's say, the user itself. So, uh, with the help of, you can say, the use cases, what we can define that, uh, to, like, 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, like, 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, uh, what we can do, we can define, like, uh, the repository pattern. But we define the data, know where it will be coming from. Like, it can be, like, coming from to the you can say to the local sources as well. It can be, like, come from the, uh, to the remote server itself. So we can, like, drive the logic through it, uh, into the repository itself to let if the the the connection is available so the data will be, like, coming from the local. As it will be, like, returned from the remote itself. So that what we can do with the help of, uh, to make things more easier and more kind of abstract today. So what we can do, we can create some kind of nappers or we can send services for that. So it can help help us to, like, uh, you know, to, uh, add some extra code to the the model itself. So you can say into the video or into the repository itself. So we we do, like, directly accessing those things into the, uh, line, you can say, uh, into the remodel itself. So that what we can do to handle those things. So yeah. So the basic points are, like, the, uh, the implementation. So to help us to, like, create, you can say, uh, instances for the required things like the repository or you can say the laptop or anything which will be required into the new model itself or, like, into the domain name itself. Second thing is, like, also, we need to create the custom kind of, you can say, mappers for it. So it will help us to, like, uh, maintain a flow where it's where the data will be flowing. Like, you can say where where the data will be can coming from. Like, is it from local or you can say it is from, uh, you can say, the remote itself. So yeah.

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

    I think, uh, it should be more like not the context itself. I think it should be like, uh, activity there because context can be like, have, uh, you can say we are using some kind of, uh, fragment. So in that case, uh, this code may create some issues. So yeah. And other than that, if we want to, like, pass some, you can say, some, uh, internal data, but then do it so we can't do that in as well. And so just wanted to make it safe to you within different parts of application. Uh, it is, like, more accessible if you like to read, uh, some, uh, activity level or you can see application level, uh, 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, you can say, the, uh, start activity tool. So, yeah, if there is an activity so that contact should be, like, activity and there is a fragment. So then it should be, like, uh, related to the fragment itself. So that will be, uh, a data first for me.

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

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

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

    Okay. Uh, as you know, Dagger Dagger or you can say it is a a way to implement the dependency injection into the app itself. So basically, if we are, like, wanting to implement that or you can say basically, I prefer to use, you can say, the link itself into the, uh, into the Android app. So we are required the, let's say, the, uh, hybrid build app. Uh, you can say the annotations we have. There are other things that we can do. We need to create some kind of, uh, object if we are using, you can say, the Kotlin itself so we can create the app module there and the retrofit on the setting at home module there. So we can provide it according to what needs left. Suppose I'm requiring those things, like, you can say, uh, a single time with the current kind of so we can provide this kind of a context to it with the help of the annotation of single time. I need to create some kind of provider and the, uh, modules as well where we want to, like, uh, provide any kind of an instance where we are accessing those things. Like, I am accessing the, uh, repository into a new model. So we we can create them injectable into that new model itself, or you can see, like, the new model itself if we are using the JET prep compose in that case. So, yeah, it's also, like, helping us to decouple things as well and and creating and following the, you can say, uh, solid principles deal. So, like, lower mobile, uh, a higher mobile can't be, like, dependent on the lower mobile systems. So yeah. So that's why, uh, dependency injection is kind of a a a more necessary thing that's to, uh, have into the not in the Android app. So yeah.