profile-pic
Vetted Talent

Hardik Viradiya

Vetted Talent

As a skilled Flutter and native Android developer, I bring three years of immersive experience in Flutter development coupled with 6 years in native Android expertise. My foundation encompasses an adept understanding of Google services, REST APIs, cloud databases like Firebase, and seamless integration with various payment gateways. Embracing Clean architecture and Bloc design patterns is ingrained in my approach to crafting robust applications.

My track record speaks for itself, marked by a series of high-quality, responsive apps from conceptualization to a triumphant release on both the Play Store and App Store. I am dedicated to delivering excellence, driven by an innate enthusiasm for transforming concepts into tangible realities.

While I'm continuously honing my craft as a top Flutter developer, my standout attribute lies in communication. I prioritize clarity, always seeking the right questions before initiating work and presenting optimal solutions. My commitment to transparency ensures an open dialogue throughout our collaboration.

Seeking opportunities for long-term partnerships, I offer:

Professional Design Expertise Leveraging Flutter

Swift and Responsive Communication

Ongoing Support for Flutter App Development

Comprehensive Flutter App Source Code

Unlimited Revisions Until Absolute Satisfaction

I am committed to elevating your project with reliability, enthusiasm, and unwavering honesty. Let's embark on this journey together and bring your aspirations to fruition!

Open to engaging in full-time, part-time, or long-term commitments.

Warm regards,

  • Role

    Tech Lead - Mobile

  • Years of Experience

    11.9 years

Skillsets

  • Localization
  • Braintree
  • Blockchain
  • Fastlane
  • Hive
  • Navigation
  • BLoC
  • Riverpod
  • Provider
  • Codemagic
  • Sqflite
  • Drift
  • Obfuscation
  • Google Maps
  • Intl
  • a11y
  • Coroutines - 3.0 Years
  • UI/UX - 9 Years
  • Animations
  • DevOps
  • Firestore
  • Functions
  • Getit
  • Modular architecture
  • Native integrations
  • MVVM
  • Kotlin
  • Android - 8 Years
  • Java - 3 Years
  • Kotlin - 4.0 Years
  • Flutter - 5 Years
  • Dart - 5 Years
  • CI/CD
  • Encryption
  • Firebase - 6 Years
  • Gradle
  • GraphQL
  • Jetpack Compose - 1.0 Years
  • Java
  • REST
  • Security
  • stripe
  • UI Testing
  • Unit Testing
  • web3
  • Coroutines
  • Room
  • Retrofit
  • Payment integration
  • Mapbox

Vetted For

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

Professional Summary

11.9Years
  • Feb, 2024 - Present1 yr 8 months

    Tech Lead - Mobile

    Yooli Health Solutions
  • Sep, 2021 - Jan, 20242 yr 4 months

    Mobile Application Developer/Tech Lead

    LeewayHertz IN
  • Jan, 2017 - Sep, 20214 yr 7 months

    Senior Mobile Developer

    Ncrypted Technology
  • Jan, 2014 - Feb, 20151 yr 1 month

    Android Developer

    iGreenTech Services
  • Mar, 2015 - Jan, 20171 yr 10 months

    Android Developer

    Keshav Infotech

Applications & Tools Known

  • icon-tool

    Java

  • icon-tool

    Kotlin

  • icon-tool

    Flutter

  • icon-tool

    Dart

  • icon-tool

    Android Debug Bridge

  • icon-tool

    Android

  • icon-tool

    Android SDK

  • icon-tool

    Android Studio

  • icon-tool

    Visual Studio Code

  • icon-tool

    Google Ads

  • icon-tool

    Google Chrome

  • icon-tool

    Google Play Console

  • icon-tool

    Firebase

  • icon-tool

    Firebase Realtime Database

  • icon-tool

    GitHub

  • icon-tool

    GitLab

  • icon-tool

    Bitbucket

  • icon-tool

    Zoho

  • icon-tool

    Jira

  • icon-tool

    Slack

  • icon-tool

    Microsoft Teams

  • icon-tool

    Zoom

  • icon-tool

    Eclipse

  • icon-tool

    VSCode

  • icon-tool

    Flutter SDK

  • icon-tool

    Github

  • icon-tool

    Bitbucket

  • icon-tool

    Xcode

Work History

11.9Years

Tech Lead - Mobile

Yooli Health Solutions
Feb, 2024 - Present1 yr 8 months
    Architected and led scalable Flutter app development with optimized performance. Managed CI/CD, API integrations, security, and cross-platform features. Mentored team members and collaborated with stakeholders.

Mobile Application Developer/Tech Lead

LeewayHertz IN
Sep, 2021 - Jan, 20242 yr 4 months
    Led full-cycle mobile app development for Flutter, Android & iOS, delivering scalable solutions. Designed secure, high-performance architectures with a focus on compliance. Managed teams, optimized workflows, and drove innovation, clear communication, and technical excellence.

Senior Mobile Developer

Ncrypted Technology
Jan, 2017 - Sep, 20214 yr 7 months
    Designed, developed, and optimized high-performance Android applications. Led architectural decisions, ensuring scalability and maintainability. Mentored junior developers and improved development workflows. Stayed ahead of industry trends, fostering collaboration and stakeholder communication.

Android Developer

Keshav Infotech
Mar, 2015 - Jan, 20171 yr 10 months
    Developed and optimized applications, ensuring performance and scalability. Implemented new features, fixed bugs, and integrated external APIs. Translated UI/UX designs into functional code with smooth user experiences. Managed version control and ensured code quality through unit testing. Stayed updated on the latest trends, fostering innovation and knowledge sharing.

Android Developer

iGreenTech Services
Jan, 2014 - Feb, 20151 yr 1 month
    Developed and maintained applications with clean, efficient Java code. Assisted in testing, debugging, and performance optimization. Ensured timely project delivery through collaboration and problem-solving. Continuously learned and adapted to new Android technologies.

Achievements

  • Beginner in flutter development
  • Computer Hardware & Networking
  • Attend seminars by GDG
  • Attend a seminar on Ethical Hacking organized by Nirma University, Ahmedabad
  • Computer Hardware & Networking.
  • Attend seminars by GDG.
  • Attend a seminar on Ethical Hacking organized by Nirma University, Ahmedabad.

Major Projects

6Projects

GETTR: Social Media Platform

    A censorship-free social media platform promoting free expression and independent thought. Built using Flutter, Dart, Web3, State Management, Blockchain, Platform APIs, Navigation, REST APIs, Android, Kotlin, and Gradle.

Deliveroo

    A premium food delivery platform connecting users with top restaurants in the UK, offering seamless navigation and real-time location-based ordering. Developed with Flutter, Dart, State Management, Platform APIs, Navigation, Google Maps API, Firebase, REST APIs, Background & Foreground Services, Android, Kotlin, and Gradle.

Realsnf

    An NFT marketplace for creating, buying, and selling video content as NFTs using cryptocurrency, featuring video editing, likes, and comments. Technologies used include Flutter, Dart, Bloc, FFMPEG, Video & Image Editing, Web3, Blockchain, Payment Gateway, Firebase, REST APIs, Background & Foreground Services.

Jadu Ride

    A feature-rich app for booking rides, sending packages, and renting cars with secure data handling and driver-focused tools like navigation, ride details, and live tracking. Built with Flutter, Dart, GetX, Wallet, Live Location Tracking, Google Maps API, Payment Gateway, Firebase, REST APIs, Background & Foreground Services.

Moovl

    A smart carpooling platform connecting drivers and passengers for affordable, sustainable ride-sharing by matching available seats with potential riders. Developed using Flutter, Dart, State Management, Google Maps API, Wallet, Payment Gateway, Firebase, and REST APIs.

Fixee

    A real-time platform connecting users with local professionals for home services, offering instant bookings, custom requests, and seamless payments. Built with Flutter, Dart, State Management, Retrofit, Wallet, Google Maps API, Payment Gateway, Firebase, and REST APIs.

Education

  • Masters of Computer Applications (M.C.A.), Computer Science

    Gujarat Technological University (2014)

Interests

  • Watching Movies
  • AI-interview Questions & Answers

    Thank you. So hi. Uh, hi there. My name is. And, uh, I have a total 11 years of experience in mobile application development. I've started, uh, like, I've completed my MCA in, uh, master of computer application in 2014. And since I've, uh, since, uh, January 2014, I'm working as an junior I have started working as a junior in developer. And since then I've, uh, worked with 4 different companies, I've I've, uh, worked with beta, uh, little bit, uh, on the platter itself, uh, in in between, like, uh, but I mostly work with Android. So, uh, yeah, I I will mostly work with, uh, all kind of tooling. Like, I work with the social media applications. I work with the financial application like Wallet and, uh, cryptocurrency related. I work with dating application. I work with, uh, Yeah. So I think, um, almost I've worked with, uh, all domains, like, mostly all domains. And, uh, yeah, that is, uh, about me. And, uh, since, uh, my last company, I was working as an entry developer, but they they wanted to move to, uh, react native with their reps. And, uh, they were they were, uh, they were they have only few reps. Uh, they have 4 reps. It's for the for the product based company, and, uh, they have they wanted to know to, uh, reactivity. So that is why I'm looking for a change. And, uh, yeah, that is all about me. Like, I'm I'm married, and I have a a kid, uh, 2 year old daughter. So, yeah, that's about me.

    In this scenario, would using your Intel service be more beneficial than reducing yourself? Yeah. So, uh, let's say, uh, there is a scenario where the task which we are going to be executed in the in the service, which is related, uh, to the Excel or, uh, any particular thing, uh, which is which is executed based on any, uh, user action or any, uh, particular, uh, Excel, uh, which is provided by either the app or, uh, either the system. So in that case, uh, the intent service will be a great fit. Like, let's say, for example, uh, we wanted to execute something when there is a very low battery level, or, uh, we wanted to execute something when, uh, user have, uh, provided a specific input or either user have clicked on any button or user have, uh, set the time of that, uh, particular, uh, task. So in that case in that case, the intent service will be a very, uh, will be a great fit, I I think. Yeah.

    Can you out the the state security store? The sensitive to the user is entered key store system. Yeah. So, uh, basically, entered key store system is a is a way to store a sensitive data, like, let's say, ID password and things like that. So, uh, if we want to store our edge sensitive data in key store, so there will be, uh, we have to, uh, call the key store classes and, uh, use those classes to store the data, store and retrieve the data. So, uh, let's say if we want to store the store the data securely, send the guest, uh, like, uh, basically, KeyStore itself, uh, stores the data securely. So there is, uh, none, uh, like, like, uh, for normal applications, there'll there'll be no need to add extra security layer because, uh, key store, uh, in risk key store itself, uh, secure, uh, way to store the data. But if we like, let's say, if we want to, uh, make it more secure, uh, for some, uh, application or some use cases, so in that case, uh, what we can do is, uh, we can, uh, like, encrypt those data. Like, let's say, I'm I'm I'm storing the password to, uh, key store system, but I am not storing as a plain password, like, all of or a plain text. I I, uh, what I will do is I'll first encrypt that using a a key or using any algorithm, like s h a 256 or any like like, any way, I'll, uh, encrypt it. And, uh, whenever I'll, uh, retrieve the information of the retrieve the data from from the Android key store, I'll, uh, decrypt it and use it. So in that case, like, we also have to store the security key, like, the public and private keys to the both terms or, uh, to encrypt or decrypt data. Uh, we have to store those keys also in the in the key store system. And, uh, yeah, we can do it that way, or I thought we can store the, uh, public key on, um, on a server or somewhere or on a cloud somewhere. So, uh, using that, we can also, uh, like, integrate the data. Yeah. So that is, uh, how we can show the data securely on Android East Coast system.

    Yeah. So, uh, let's say there is a a list of images of which we want to show, uh, so, uh, on on a single screen. So in that case, I I would, uh, firstly use a recycler view. And, uh, yeah, recycler view helps, uh, RecyclerView introduce a lazy lazy loading, uh, using which, uh, the list which we are showing will be very responsive. And, uh, yeah, it will be fast, I would say. And, uh, too many of the images, uh, like, I would I would use a library like Picasso or Glide, uh, using which we can, uh, manage the bitmap or images, uh, very easily, uh, without any memory leak issues. And, uh, we can also, yeah, create our own, uh, like, let's say, our own solution, uh, similar to Picasso or, uh, Glide. But, uh, I would suggest, like, uh, to use the Picasso Glide. So in that case, uh, we don't have to, uh, worry much about the because it's a it's a well trained, uh, or, uh, vastly used, uh, platforms. And, uh, using, uh, like, uh, there will, uh, there will be very less issues, uh, instead of, uh, we are we are developing. Like, uh, if we let's say, if we create a custom solution so that, uh, that can be that cannot be error prone. Like, uh, there may be a few errors, but, uh, the Picasso and Glides are, uh, Glide are, uh, very, uh, used. Like, it's it's, uh, working with images since, uh, last few years, so they might be, uh, very upgraded. So there will be less chance to, uh, any error or the memory issues. So, yeah, I would, uh, use a Picasso or Glide or any image, uh, loading library. And that case and I'll, uh, use a recycle view to solve list. Yeah. And, uh, if we are using a list view, let's say, we, uh, in this question, we have, uh, specifically to list view. So in that case, I'll, uh, what I will do is I'll make is make a few changes in his adapter. And, uh, that way, I'll, uh, let an adapter will use, they will, uh, make some changes and, uh, list 2 adapters so that way we can, uh, populate the data easily.

    Yeah. So, uh, in input, like, uh, state management is a very crucial, uh, part, and, uh, I would suggest I'll, uh, I, uh, use live data and view manager and those kind of, uh, classes. Let's say the application is very large and, uh, there are multiple components, 80. So I would, uh, and then the check, pick, compose. Uh, I will use a a statement as well, uh, I'll, uh, like, uh, there will be a particular state, uh, assigned to a particular screen. And based on the, uh, changes on the state variable, uh, they will, uh, update the JPEG compose, uh, view. So I would so the basic strategy, uh, would be, uh, making this, uh, a different screen for different different state for different UI. And, uh, yeah, it is, uh, all we will be needing. Like yeah. That would be a best strategy, I think, uh, because, uh, every, uh, if every screen have, uh, if every screen have, uh, a space, uh, state management classes. So in that case, what we'll, uh, we'll be able to achieve is, uh, like, let's say there are 5 screen, which is currently active, uh, one upon another. Like, uh, full screen is in on post it and one screen is in, uh, a few state. So in that case, like, uh, if there is there are changes and then, uh, all the 5 screens. Let's say there is a variable, uh, which, uh, which is, uh, which affect things all the 5 screens. So let's say there is a change in that variable, so we'll be able to execute those, uh, changes in a different, uh, like, differently because, uh, the state of the classes are different, and, uh, we can, uh, execute those, uh, on a differently. So whenever there, uh, the user go, they exclude the previous screen. The changes executed there, and, uh, like, the variable is already changed. So whenever user calls on resume, uh, method, So at that time, the change will happen. So I think that will be the best strategy.

    Yeah. So, uh, basically, a repository layer is a layer where, uh, we are getting the data. So the other layers, uh, do not concern, like, how we will getting the data or from where we are getting the data. So, uh, the repository layer is basically our, uh, layer where we are getting data. So, uh, if we, uh, if we, like, discuss how you would use a repository data and flag data to be able to pull the data layer for yeah. So, uh, date, uh, repository module is itself a module which decouples data layer from from the view model. Like, let's say, for for example, like, let's say there is a tape where, uh, we are using, uh, a network data and, uh, a local storage. So we are using both. So let's say, uh, for for the first time, we have, uh, update the data from the network, and we have stored it on the local database. And then, uh, from the second time onwards, uh, until there is, uh, any change on the live data, we will, uh, sorry. Uh, until there is a change, uh, in the in the in the data on the cloud, we will what we will use is we will use data stored in the local database. So and that, uh, the repository layer manages, uh, the, uh, phasing of the data, like, uh, if there is any change. And, uh, based on the change, uh, if we want to, uh, fix the data from the network, so the repository may, uh, repository layer will minute that. And, uh, using a live data, we will, uh, update the live data, uh, at the time of change. So in that case, uh, like, a view model will will be not, uh, like, attached to the repository layer or the data fetching or data, um, gating layer. Every time, like, uh, if there is a change on the on the data at the repository layer, either fetch it from the network or fetch it from the database and, uh, pass those data to live data object. And so that, uh, that way, it will be managed, and, uh, view model have only how to refresh those data or update those data. Yeah. So that way, we can, uh, achieve that.

    In Kotlin, that what would what will be the outcome if c user function is called with unknown initialized user data object. Initialized user data object explaining the potential issue and how it could resolve them. Yeah. So, uh, in that case, if, uh, the same user is called with unknown initialized user data. Let's let's say user object is, uh, not initialized or user class, uh, is not initialized. In that case, like, uh, I think they'll give error to initialize the data first on, uh, the user if if the user is a nullable variable, uh, from from from where the same same user is called, In that case, it will allow, uh, to call the function. But here, uh, it will check it is checking that, uh, it is checking that, uh, how, uh, like, if the user is null or no. In that case, like, uh, if the user is null, so it will, uh, pay it it is printing a logo workflow, and, uh, otherwise, it will, uh, store in the database itself. And, uh, yeah. So now, uh, if the user data is not initialized, in that case, uh, like, uh, the, uh, save user function call itself will give the error because, uh, user, uh, is because that, uh, uh, Kotlin, uh, monitor the, uh, variables whenever there, uh, there is, uh, like, when whenever the null, uh, or no null, uh, it's, uh, non null object is, uh, is not in the slide. Like, let's say, we have a user late in it, uh, for, uh, for the user data, and let's say we are not initializing that in in in everywhere, and, uh, it will give a error to initialize it first. So, uh, whenever they will, uh, like, we'll call the user consent, it will, uh, at the time of compilation itself, it will give error or, uh, it will also give error at runtime. So it will, uh, give error that, uh, the data, uh, we are using, the user data, is not initialized, uh, anywhere. So, yeah, in that case, uh, we what we can, uh, show is we can, uh, create a nullable, uh, instance of the user data instead of deleting it. So in that case, uh, our function will handle if the user data is null, uh, if it is not. So, yeah, we can create an enable object of the user data instead of updating it object, and, uh, that way, we can resolve this.

    No. Object to it, we have to suggest to convey to move itself up to view within different parts of yes. So to, uh, like, uh, like, uh, to use this function, this launch activity function using a different lab, uh, part of the activity. In that case, we what we have to do is, uh, we have to, uh, put the context as an argument. So every time, like, uh, we will get 2 arguments, uh, one will be context, uh, of the classes, uh, from where we are using this launch activity function, and the other one will be, uh, the activity. I mean, uh, the class we want to redirect to. And, uh, yeah, there'll be, uh, like, uh, there are many things we can add here. Like, uh, we can also add arguments or a bundle. So which using which, we can pass the data from this activity to another activity. But, uh, yeah, basically, uh, that, uh, the bundle, uh, variable, uh, will be an optional thing because, uh, we will not be having, uh, we will not be passing the data every time. So that will be a 1 or 2 time thing or, uh, it will be not a regular thing. So we can make it optional, and we can use the context, uh, as a variable. Uh, sorry. As a request parameter. Uh, we can use context at a request parameter. So there will be, uh, 2, uh, parameters, context and activity, and then the 3rd parameter bundle will be Hoexner. And using which, uh, we can use this, uh, functional as it is. But, uh, instead of this, uh, the we have to use the context, uh, context or object. And, uh, before the start activity, we have to, uh, put a condition. If condition, if the bundle is not null. So in that case, we have to add, uh, intent dot output extra and then bundle. And, uh, yeah. Uh, so that way, we can use this, uh, function from anywhere. Uh, like, uh, like, let's say, we are we have 6 or 7. Sorry. We have 6 and 7 screens in our application, and we want to use the same function to, uh, redirect from, uh, one screen to another. So, yeah, for every places, I think we can,

    Yeah. So, uh, in that case, like, uh, I'm I'm creating an application, and it is expected to get a high, uh, uh, high, uh, users or high, uh, network request. So the volume, uh, will be very large. So in that case, what I will do is I will first, uh, create, like, I'll choose an, uh, beacon or, uh, server, which is, uh, very, very good with a high request. Let let's say there are, uh, 50 request in a second or 80 request in a second. So I would, uh, choose the base server or a base to begin, uh, for the API calls based and response. And from, uh, my end, from front end, like, let's say, I'm I'll I'll use a proper uh, API calls. Like, let's say, I'll I'll add, uh, validation on every API call. Like, let's say, uh, user token or, uh, I'm I'll I'll use authentication and, uh, every API call. So in that case, we will, uh, neglect the API calls which are, uh, coming from non user or, uh, which are, uh, not related like like or known users. So we can neglect those calls first. Secondly, I'll, uh, cancel every request. Uh, like sorry. Not cancel every request, but cancel the request which, uh, user, uh, no more required. Like, let's say, user have come to a page, uh, where API have call. Yeah. Like, let's say, there is a 2 API call on that page. So whenever user comes to the page, the 2 API codes are made, and, uh, user instantly goes back, uh, without, uh, getting the result or before getting the results. So in that case, what I'll do is I'll cancel those request. Cancel those 2 requests so there will be a very, uh, like like because of, uh, this, uh, there will be, I think, a few, uh, request call. And, uh, thirdly, what I'll I would, uh, do is, uh, if there is any static thing or static data or there is any data which, uh, updates, uh, rarely. Like, let's say, there is some some data in our app, which, uh, rarely updates in a month or in a 2 months. So I'll switch, uh, those data in our local database, and I'll fix the data from there. And I'll definitely, uh, put on a on a to token or a way, uh, so that I can identify the data on the server has updated. So I have to call those data again and, uh, update those data in my local message. So, yeah, using these techniques, I can I, uh, we can achieve the, uh, like, reliable under heavy, uh, network traffic?

    Yeah. So, uh, my, uh, strategy would be, uh, like, let's say, uh, there'll be, uh, 3 branch. First, uh, first is a main branch or, uh, or a parent. Let let's say main there is a main branch. There is a a staging branch, and there is a development. And so in that case, like, we'll first develop and, uh, staging brat sorry, development branch. We will, uh, create a different, uh, branch for different, uh, functionality or different, uh, issues. And let's say if, uh, let's say I'm I'm I'm working on a functionality. So once I'll I'll finish the functionality and test it on my I'll, uh, boost this to a development branch where, uh, someone will review the core of the of the branch and then merge it. And, uh, after that, there will be a testing. Uh, there is a proper testing and, uh, using which we can identify the issue and resolve their own. So after that, we will, uh, move to, uh, next branch, uh, publish uh, sorry. Uh, like, let's say there is a development. There is a, uh, other branch, uh, production branch. So we will move to that production branch, and, uh, there also, we'll, uh, take the details, like, test the, uh, thoroughly, uh, for any, uh, issues or anything. And if that is working fine, then also we will be moving to the main branch. And whenever there will be a push in main branch, if we will say it as c, uh, CD, like, let's say, uh, code magic or something. So, uh, using the code magic, we will, uh, what we will do, like, we will set the function that, uh, if we are getting any boost in the main branch, so in that case, we will, uh, update, uh, the AirPods player. So we'll, uh, set up the, uh, black code magic or similar for for the main branch. And whenever there is boost, the code, uh, code magic will, uh, execute the, uh, execute the, uh, code on the main branch and, uh, create a new release and, uh, push it to Play Store and send it to review. So in that case, we don't have to do anything. But, yeah, we we have to make sure that, uh, there will be no unauthorized, uh, push on the main branch. And, uh, so using, uh, like, that way, we can achieve, uh, I think it will be a great great strategy for CAC.

    Yeah. So, uh, data is basically, uh, uh, dependence injection thing. So, uh, whenever, like, we, like, uh, in our mobile app, like, let's say, we are using a single class for, uh, a variety of, uh, like, for many places. Like, let's say, there is we are storing the data, uh, in the local database, and, uh, we are accessing that, uh, local database, uh, manager or local database helper class in, uh, many activities. Like, let's say, we are fetching this data from, uh, on this activity. We are fetching their data from, uh, another activity, and we are, uh, pushing the data on, uh, the third activity. So we are using that same class and, uh, every, like, uh, let's say, on all the 3 of the activities. So using, uh, data or Hilt, what we can do is we can create a singleton class for, uh, for that particular, uh, for that particular, uh, helper class, uh, database helper class. And using which, we can, uh, create a single object and, uh, use that on all the 3 library sorry, 3 activities. So, uh, we don't have to create an object, uh, every time on every activity. Like, let's say, there are 3 activities and, uh, to access the data database related thing, I have to create first, uh, the object of that, uh, database helper class. And, uh, after that, I'll, uh, after that, I'll be able to use that class and use the methods like, uh, getting the data or fetching the data or pushing the data on the data. So instead of, uh, using data or Hilt, we what we can do is we can create a singleton object and singleton class, its object, and, uh, we can use that particular object in all the 3 of the object duties. So that, uh, that is, uh, that helps, uh, like, that manages the, uh, it reduces the multiple object concept, and, uh, it will create a single object. So in that case, uh, it will be memory efficient, I would say. Uh, Yeah.