Skip to content
Vijay Gojiya

Build. Ship. Maintain.

The React Native developer your apps deserve.

Six apps live on the App Store and Play Store, Turbo Modules written in Kotlin and Swift, and full-stack products where I own the phone, the web app and the API.

10,000+ downloads across six live apps

Building for mobile
5yrs
Live on the stores
6apps
Combined downloads
10k+
TypeScript codebases
100%

Full stack

Products where I own every surface.

Mobile, web and API as separate repositories, behind one auth configuration and one database.

VM Academy

Personal, 2026

How it is built

A place to learn several skills in one sitting rather than one skill across five abandoned tabs. Five domains, around twenty categories, tracks that run across them, and an invite-only faculty rather than a marketplace with two hundred thousand listings and no editor.

  • web

    TanStack Start on Nitro

    Marketing site, student experience and /admin in one application. Mux for video playback and direct uploads.

    • TanStack Start
    • TanStack Router
    • TanStack Query
    • Nitro
    • Mux Player
    • Base UI
  • server

    Hono on Node

    REST over Hono, Drizzle against Postgres, Razorpay for payments, Resend for mail. Each client carries a generated contract file, so no client imports server code.

    • Hono
    • Drizzle ORM
    • Postgres
    • Better Auth
    • Razorpay
    • Resend
  • native

    Expo 57, React Native 0.86

    Browse, learn and track progress. Web sells and mobile learns, which keeps store billing out of the purchase path.

    • Expo 57
    • React Native 0.86
    • React 19
    • TanStack Query
    • Reanimated 4
    • MMKV

Kasoti

Personal, 2026

How it is built

A Gujarati-first mock test app for the GSSSB CCE prelims, built for a single aspirant. The questions are not the product. The analysis after the paper is, which is why the scoring lives in its own package with no imports and its own unit tests.

  • native

    Expo 57, React Native 0.86

    Where she sits the papers. Offline-first, because the exam hall has no signal either.

    • Expo 57
    • React Native 0.86
    • Reanimated 4
    • MMKV
    • TanStack Query
  • server

    Hono

    Serves content and receives attempts. Better Auth mounted from a shared package.

    • Hono
    • Better Auth
    • Zod
    • Drizzle ORM
  • web

    TanStack Start on Nitro

    The admin panel: question bank, papers, accounts. Talks to Neon through server functions.

    • TanStack Start
    • Nitro
    • Base UI
    • shadcn
    • Neon Postgres

Selected work

Things that shipped.

The screens

Real apps, real screens.

Toolkit

Everything here has shipped in something.

Read out of the package files in the repositories, not a wishlist.

Languages
TypeScriptJavaScriptKotlinSwiftPythonSQL
Mobile
React NativeExpo, managed and bareNew ArchitectureTurbo ModulesExpo RouterReact NavigationReanimatedGesture HandlerEAS BuildEAS UpdateExpo Updates
Web
React 19TanStack StartTanStack RouterTanStack QueryNitroViteTailwind v4shadcnBase UI
Server and data
HonoNestJSDrizzle ORMPostgresNeonFirestoreGraphQLRESTZodBetter AuthResend
State and storage
React QueryRedux ToolkitZustandContextMMKVAsyncStorageredux-persist
Platform services
Firebase AuthCloud MessagingCrashlyticsAnalyticsRemote ConfigStoragePerformanceGoogle MapsMapboxGeolocationDeep linkingNotifeeMux
Payments
StripeRazorpayJuspay
Quality and delivery
JestReact Native Testing LibrarySentryPostHogGitHub ActionsFastlaneTurborepobunpnpmDockerCloudflare WorkersBiomeESLint

Open source

Google Places, without the wrapper.

Every Places autocomplete library for React Native does the same thing: call the HTTP API from JavaScript and draw the results list yourself. It works, and it is always slightly wrong. The debounce is yours to tune, the session tokens are yours to get right, and the list never quite feels native because it is not.

This one renders the autocomplete interface that Google ships in its own Android and iOS SDKs, driven from JavaScript across a Turbo Module. Kotlin on one side, Swift on the other, no bridge in between. Built for the New Architecture and bridgeless from the first version rather than ported to it.

$ npm install react-native-google-places-turbo
Architecture
Turbo Module, bridgeless
Android
Kotlin, Places SDK
iOS
Swift, Places SDK
License
MIT
Version
0.1.1

Firebase Cloud Messaging module

Permission requests, token registration, and foreground and background message handling, built as a native module rather than wired up in JavaScript.

Contact

Have something that needs building?

Contract work, a codebase that has fallen behind, or a native module nobody wants to write. Tell me what it is and I will tell you honestly whether I am the right person.

Based in
Ahmedabad, Gujarat, India
LinkedIn
vijay-gojiya