Cross-platform infrastructure libraries for building apps that work everywhere — from ₹5000 Android phones in villages to Apple Watch on city wrists.
Built by Rajeev Kumar Joshi · GitHub · LinkedIn
| Package | Description | Tests | Platforms |
|---|---|---|---|
@rajeev02/vault |
Universal Secure Storage (AES-256-GCM + SQLite) | 29 | Android · iOS · Web · watchOS · Wear OS |
@rajeev02/network |
Connectivity-Aware Network Layer | 45 | Android · iOS · Web · watchOS · Wear OS |
@rajeev02/sync |
Offline-First CRDT Sync Engine | 14 | Android · iOS · Web · watchOS · Wear OS |
@rajeev02/locale |
Smart Localization (10 scripts, INR formatting) | 27 | Android · iOS · Web · watchOS · Wear OS |
| Package | Description | Platforms |
|---|---|---|
@rajeev02/notify |
Unified Notification Layer (inbox, scheduler) | Android · iOS · Web |
@rajeev02/ui |
Adaptive UI System (tokens, hooks, device) | Android · iOS · Web |
@rajeev02/auth |
Authentication & Session Management (OAuth, biometric) | Android · iOS · Web |
@rajeev02/payments |
Payments Engine (UPI, cards, wallets) | Android · iOS · Web |
@rajeev02/camera |
Camera & Photo Pipeline (capture, edit, filters) | Android · iOS |
@rajeev02/deeplink |
Universal Deep Linking (routes, deferred links) | Android · iOS · Web |
@rajeev02/document |
Document Manager (scan, OCR, PDF, sign) | Android · iOS |
@rajeev02/edge-ai |
On-Device AI (text, image, inference) | Android · iOS |
@rajeev02/media |
Media Player (audio, video, streaming, PiP) | Android · iOS · Web |
@rajeev02/video-editor |
Video Editor (trim, filters, transitions, export) | Android · iOS |
@rajeev02/app-shell |
App Shell Framework (bootstrap, feature flags, A/B) | Android · iOS · Web |
115 Rust tests passing across all 4 core crates. All 11 TypeScript packages compile clean under
--strict.
Each package is published to npm under the @rajeev02 scope. Some packages are ready to use out of the box, while others need external services or native libraries. This table shows what each package requires:
| Package | Type | Additional Setup Required |
|---|---|---|
| vault | Rust native module | Native build required — pod install (iOS), rebuild (Android), WASM (Web). Not compatible with Expo Go.
|
| network | Rust native module | Same native setup as vault |
| sync | Rust native module | Same native setup as vault |
| locale | Rust native module | Same native setup as vault |
| ui | Pure TypeScript |
None — works immediately after npm install
|
| notify | Pure TypeScript | Needs a notification delivery layer (expo-notifications, @notifee/react-native, or FCM) to actually display notifications. Library manages scheduling state only. |
| auth | Pure TypeScript | Needs a backend server with OTP sending (via Twilio/MSG91/Firebase Auth), token generation, and refresh endpoints. OAuth needs client IDs. |
| payments | Pure TypeScript | Needs a payment gateway (Razorpay/Cashfree/Juspay) backend. Library generates UPI intents and validates cards — doesn't process payments. |
| camera | Pure TypeScript | Needs a native camera library (expo-camera or react-native-vision-camera). Library manages state/filters/editing — doesn't access hardware. |
| deeplink | Pure TypeScript | Needs native URL scheme config (iOS: Associated Domains, Android: intent filters). Library parses/routes URLs — doesn't receive them. |
| document | Pure TypeScript | Needs a PDF renderer (react-native-pdf / pdf.js) and file picker (expo-document-picker). Library manages editing state. |
| edge-ai | Pure TypeScript | Needs OCR engine (Google ML Kit / Apple Vision) for text extraction, ML runtime for model inference. Library parses pre-extracted text. |
| media | Pure TypeScript | Needs a native media player (expo-av / react-native-video). DRM needs a license server. Library manages playback state. |
| video-editor | Pure TypeScript | Needs a video processing engine (FFmpeg / AVFoundation / MediaCodec). Library manages timeline/editing state. |
| app-shell | Pure TypeScript | Some modules need a backend (ApiClient, ChatEngine, AnalyticsEngine, FeatureFlagManager). CartManager and OnboardingManager work standalone. |
📖 Each package README on npm has a detailed "
⚠️ Important" section explaining exactly what external services or libraries are needed, with links to recommended providers.
All 12 packages are published on npm under the @rajeev02 scope:
# Install any package
npm install @rajeev02/vault
npm install @rajeev02/auth
npm install @rajeev02/payments
# ... etc┌─────────────────────────────────────────────────────────────┐
│ Your App (React Native / Expo / Native / Web) │
├─────────────────────────────────────────────────────────────┤
│ TypeScript API Layer (15 NPM packages) │
│ vault · network · sync · locale · notify · ui · auth │
│ payments · camera · deeplink · document · edge-ai · media │
│ video-editor · app-shell │
├─────────────────────────────────────────────────────────────┤
│ Auto-generated Turbo Modules (ubrn / UniFFI) │
│ uniffi-bindgen-react-native → TS + Kotlin + Swift │
├─────────────────────────────────────────────────────────────┤
│ Rust Core (shared native logic) │
│ vault-core · network-core · sync-core · locale-core │
├──────────┬──────────┬──────────┬────────────────────────────┤
│ Android │ iOS │ Web │ watchOS · Wear OS · IoT │
│ Turbo │ Turbo │ WASM │ Native binary (UniFFI) │
│ Module │ Module │ │ │
└──────────┴──────────┴──────────┴────────────────────────────┘
Rust core code is annotated with #[uniffi::export] proc macros. Running ubrn build auto-generates React Native Turbo Modules for Android and iOS — no hand-written native bridge code needed. Web is served via WASM (wasm-bindgen).
Works with bare React Native 0.84+, Expo SDK 54+, native Swift/Kotlin apps, and plain web.
| Library | Android | iOS | Web | watchOS | Wear OS | Android Auto |
|---|---|---|---|---|---|---|
| Vault | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Network | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Sync | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Locale | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Auth | ✅ | ✅ | ✅ | ✅ | — | — |
| Payments | ✅ | ✅ | ✅ | ✅ | — | — |
| Notify | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| UI | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Camera | ✅ | ✅ | — | — | — | — |
| DeepLink | ✅ | ✅ | ✅ | — | — | — |
| Document | ✅ | ✅ | — | — | — | — |
| Edge-AI | ✅ | ✅ | — | — | — | — |
| Media | ✅ | ✅ | ✅ | — | — | — |
| Video Editor | ✅ | ✅ | — | — | — | — |
| App Shell | ✅ | ✅ | ✅ | — | — | — |
# 1. Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# 2. Add cross-compilation targets
rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim
rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android i686-linux-android
rustup target add wasm32-unknown-unknown
# 3. Install build tools
cargo install cargo-ndk
cargo install wasm-pack
npm install -g uniffi-bindgen-react-native
# 4. Install Android Studio + NDK
# Download Android Studio → SDK Manager → SDK Tools → NDK (Side by side) → Install
# 5. Install Xcode
# App Store → Xcode 16+ → Install
xcode-select --install
# 6. Clone and setup
git clone https://github.com/Rajeev02/rajeev-sdk.git
cd rajeev-sdk
npm install# Rust — 115 tests across 4 crates
cargo test --workspace
# TypeScript — strict type-check all 11 packages
for pkg in packages/*/; do
[ -f "$pkg/tsconfig.json" ] && (cd "$pkg" && npx tsc --noEmit --strict)
done# WASM (Web)
cd tools/rust-build && ./build-wasm.sh
# iOS (requires Xcode)
cd tools/rust-build && ./build-ios.sh
# Android (requires Android Studio + NDK)
cd tools/rust-build && ./build-android.shimport { Vault } from "@rajeev02/vault";
const vault = await Vault.create({ appId: "com.myapp" });
await vault.set("token", "my-secret-value", { expiry: "24h" });
const token = await vault.get("token");import { AuthManager } from "@rajeev02/auth";
const auth = new AuthManager({ providers: ["google", "apple", "phone"] });
await auth.signIn("google");import { PaymentProcessor } from "@rajeev02/payments";
const payment = new PaymentProcessor({ merchantId: "MERCHANT_001" });
await payment.process({ method: "upi", amount: 999, currency: "INR" });| Layer | Technology | Version |
|---|---|---|
| Rust edition | Rust 2024 | 1.93+ stable |
| FFI bindings | uniffi | 0.31 |
| Bridge codegen | uniffi-bindgen-react-native | 0.29.3-1 |
| Encryption | AES-256-GCM (aes-gcm) | 0.10.3 |
| Local storage | SQLite (rusqlite) | 0.38 |
| Error handling | thiserror | 2.0 |
| Serialization | serde / serde_json | 1.0 |
| Random | rand | 0.9 |
| React Native | Turbo Modules | 0.84 |
| Expo | Expo SDK | 54 |
| Android | compileSdk / targetSdk 35 | API 24+ (Kotlin 2.1) |
| iOS | Swift 6.0 | iOS 16.0+ |
| watchOS | Swift 6.0 | watchOS 9.0+ |
| Build system | Turborepo + Cargo workspaces | latest |
| TypeScript | ^5.4 | strict mode |
rajeev-sdk/
├── packages/
│ ├── vault/ # Secure storage (Rust + TS + Android + iOS)
│ │ ├── rust-core/ # AES-256-GCM encryption, SQLite, key derivation
│ │ ├── ts-wrapper/ # TypeScript API, React hooks
│ │ ├── android/ # Native module (Kotlin)
│ │ └── ios/ # Native module (Swift)
│ ├── network/ # Connectivity, caching, queue, optimization (Rust)
│ ├── sync/ # CRDT conflict resolution, offline storage (Rust)
│ ├── locale/ # Dictionary, formatting, transliteration (Rust)
│ ├── auth/ # OAuth, biometric, session management (TS)
│ ├── payments/ # UPI, cards, wallets, subscriptions (TS)
│ ├── camera/ # Capture, photo editor, filters, AR (TS)
│ ├── deeplink/ # Universal links, deferred deep links (TS)
│ ├── document/ # Scanner, OCR, PDF, digital signatures (TS)
│ ├── edge-ai/ # On-device ML inference, NLP, vision (TS)
│ ├── media/ # Audio/video player, streaming, PiP (TS)
│ ├── video-editor/ # Trim, transitions, filters, export (TS)
│ ├── app-shell/ # Bootstrap, feature flags, A/B testing (TS)
│ ├── notify/ # Push/local notifications, inbox (TS)
│ └── ui/ # Design tokens, device detection, hooks (TS)
├── examples/
│ ├── expo-demo/ # Expo SDK 54 — 15 demo screens (iOS/Android/Web)
│ ├── react-web-demo/ # React 19 + Vite 6 — 15 library demos
│ ├── ios-native-demo/ # SwiftUI (iOS 16+) — 15 native demo views
│ ├── android-native-demo/ # Jetpack Compose + Material 3 — 15 demos
│ ├── watchos-demo/ # watchOS 9+ SwiftUI — 8 watch-relevant demos
│ └── vanilla-web-demo/ # Single HTML file — zero dependencies
├── tools/
│ └── rust-build/ # Cross-compilation scripts (iOS, Android, WASM)
├── docs/
│ ├── USAGE.md # Getting-started guide
│ ├── SETUP.md # Environment setup
│ ├── ARCHITECTURE-UPDATE-2026.md
│ └── usage/ # 15 per-library API docs
├── Cargo.toml # Rust workspace (4 crates)
├── package.json # npm workspaces
└── turbo.json # Build orchestration
Six example apps demonstrate all 15 libraries across every supported platform:
15 interactive demo screens using Expo SDK 54.
cd examples/expo-demo
npm install
npx expo start --web # Web
npx expo start --ios # iOS Simulator (requires Xcode)
npx expo start --android # Android Emulator (requires Android Studio)15 library demos in a sidebar-navigation React app.
cd examples/react-web-demo
npm install
npm run dev # http://localhost:5173
npm run build # Production build15 native SwiftUI views — Rust-core libraries via UniFFI, TypeScript libraries as API mockups.
# 1. Build Rust UniFFI bindings
cd tools/rust-build && ./build-ios.sh
# 2. Open in Xcode
open examples/ios-native-demo/RajeevSDKDemo.xcodeproj
# 3. Select iOS 16+ simulator → Build & Run (⌘R)15 Compose screens with Material 3 — Rust-core via UniFFI JNI, TypeScript modules as UI mockups.
# 1. Open in Android Studio
# File → Open → examples/android-native-demo/
# 2. Let Gradle sync
# 3. Select emulator (API 24+) → Run ▶8 watch-relevant demos (Vault, Network, Sync, Locale, Notify, Auth, Payments, UI Tokens).
# 1. Open in Xcode
open examples/watchos-demo/RajeevWatchDemo.xcodeproj
# 2. Select Apple Watch simulator → Build & Run (⌘R)All 15 libraries in a single HTML file — zero dependencies, zero build step.
open examples/vanilla-web-demo/index.html- Usage Guide — getting started on every platform
- Setup Guide — step-by-step environment setup
- Architecture Update (Feb 2026) — migration to ubrn + Turbo Modules
| Package | Docs | Highlights |
|---|---|---|
@rajeev02/vault |
VAULT.md | React hooks, namespaces, expiry, hashing, WASM, crypto |
@rajeev02/network |
NETWORK.md | Connectivity monitoring, adaptive quality, HTTP cache |
@rajeev02/locale |
LOCALE.md | INR / Lakh / Crore formatting, 10-script transliteration |
@rajeev02/sync |
SYNC.md | CRDT, Hybrid Logical Clock, conflict resolution |
@rajeev02/notify |
NOTIFY.md | Scheduling, quiet hours, channels, in-app inbox |
@rajeev02/ui |
UI.md | Design tokens, device detection, theming |
@rajeev02/auth |
AUTH.md | OAuth 2.0/OIDC, biometric, MFA, session management |
@rajeev02/payments |
PAYMENTS.md | UPI, cards, wallets, subscriptions, refunds |
@rajeev02/camera |
CAMERA.md | Capture pipeline, photo editor, filters, AR overlays |
@rajeev02/deeplink |
DEEPLINK.md | Universal/App Links, deferred deep links, routing |
@rajeev02/document |
DOCUMENT.md | Scanner, OCR, PDF generation, digital signatures |
@rajeev02/edge-ai |
EDGE-AI.md | On-device inference, NLP, image classification |
@rajeev02/media |
MEDIA.md | Audio/video player, streaming, PiP, playlists |
@rajeev02/video-editor |
VIDEO-EDITOR.md | Trim, transitions, filters, multi-track, export |
@rajeev02/app-shell |
APP-SHELL.md | Bootstrap, feature flags, A/B testing, crash reporting |
All 12 TypeScript packages are published to npm under the @rajeev02 scope. The monorepo includes a release script that handles version bumping, building, git tagging, and npm publishing in one step.
# Patch release (0.2.1 → 0.2.2) — all packages
npm run release:patch
# Minor release (0.2.x → 0.3.0) — all packages
npm run release:minor
# Major release (0.x.x → 1.0.0) — all packages
npm run release:major
# Dry run — see what would happen without publishing
npm run release:dryThe release script at tools/release.js supports fine-grained control:
# Publish specific packages only
node tools/release.js --bump patch --packages vault notify auth
# Set an exact version
node tools/release.js --version 1.0.0
# Pass OTP for npm 2FA
node tools/release.js --bump patch --otp 123456
# Skip git commit/push (useful for CI)
node tools/release.js --bump patch --skip-git
# Skip npm publish (version bump + build only)
node tools/release.js --bump patch --skip-publish
# Skip build step (if already built)
node tools/release.js --bump patch --no-buildIf you prefer to publish manually:
# 1. Bump versions across all packages
node tools/bump-version.js patch # or: minor, major, or exact like 1.0.0
# 2. Build all TypeScript packages
node tools/build-all-ts.js
# 3. Commit & push
git add -A
git commit -m "chore: bump to vX.Y.Z"
git push origin main
# 4. Publish to npm (requires npm login + 2FA)
node tools/publish-all.js
# Or publish a single package
cd packages/vault/ts-wrapper && npm publish --access public
cd packages/notify && npm publish --access publicPublishing requires authentication with the npm registry:
# Login (interactive — opens browser for 2FA)
npm login
# Or use an automation token (for CI/CD)
npm config set //registry.npmjs.org/:_authToken=YOUR_TOKENTip: Create a Granular Access Token at npmjs.com/settings/tokens with Read and write permission scoped to
@rajeev02packages for CI/CD pipelines.
| Package | Source | Publishable Directory |
|---|---|---|
| vault | packages/vault/ts-wrapper/ |
packages/vault/ts-wrapper/ |
| notify | packages/notify/ |
packages/notify/ |
| ui | packages/ui/ |
packages/ui/ |
| auth | packages/auth/ |
packages/auth/ |
| payments | packages/payments/ |
packages/payments/ |
| camera | packages/camera/ |
packages/camera/ |
| deeplink | packages/deeplink/ |
packages/deeplink/ |
| document | packages/document/ |
packages/document/ |
| edge-ai | packages/edge-ai/ |
packages/edge-ai/ |
| media | packages/media/ |
packages/media/ |
| video-editor | packages/video-editor/ |
packages/video-editor/ |
| app-shell | packages/app-shell/ |
packages/app-shell/ |
MIT © 2026 Rajeev Kumar Joshi