AvoCook is a mobile recipe notebook — it works entirely offline, on your device, with no account needed. If you already run a Nextcloud server, you can optionally connect it to keep everything in sync.
I built it for personal use while learning to ship a complete React Native project from start to finish.
App Store ·
Google Play · Android APK ·
- Create and edit recipes locally, no account required;
- Organise recipes by category;
- Adjust ingredient quantities to the number of servings;
- Add one or more photos per recipe;
- Export a recipe as PDF or print it directly;
- Share a recipe with another app (share sheet).
- Import a recipe from a URL — works on any site that exposes
schema.org/Recipedata (Marmiton, 750g, BBC Good Food, and many others); - Receive a URL shared from a browser or another app to import a recipe in one tap;
- Scan a recipe from a photo, or generate a recipe from a picture of a dish using AI (requires an OpenAI-compatible API key).
- Copy ingredients to the clipboard with a tap;
- Export a shopping list to iOS Reminders to take advantage of Apple's sharing and Siri integration.
- Start one or several cooking timers directly from a recipe;
- Timers trigger a local notification even when the app is in the background.
- Back up all recipes to a JSON file and restore them;
- Optional: connect a Nextcloud Cookbook server to sync recipes across devices. All data goes directly between the app and your server — nothing passes through a third-party service.
In local mode, everything stays on your device. No account, no cloud, no tracking.
French · English · German · Spanish · Italian
The project uses Expo, React Native and TypeScript.
npm install
npm run ios # iOS simulator
npm run android # Android emulatorA development build with native modules is compiled on the first run. After that, the app opens directly.
Useful commands:
npm run typecheck # TypeScript checks
npm test # Unit tests (Vitest)
npm run lint # ESLint
npm run import:check -- <recipe-url> # Test a recipe import from a URLsrc/
├── App.tsx # Entry point, navigation setup
├── screens/ # Application screens (list, detail, editor, settings…)
├── components/ # Reusable UI components
├── features/
│ ├── recipes/ # Local storage (SQLite), recipe logic, backup/restore
│ ├── nextcloud/ # HTTP client for Nextcloud Cookbook
│ ├── import/ # URL and photo recipe import
│ ├── shopping/ # Shopping list and iOS Reminders sync
│ ├── timers/ # Cooking timers
│ ├── preferences/ # App settings
│ └── auth/ # Nextcloud authentication
├── i18n/ # Internationalisation (i18next, 5 languages)
├── modules/
│ └── avocook-timer-notifications/ # Native module for timer notifications
└── theme/ # Colors, typography, shared styles
tools/ # Build plugins, import checker, asset generator
docs/ # Documentation in other languages (fr, de, es, it)
To test the sync:
- Install the Cookbook app on a Nextcloud instance.
- Create an app password in the security settings (Settings → Security → Devices & sessions).
- In AvoCook, go to Settings and enter your server URL, username, and that password.
The app enforces HTTPS for remote servers. Plain HTTP is accepted only for localhost during development.
APKs are published in the GitHub releases. Download avocook.apk and install it directly.
Pull requests are welcome. See CONTRIBUTING.md for the guidelines and the PR template.
If you find AvoCook useful, you can help cover the costs:
→ Donate via Revolut · → Donate via PayPal
This project is licenced under the GPLv3 licence.

