This guide will help you set up and run the VibeBuilder app on your development machine.
Before you begin, ensure you have the following installed:
-
Node.js (v18 or higher)
node --version # Should be 18.0.0 or higher -
npm or yarn
npm --version # Should be 8.0.0 or higher -
Expo CLI (optional but recommended)
npm install -g expo-cli
-
Development Environment
- For iOS: Xcode (Mac only)
- For Android: Android Studio with an emulator
- For Web: Any modern browser
# Clone the repository
git clone <your-repo-url>
cd VibeBuilderApp
# Install dependencies
npm installCreate a .env file in the root directory:
cp .env.example .envEdit .env and configure:
# Required for GitHub integration
EXPO_PUBLIC_GITHUB_ORG=your-organization-name
EXPO_PUBLIC_GITHUB_CLIENT_ID=your-github-oauth-client-idTo enable GitHub integration:
- Go to https://github.com/settings/developers
- Click "New OAuth App"
- Fill in the details:
- Application name: VibeBuilder
- Homepage URL:
http://localhost:8081 - Authorization callback URL:
exp://localhost:19000/--/auth/callback
- Copy the Client ID to your
.envfile - Keep the Client Secret secure (will need a backend for production)
npm startThis will start the Expo development server. You'll see a QR code in the terminal.
Choose your platform:
npm run ios
# or press 'i' in the terminalnpm run android
# or press 'a' in the terminalnpm run web
# or press 'w' in the terminal- Install Expo Go app from App Store or Google Play
- Scan the QR code shown in the terminal
- The app will load on your device
# Kill the process using port 8081
npx react-native start --reset-cache# Reset iOS simulator
xcrun simctl erase all
# Rebuild
npm run ios# Clean and rebuild
cd android
./gradlew clean
cd ..
npm run android# Clear cache and reinstall
rm -rf node_modules
rm package-lock.json
npm install# Run type checking
npm run type-check
# Some errors can be fixed by restarting TypeScript server in your IDE"Unable to resolve module"
- Solution: Clear Metro cache with
npx expo start -c
"GitHub not connected"
- Solution: Set up GitHub OAuth and connect in Settings
"Template not found"
- Solution: Ensure templates are loaded by checking the app store
- Put new components in
/src/components/ - Add new screens in
/src/screens/ - Create services in
/src/services/ - Add types in
/src/types/
- Use Zustand stores in
/src/store/ - Access with hooks:
useAuthStore(),useAppStore(),useUIStore()
- Access theme with
useTheme()hook - Colors, spacing, typography defined in
/src/constants/
- Routes defined in
/src/types/index.ts - Navigator in
/src/navigation/AppNavigator.tsx
-
Authentication Flow
- Register a new account
- Logout and login
- Check data persistence
-
App Creation
- Generate an app from prompt
- Check preview rendering
- Verify app saved in My Apps
-
Template System
- Browse templates
- Use a template
- Customize a template
-
Theme Toggle
- Switch between light/dark/system
- Verify colors update correctly
# Type checking
npm run type-check
# Linting
npm run lint
# Format code
npm run format# Configure EAS
eas build:configure
# Build for iOS
eas build --profile development --platform ios
# Build for Android
eas build --profile development --platform android# iOS
eas build --profile production --platform ios
# Android
eas build --profile production --platform android- Customize Templates: Edit
/src/services/api/templateData.ts - Integrate Real AI: Replace mock service in
/src/services/ai/aiService.ts - Add Backend: Set up authentication and data persistence
- Implement Analytics: Add tracking for user behavior
- Add Tests: Write unit and integration tests
If you encounter issues:
- Check this guide and README.md
- Review error messages carefully
- Check Expo documentation: https://docs.expo.dev/
- Search GitHub issues
- Ask for help in discussions
# Start with cache clear
npm start -- --clear
# Type checking
npm run type-check
# Linting
npm run lint
# Format all files
npm run format
# Update dependencies
npm update
# Check for outdated packages
npm outdated
# Clean install
rm -rf node_modules && npm install- Hot Reloading: Changes auto-reload in dev mode
- Fast Refresh: Preserves component state between updates
- Debug Menu: Shake device or press Cmd+D (iOS) / Cmd+M (Android)
- Element Inspector: Tap with 3 fingers (device) or Cmd+D > Inspector
- Performance Monitor: Enable in Debug Menu
Remember to never commit:
.envfile (contains secrets)- API keys
- OAuth secrets
- Personal tokens
Always use .env.example as a template.
Happy building! 🚀