100% offline developer toolkit for mobile. HTTP client, JSON formatter, encoder/decoder, hash generator, regex tester, timestamp converter, and color converter — all on-device, no internet required.
| Tool | What it does |
|---|---|
| HTTP Client | Full-featured fetch client with method selector, custom headers, request body, response viewer, and timing |
| JSON | Format (pretty-print), minify, and validate JSON |
| Encode/Decode | Base64, URL encoding, HTML entities — encode and decode in both directions |
| Hash | SHA-1, SHA-256, SHA-512 hashes via @noble/hashes |
| Regex | Pattern tester with match highlighting, group extraction, and flag toggles |
| Timestamp | Convert Unix seconds ↔ ISO 8601, or grab the current Unix time |
| Color | Convert Hex ↔ RGB ↔ HSL with live preview swatch |
All 7 tools run entirely on-device. Airplane mode? Still works.
- Expo SDK 54 + React Native 0.81 + React 19
- Expo Router v6 — file-based navigation
- NativeWind — Tailwind CSS for React Native
- Zustand — request history, persisted via AsyncStorage
- @noble/hashes — cryptographic hash functions (pure TypeScript)
- expo-clipboard + expo-haptics — copy feedback
- Lucide React Native — icons
git clone https://github.com/faizkhairi/dev-companion
cd dev-companion
npm install --legacy-peer-deps
npm startScan the QR code with Expo Go on your phone.
app/
├── (tabs)/
│ ├── client.tsx # HTTP Client tab
│ ├── tools.tsx # Tool grid
│ └── history.tsx # Request history
├── tools/
│ ├── json.tsx
│ ├── encode.tsx
│ ├── hash.tsx
│ ├── regex.tsx
│ ├── timestamp.tsx
│ └── color.tsx
├── _layout.tsx # Root Stack
└── index.tsx # → redirects to HTTP Client
src/
├── components/
│ ├── CopyButton.tsx # expo-clipboard + haptic feedback
│ ├── KeyValueInput.tsx # Header/param editor (HTTP Client)
│ ├── StatusBadge.tsx # Colored HTTP status pill
│ └── ToolCard.tsx # Tool grid item
├── stores/
│ └── history.ts # Zustand (last 50 requests, AsyncStorage)
└── utils/
├── color.ts # Hex ↔ RGB ↔ HSL math
├── encode.ts # Base64, URL, HTML entity encoding
├── format.ts # JSON format/minify/validate
├── hash.ts # SHA-1/256/512 via @noble/hashes
└── timestamp.ts # Unix ↔ ISO conversion
Utils are tested with Vitest (no React Native dependencies):
npx vitest run # 60 tests across 5 utility modules
npx tsc --noEmit # TypeScript check
npx expo-doctor # Expo config check (17/17 checks pass)MIT © Faiz Khairi