A professional AI image generation mobile app built with React Native and Expo SDK 54.
Generate, upscale, and manage AI-created images from multiple providers — all from your phone.
| Layer | Technology |
|---|---|
| Framework | React Native 0.81 + Expo SDK 54 |
| Language | TypeScript 5.9 |
| Navigation | Expo Router 6 (file-based) |
| Styling | NativeWind 4 (Tailwind CSS) |
| State | React useReducer + Context |
| Storage | Expo FileSystem + AsyncStorage |
| Animations | React Native Reanimated 4 + Gesture Handler |
| Testing | Vitest |
| CI | GitHub Actions |
npm install -g pnpmgit clone https://github.com/xoneabovex/inkform.git
cd inkform
pnpm install
pnpm dev
This starts the Metro bundler. Scan the QR code with Expo Go on your device, or press w to open in a web browser.
pnpm test
Inkform connects to external AI providers. You will need at least one of the following:
| Provider | Where to get it | Required for |
|---|---|---|
| Replicate | replicate.com/account/api-tokens | FLUX models |
| Google AI | aistudio.google.com/apikey | Imagen 3/4, Gemini Image models |
| RunPod | runpod.io/console/user/settings | Custom RunPod endpoint (optional) |
Enter your keys in the Settings tab of the app. Keys are stored securely on-device using Expo SecureStore and are never transmitted anywhere other than the respective provider APIs.
If you want to run your own Stable Diffusion models via RunPod, a ready-made serverless worker is included.
runpod-worker/
handler.py ← Serverless handler (SD 1.5, Pony, Illustrious, NoobAI, FLUX)
Dockerfile ← Container definition
requirements.txt ← Python dependencies
README.md ← Deployment instructions
See runpod-worker/README.md for full deployment instructions.
app/
(tabs)/
index.tsx ← Studio / Generate screen
gallery.tsx ← Gallery screen
upscale.tsx ← Upscale screen
prompts.tsx ← Prompt history & bookmarks
settings.tsx ← Settings screen
components/
features/
fullscreen-viewer.tsx ← Shared fullscreen image viewer
ui/
bottom-sheet.tsx ← Swipeable bottom sheet
icon-symbol.tsx ← SF Symbols → Material Icons mapping
screen-container.tsx ← SafeArea wrapper
lib/
api/
generate.ts ← Provider routing
replicate.ts ← Replicate API
google-imagen.ts ← Google Imagen / Gemini Image API
runpod.ts ← RunPod serverless API
civitai.ts ← Civitai model/LoRA metadata
storage/
app-storage.ts ← Gallery persistence, saveToDeviceGallery
types/
index.ts ← Shared TypeScript types and model catalog
This is a personal project. If you fork it and make improvements, feel free to open a pull request.
Private — all rights reserved.
14 commits
2 commits
TypeScript
92.7%
Python
4.9%
JavaScript
2.2%
A professional AI image generation mobile app built with React Native and Expo SDK 54.
Generate, upscale, and manage AI-created images from multiple providers — all from your phone.
| Layer | Technology |
|---|---|
| Framework | React Native 0.81 + Expo SDK 54 |
| Language | TypeScript 5.9 |
| Navigation | Expo Router 6 (file-based) |
| Styling | NativeWind 4 (Tailwind CSS) |
| State | React useReducer + Context |
| Storage | Expo FileSystem + AsyncStorage |
| Animations | React Native Reanimated 4 + Gesture Handler |
| Testing | Vitest |
| CI | GitHub Actions |
npm install -g pnpmgit clone https://github.com/xoneabovex/inkform.git
cd inkform
pnpm install
pnpm dev
This starts the Metro bundler. Scan the QR code with Expo Go on your device, or press w to open in a web browser.
pnpm test
Inkform connects to external AI providers. You will need at least one of the following:
| Provider | Where to get it | Required for |
|---|---|---|
| Replicate | replicate.com/account/api-tokens | FLUX models |
| Google AI | aistudio.google.com/apikey | Imagen 3/4, Gemini Image models |
| RunPod | runpod.io/console/user/settings | Custom RunPod endpoint (optional) |
Enter your keys in the Settings tab of the app. Keys are stored securely on-device using Expo SecureStore and are never transmitted anywhere other than the respective provider APIs.
If you want to run your own Stable Diffusion models via RunPod, a ready-made serverless worker is included.
runpod-worker/
handler.py ← Serverless handler (SD 1.5, Pony, Illustrious, NoobAI, FLUX)
Dockerfile ← Container definition
requirements.txt ← Python dependencies
README.md ← Deployment instructions
See runpod-worker/README.md for full deployment instructions.
app/
(tabs)/
index.tsx ← Studio / Generate screen
gallery.tsx ← Gallery screen
upscale.tsx ← Upscale screen
prompts.tsx ← Prompt history & bookmarks
settings.tsx ← Settings screen
components/
features/
fullscreen-viewer.tsx ← Shared fullscreen image viewer
ui/
bottom-sheet.tsx ← Swipeable bottom sheet
icon-symbol.tsx ← SF Symbols → Material Icons mapping
screen-container.tsx ← SafeArea wrapper
lib/
api/
generate.ts ← Provider routing
replicate.ts ← Replicate API
google-imagen.ts ← Google Imagen / Gemini Image API
runpod.ts ← RunPod serverless API
civitai.ts ← Civitai model/LoRA metadata
storage/
app-storage.ts ← Gallery persistence, saveToDeviceGallery
types/
index.ts ← Shared TypeScript types and model catalog
This is a personal project. If you fork it and make improvements, feel free to open a pull request.
Private — all rights reserved.
14 commits
2 commits
TypeScript
92.7%
Python
4.9%
JavaScript
2.2%