Thank you for your interest in contributing to GuildPass Mobile! This is the React Native / Expo app for the GuildPass ecosystem.
- Code of Conduct
- Ways to Contribute
- Finding Issues
- Development Setup
- Branching & Commits
- Submitting a Pull Request
- Review Process
- Communication
By participating you agree to our Code of Conduct.
- Fix UI bugs or screen-level regressions
- Add or improve Expo Router screens
- Improve NativeWind/Tailwind styling
- Add Vitest unit tests for hooks or store logic
- Improve Zustand state management
- Improve TanStack Query data fetching
- Write or improve documentation in
docs/
- Browse issues directly on GitHub:
- Comment
I'd like to work on thison the GitHub issue you'd like to work on. - Wait for a maintainer to assign it before starting.
- Node.js 18+
- pnpm (recommended) or npm
- Expo Go on a physical device, or Xcode/Android Studio for simulators
# 1. Fork and clone
git clone https://github.com/<your-username>/guildpass-mobile.git
cd guildpass-mobile
# 2. Install dependencies
pnpm install
# 3. Set up environment variables
cp .env.example .env
# Edit .env — set EXPO_PUBLIC_API_URL if connecting to live guildpass-core
# 4. Initialize EAS (Optional for local development)
# If you plan to use EAS Build for testing your fork, you must initialize your own EAS project:
npx eas init --id <YOUR_PROJECT_ID>
# Or create a new one:
npx eas init
# 5. Start the Expo dev server
pnpm start
# 6. Open on device / simulator
pnpm ios # iOS simulator
pnpm android # Android emulator
# Or scan the QR code in Expo Go| Path | Purpose |
|---|---|
app/ |
Expo Router file-based pages and layouts |
src/ |
Feature modules, hooks, Zustand stores, services |
docs/ |
Architecture and integration guides |
tests/ |
Vitest unit tests |
- Branch off
main:git checkout -b feat/short-descriptionorfix/short-description - Conventional commits:
feat: add membership expiry countdown screenfix: correct role badge colour for admintest: add unit tests for membership storestyle: adjust NativeWind spacing on dashboard cardchore: upgrade Expo SDK to 51
- Push your branch to your fork.
- Open a PR against
Adamantine-Guild/guildpass-mobileonmain. - Fill in the PR template completely.
- Ensure these pass before submitting:
pnpm typecheck # Must pass with no errors
pnpm lint # Fix all reported issues
pnpm test:run # All tests must pass- UI changes must include a screenshot or screen recording in the PR description.
- Use NativeWind (Tailwind) classes — no
StyleSheet.createfor new UI unless justified. - New screens must handle loading, empty, and error states.
- New business logic must have at least one Vitest unit test.
- Avoid generated boilerplate comments that only restate imports, returns, variable bindings, or JSX structure. Keep comments for non-obvious domain rules, edge cases, TODOs with context, or implementation tradeoffs.
- Do not introduce native modules that break Expo Go compatibility without prior discussion.
- A maintainer will review your PR within 5 business days.
- Mobile PRs with UI changes may require a screen recording.
- Address requested changes promptly.
If you need to make changes to the GuildPass SDK while working on the mobile app:
- Clone the SDK repository:
git clone https://github.com/Adamantine-Guild/guildpass-sdk.git ../guildpass-sdk
- Link the SDK to the mobile project:
# In the guildpass-mobile directory pnpm add ../guildpass-sdk - When finished, revert to the remote dependency:
pnpm add @guildpass/sdk@github:Adamantine-Guild/guildpass-sdk
- GitHub Issues: preferred for task discussion and bug reports
- Contact: cerealboxx123@gmail.com