Photography, in your hands.
An open-source iPhone camera for photographers who want fast automatic capture,
direct manual control, and distinctive live looks—without leaving the viewfinder.
Features · Repository · Getting started · Docs · Contributing · License
Iris is still in development. There is no released app yet—no App Store listing, TestFlight, or public download. This repository holds the product in progress; early access will be announced when a build is ready.
The stock iPhone Camera is fast but hides photographic controls. Pro camera apps often bury those controls in dense interfaces. Filter apps usually apply a style only after capture.
Iris combines all three:
- A dependable automatic camera
- Understandable manual controls
- Original Iris Looks previewed live in the viewfinder
Open Iris, choose a look, and take a finished photograph—or take direct control of exposure, focus, and white balance without leaving the frame.
| Auto + Manual | Capture immediately, or lock shutter, ISO, focus, white balance, and EV |
| Live Iris Looks | Natural, Daylight, Noir, Chrome, and Faded—shown before you shoot |
| Hardware-honest | Controls and ranges come from the active camera device |
| Offline by default | Core capture works without an account or network connection |
| Photographer formats | Processed HEIC/JPEG and RAW (DNG) when the device supports it |
v1 targets still photography on iPhone. Video and Android are out of scope for the first release.
Iris is an npm workspaces + Turborepo monorepo:
apps/
mobile/ Expo iOS camera app
web/ Astro marketing site
docs/ Product and contributor documentation
packages/ Shared packages (as they land)
- Node.js 22+
- npm 11+
- macOS with Xcode (for iOS simulator / device builds)
- A physical iPhone for camera development and QA
Camera features require a custom Expo development build. Expo Go is not enough for the full capture stack.
git clone https://github.com/MohtashamMurshid/iris.git
cd iris
npm installStart everything through Turbo:
npm run devOr start one workspace:
npm run mobile # Expo mobile app
npm run web # Astro marketing siteMobile helpers:
npm run mobile:ios
npm run mobile:android
npm run mobile:webnpm run lint
npm run typecheck
npm run build| Document | Description |
|---|---|
| Product requirements | Goals, scope, UX, and acceptance criteria |
| Documentation index | Map of all project docs |
| Contributing guide | How to propose changes and open PRs |
| Code of conduct | Community standards |
| Security policy | How to report vulnerabilities |
| Mobile app notes | Expo workspace specifics |
- The frame comes first. Controls should not obscure the subject longer than necessary.
- Manual means locked. Iris must never silently override a setting the user explicitly locked.
- Preview honestly. The saved processed image should closely match the live Look preview.
- Respect the hardware. Show only controls and ranges the active device supports.
- Fast by default, deep on demand. Auto mode should be immediate; advanced controls one gesture away.
- Original, not imitative. Iris serves a similar need to pro camera apps without copying protected assets or proprietary profiles.
Iris is early and open to thoughtful contributions—especially around capture UX, Look rendering, accessibility, and documentation.
- Read CONTRIBUTING.md
- Open an issue to discuss larger changes before coding
- Keep PRs focused and aligned with the PRD
By participating, you agree to follow the Code of Conduct.
Iris is released under the MIT License.
Built for photographers who want their phone to feel more like a camera.