Thank you for your interest in contributing to Vibra Code! This guide covers everything you need to get started.
- Node.js 20+ and npm
- Yarn (for mobile app)
- Xcode 16+ with iOS Simulator (for iOS development)
- CocoaPods (
gem install cocoapods) - Git
You will need accounts and API keys from the following services:
| Service | Purpose | Sign Up |
|---|---|---|
| Anthropic | Claude AI agent for code generation | https://console.anthropic.com |
| E2B | Cloud sandboxes for code execution | https://e2b.dev |
| Clerk | Authentication (shared between mobile & web) | https://clerk.com |
| Convex | Real-time database | https://convex.dev |
| Stripe | Web payment processing | https://stripe.com |
| RevenueCat | Mobile in-app purchases | https://revenuecat.com |
| AssemblyAI | Speech-to-text for voice input | https://assemblyai.com |
Create vibracode-backend/.env.local:
ANTHROPIC_API_KEY=
E2B_API_KEY=
NEXT_PUBLIC_CONVEX_URL=
CONVEX_DEPLOYMENT=
CLERK_SECRET_KEY=
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
Create vibracode-mobile/apps/expo-go/.env:
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=
EXPO_PUBLIC_CONVEX_URL=
EXPO_PUBLIC_REVENUECAT_IOS_API_KEY=
EXPO_PUBLIC_REVENUECAT_ANDROID_API_KEY=
EXPO_PUBLIC_V0_API_URL=http://localhost:3000
cd vibracode-backend
# Install dependencies
npm install
# Deploy Convex schema (first time only)
npx convex deploy
# Start full stack (Next.js with Turbopack + Inngest dev server)
npm run start
# Or start just Next.js
npm run dev
# Or start just Inngest
npx inngest-cli@latest devThe backend runs at http://localhost:3000.
cd vibracode-mobile/apps/expo-go
# Install JS dependencies
yarn install
# Install iOS native dependencies
cd ios && pod install && cd ..
# Start Metro bundler (must be port 80)
yarn startThen open ios/Exponent.xcworkspace in Xcode and build to a simulator or device.
Important: Set DEV_KERNEL_SOURCE=LOCAL in EXBuildConstants.plist for local development builds.
# Mobile app tests
cd vibracode-mobile/apps/expo-go
yarn test
# Lint
yarn lint
# Backend lint
cd vibracode-backend
npm run lint- Fork the repository and create a feature branch from
main - Make your changes with clear, focused commits
- Run tests and linting before submitting
- Open a PR against
mainwith:- A clear title describing the change
- Description of what changed and why
- Screenshots for UI changes
- Link to any related issues
- Address review feedback promptly
- Keep PRs focused on a single concern
- Avoid mixing refactors with feature work
- Update documentation if you change behavior
- Add tests for new functionality
- Use TypeScript for all new backend and React Native code
- Use Objective-C for native iOS menu system code (the
ios/Client/Menu/directory) - Follow existing patterns in the codebase
The native chat UI uses Texture (AsyncDisplayKit) + IGListKit for performance:
- All chat nodes extend
ASCellNode - Layout uses
ASLayoutSpec(not Auto Layout) - Image loading uses SDWebImage
- Animations use spring timing with
UIView.animate(springDuration:) - Target iOS 26+ with modern APIs
- Convex functions follow the existing schema patterns
- Inngest functions handle background processing
- API routes use Next.js App Router conventions
See README.md for the full architecture diagram. Key points:
- Convex schema is shared between mobile and backend via symlink
- Session lifecycle is managed by Inngest background functions
- Real-time updates flow from Convex to the mobile app
- Cloud sandboxes (E2B) are ephemeral and isolated
By contributing to Vibra Code, you agree that your contributions will be licensed under the AGPL-3.0 License.