|
| 1 | +# Contributing to Open MobileUI |
| 2 | + |
| 3 | +Thanks for your interest in improving Open MobileUI! Bug fixes, new features, documentation, UI/UX polish, performance work, and translations are all welcome. |
| 4 | + |
| 5 | +## Ways to contribute |
| 6 | + |
| 7 | +- 🐛 **Bug fixes** — help us squash bugs and improve stability |
| 8 | +- ✨ **Features** — propose and build new functionality |
| 9 | +- 📝 **Documentation** — improve docs, add examples, fix typos |
| 10 | +- 🎨 **UI/UX** — refine the mobile experience |
| 11 | +- ⚡ **Performance** — optimize rendering and app responsiveness |
| 12 | +- 🌍 **Internationalization** — add translations for new languages |
| 13 | + |
| 14 | +## Reporting issues |
| 15 | + |
| 16 | +Before opening an issue, please [search existing issues](https://github.com/RonasIT/open-webui-react-native/issues) to avoid duplicates. |
| 17 | + |
| 18 | +When [filing a new issue](https://github.com/RonasIT/open-webui-react-native/issues/new/choose), pick the template that fits: |
| 19 | + |
| 20 | +- 🐛 **Bug report** — for something that's broken. Fill in what happened vs. what you expected, precise steps to reproduce, the app + Open WebUI versions, your device + OS, and screenshots where relevant. |
| 21 | +- ✨ **Feature request** — for new functionality. Describe the use case and the problem it solves, not just the proposed solution. |
| 22 | + |
| 23 | +## Development setup |
| 24 | + |
| 25 | +### Prerequisites |
| 26 | + |
| 27 | +- **Node.js** 18+ and npm |
| 28 | +- **iOS:** Xcode 14+ (macOS only) |
| 29 | +- **Android:** Android Studio with the Android SDK |
| 30 | + |
| 31 | +### Clone and install |
| 32 | + |
| 33 | +```bash |
| 34 | +git clone https://github.com/RonasIT/open-webui-react-native.git |
| 35 | +cd open-webui-react-native |
| 36 | +npm install |
| 37 | +``` |
| 38 | + |
| 39 | +### Run the app |
| 40 | + |
| 41 | +```bash |
| 42 | +# Start the Metro bundler (development env) |
| 43 | +npx nx start mobile |
| 44 | + |
| 45 | +# Or run directly on a device/emulator (from apps/mobile) |
| 46 | +npm run android |
| 47 | +npm run ios |
| 48 | +``` |
| 49 | + |
| 50 | +Running on a device/emulator requires a **development build**. Follow the |
| 51 | +[Expo development builds guide](https://docs.expo.dev/develop/development-builds/create-a-build/) |
| 52 | +to create one (a one-time setup), then start the bundler as above. |
| 53 | + |
| 54 | +### Configure your own Expo project (for builds) |
| 55 | + |
| 56 | +To create your own builds you'll need an Expo project of your own: |
| 57 | + |
| 58 | +1. Create an account at [expo.dev](https://expo.dev/) and a new project. |
| 59 | +2. Note your project `slug`, `owner`, and `project ID`. |
| 60 | +3. Provide your project details via environment variables / app config used by |
| 61 | + [`apps/mobile/app.config.ts`](apps/mobile/app.config.ts) (e.g. `EXPO_PUBLIC_APP_NAME`, |
| 62 | + `EXPO_PUBLIC_APP_SLUG`, `EXPO_PUBLIC_APP_OWNER`, `EXPO_PUBLIC_PROJECT_ID`). |
| 63 | +4. For production builds, configure [`eas.json`](eas.json) following the |
| 64 | + [EAS configuration guide](https://docs.expo.dev/eas/json/). |
| 65 | + |
| 66 | +### Common commands |
| 67 | + |
| 68 | +```bash |
| 69 | +npm run lint # tsc + eslint |
| 70 | +npm run format # prettier + eslint --fix |
| 71 | +npx nx test mobile # run the mobile test suite |
| 72 | +``` |
| 73 | + |
| 74 | +See the root [CLAUDE.md](CLAUDE.md) and `README.md` for more on the monorepo architecture and library structure. |
| 75 | + |
| 76 | +## Submitting a pull request |
| 77 | + |
| 78 | +1. **Fork** the repository and create a feature branch off `main`. |
| 79 | +2. Make your changes, keeping commits focused and following the existing code style. |
| 80 | +3. **Run `npm run lint`** and the relevant tests — make sure everything passes. |
| 81 | +4. **Open a pull request** against `main` with a clear description of _what_ changed and _why_. Link any related issue. |
| 82 | +5. Be ready to iterate on review feedback. |
| 83 | + |
| 84 | +For larger changes, please open an issue to discuss the approach first — it saves everyone time. |
| 85 | + |
| 86 | +## Helpful resources |
| 87 | + |
| 88 | +- 📖 [Expo development builds](https://docs.expo.dev/develop/development-builds/create-a-build/) |
| 89 | +- 📦 [EAS Build documentation](https://docs.expo.dev/build/setup/) |
| 90 | +- ⚙️ [Expo configuration reference](https://docs.expo.dev/workflow/configuration/) |
| 91 | +- 🏗️ [Nx documentation](https://nx.dev/getting-started/intro) |
| 92 | + |
| 93 | +--- |
| 94 | + |
| 95 | +By contributing, you agree that your contributions will be licensed under the project's [GPL v3 license](LICENSE). |
0 commit comments