Skip to content

faizkhairi/dev-companion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dev Companion

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.

CI


Tools

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.


Stack

  • 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

Quick Start

git clone https://github.com/faizkhairi/dev-companion
cd dev-companion
npm install --legacy-peer-deps
npm start

Scan the QR code with Expo Go on your phone.


Architecture

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

Testing

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)

License

MIT © Faiz Khairi

About

100% offline developer toolkit for mobile — HTTP client, JSON, encoding, hashing, regex, timestamps, and color conversion

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors