Welcome to the nativapp repository! This is the official mobile client for Volontariapp, built from the ground up using React Native and Expo SDK 54. It provides users with a seamless, native-feeling interface to discover, join, and manage volunteering events.
To keep this repository clean and maintainable, we have separated our documentation into dedicated guides. Please refer to the following documents for deep dives into specific topics:
Whether you are building for iOS or Android, read the dedicated setup guides carefully. They contain crucial information regarding Apple Developer certificates, Xcode configurations, and Android Studio setups.
- 📱 iOS Setup Guide - Learn how to build the Dev Client on a physical iPhone and bypass iOS 16+ Developer Mode restrictions.
- 🤖 Android Setup Guide - Learn how to configure
ANDROID_HOME, set up an emulator, and build the APK.
This repository adheres to strict enterprise-grade rules regarding clean code, architecture, and tool usage.
- 🏛️ Architecture & Guidelines - Read this before contributing. It covers our usage of React Query, React Hook Form + Zod, strict TypeScript rules, custom styling themes, and Protobuf interoperability.
If your local environment is already configured according to the Setup Guides above, you can quickly spin up the project.
yarn installBefore starting the app, a local environment file (.env) is required to connect to the backend API.
The setup:env script will automatically detect your local IP address and create the .env file with the correct API_GATEWAY_URL.
yarn setup:envyarn start:localOnce the bundler is running, scan the QR code displayed in your terminal using your physical device's camera to launch the custom Dev Client.
This project leverages advanced AI and graph tools to maintain stability and prevent regressions.
We use GitNexus to maintain a live knowledge graph of the mobile codebase. Never perform major refactoring without running impact analysis first.
- Visualization:
npx gitnexus serve - Impact Analysis:
npx gitnexus impact <symbolName>
We enforce strict bundle sizes and linting rules using React-Doctor. Before committing your changes, always run:
yarn doctorThis project is MIT licensed.