Activity

Darshan

Shipped this project!

Hours: 6.1
Cookies: 🍪 28
Multiplier: 4.61 cookies/hr

This Update is mainly focused on Optimization.
In my last ship, I got comments on data loading and its latency. The jobs are taking too long to load.
So I sat back and went through the flow of the backend and frontend app from start to end, and noted down the scope of improvement and optimization. Later, I fixed them one by one, and now in the current release, I have implemented caching, optimized query and data fetching in the backend, fixed navigation stack in the app, also implemented more asynchronous worker connections ~1000 for quick and fast working using gevent.

Darshan

Performance Optimization – Sevavaani Worker & Backend
The initial implementation of the system had several performance bottlenecks due to inefficient data handling and synchronous processing. Frequent redundant database queries, over-fetching of unnecessary data, and blocking operations led to high response times and instability. On the frontend, improper lifecycle handling caused duplicate API calls, while navigation and search logic further added to performance overhead.
Key Issues

  • Redundant database queries increased latency and server load
  • Over-fetching of complete datasets even when partial data was sufficient
  • Synchronous operations blocking workers, causing restarts
  • Duplicate API calls due to improper useEffect handling
  • Inefficient navigation leading to unnecessary stack growth
  • Backend-dependent search increasing response time and load

Optimizations Implemented
Significant improvements were made by restructuring both backend and frontend logic. Data fetching was optimized to reduce redundancy, asynchronous processing was introduced to improve speed, and concurrency handling was enhanced to ensure system stability under load.

Backend Improvements

  • Reduced redundant queries and filtered only required data
    → getAllJobs improved from ~13s to ~0.43s
  • Optimized client data fetching using selective retrieval
    → get-chatlist improved from ~9.56s to ~1.9s
  • Introduced asynchronous data fetching to parallelize operations
    → reduced from ~6.24s to ~1.15s
  • Enabled concurrency using gevent for non-blocking execution
    → stable handling of ~1000 concurrent connections

Frontend Improvements

  • Prevented duplicate API calls using controlled useEffect logic
  • Implemented global context caching to reuse fetched data
  • Optimized navigation to avoid redundant screen pushes
  • Implemented client-side search using filtering to eliminate repeated backend calls

Additional Enhancements

  • Implemented search across jobs, requests, and chat
  • Added Help & Support modal with email integration
  • Linked the About Us section to the project repository
Attachment
1

Comments

Darshan
Darshan 13 days ago

However, in this release, voice assistant is under development and will be made available in next release.

Darshan

After much much errors, now things are getting functional
For many days, i was struggling with websockets + async functions + kafka producers/consumers + deployment issues.
The issue was things worked well on localhost with ws:// but when deployed on railway or render.
So i switched from flask to fastapi in python and use create_task() for background tasks

Attachment
Attachment
0
Darshan

ITS TIME FOR DEVLOG
Update : Completed the producer and consumer part of kafka from react native app and admin webpage.
.
.
Journey:

  • I faced a struggle in figuring out the actual and correct architecture for producer and consumer, but at last, after going to multiple YouTube videos and articles, I implemented websockets in Python Flask and a separate room for producing events, and a separate room for consuming location events
  • New challenge which arose later was running producer and consumer loop simultaneously and asynchronously… but later I switched to creating a separate thread for each consumer
  • At last, I created an admin dashboard to select a particular topic and consume events from it
Attachment
0
Darshan

Finally completed with both screens, i.e., “NEW RIDE” and “ACTIVE RIDE” in the app, So my next task is to keep producing events from driver app and monitor those from admin dashboard

Attachment
Attachment
0
Darshan

––UPDATION IN WORKFLOW––
Earlier, I decided to directly produce location events from the driver’s app (in react native) to kafka topic and then directly consume it into the admin portal (webpage) to monitor and track
BUT BUT BUT, I didn’t get any working module of Kafka which will be compatible with React Native.
So I went through 2-3 articles and found out the correct architecture, and accordingly I revised my plan,
Now the following is my work flow
Driver app(react native) —–connects, joins and sends loc events—> python–>websocket room–>kafka-topic—–stream events—>admin portal

Attachment
Attachment
0
Darshan

Due to new version release of Expo, I struggled a lot with project setup. I had to debug and research to solve many module version mismatches.
And the most time consuming and boring part is app prebuilding and bundling….Its always took long to assembleDebug and installDebug…
But after long, finally the project is free from all version mismatches and now runs smoothly

Attachment
0
Darshan

Earlier, while registering a new user, they need to verify the phone number, but this process required the OTP service to be continuously active on my local machine (which was not possible). So I removed that dependency and introduced a simple worker registration. Give it a try and let me know your feedback.
Guys, for your convenience, I have created a combined working video of my application..Enjoyyy

Attachment
0
Darshan

My last ship got rejected because the user registration failed due to inactive OTP server..
Actually, my original approach was to keep phone number verification using OTP but when searched about it, all OTP services were paid (quite costly as well). So i built my own approach..
You guys can check the sequence diagram in attached images. I built an android app with broadcast receiver registered for incoming messages and i run that on my device..
So when user enters phone number and clicks “Continue”, an OTP request sms along with uid is sent from their device to my phone, and as broadcast receiver is present, The app detects the new message -> generated secure random OTP -> sends back to USER from my phone + store in db
—–But PROBLEM : It required the app to be continuosly active on my device, which is practically not possible..
So i removed that dependency in this update, and now the user registration would work fine

AND—––
Guys, for your convenience, I have created a combined working video of my application..Enjoyyy

Attachment
Attachment
0
Darshan

Shipped this project!

Hours: 54.04
Cookies: 🍪 334
Multiplier: 6.18 cookies/hr

I built a full-fledged dual role platform named “SevaVaani”, and this is worker app. This solves the problem of connection between normal users and blue collar workers like plumbers, electricians, cleaners, etc

Darshan

In this phase, I worked on sending quotation to jobs, and then viewing “My Requests”

  • Once job is assigned, It will appear in “My Jobs”
  • While completing job, unique QR will be generated, which will be shown to client
  • Offline app interactions using async storage and syncing logic
  • Aadhar based worker verification
  • Corresponding backend apis in Python Flask
Attachment
0
Darshan

Shipped this project!

Hours: 54.53
Cookies: 🍪 267
Multiplier: 4.9 cookies/hr

I have built a react native application of SevaVaani-Client with real-time features and offline AI Voice assistant communication for many application interactions

Darshan

Recently I worked on adding a business model by integrating 3 subscription plans

  • Basic
  • Standard
  • Premium
    and based on these plans, the client will have different level of privileges
    like client with BASIC subscription plan is only allowed to post max 3 jobs, chat with max 2 workers
Attachment
Attachment
0
Darshan

I’m working on my first project! This is so exciting. I can’t wait to share more updates as I build.

Attachment
0