Inara Consultancy Services, 2025
Built the mobile application end to end
The R&I Guys
A social app for four-wheeler repair and replacement work, built end to end and shipped to the stores.
Shipped
A social-media-style app built around automobile garage workflows. Mechanics and owners post about a repair, a replacement or a job in progress, and the post is mostly photographs and video rather than text — which is what makes it a media problem before it is a feed problem.
I built the mobile application on my own. It is a large REST surface — posts, comments, threaded replies, upvotes, pinning, flagging, profiles, business accounts — and every one of those paths goes through React Query, so the list a user is looking at updates from the mutation they just made instead of from a refetch they have to wait for.
Chat is the exception, and deliberately so. Direct messaging, attachments and online presence run on Firestore listeners, because that half of the app genuinely needs a live connection; the feed does not, and a paginated, moderated feed is not something Firestore listeners are good at. Two data layers, each doing the job it is actually suited to.
The media path is the part that took the work: capture or pick, edit in-app, compress, then upload, with the interface staying responsive while a large video is still going up.
What it does
- Create posts with photos and video, with an in-app photo editor before upload
- Feed, post detail, comments, threaded replies and upvotes
- Pinned posts, post flagging and moderation actions
- Personal and business profiles
- Direct messaging with attachments and online presence
- Push notifications and in-app notification handling
- Sign in with Google or Apple
Engineering notes
- Every API path goes through React Query, with the cache updated from mutations rather than re-fetched
- A deliberate split of data layers: Firestore listeners for chat, attachments and presence, REST for the feed, comments and moderation
- Media pipeline of capture or pick, in-app edit, client-side compression, then upload — so a phone on a weak connection is not sending a raw camera file
- Folder structure organised by domain rather than by file type: apis, components, contexts, hooks and navigation each own their area
- Remote Config ships copy and flag changes without cutting a release
- Separate development and production EAS profiles with their own bundle identifiers
- A written architecture, build and deployment guide kept alongside the code




