create-gufran-expo-app
v2.0.4
Published
๐ Ultimate Expo React Native Boilerplate - Create production-ready Expo apps instantly with Firebase, Navigation, TypeScript, and more. No git clone needed, works offline!
Maintainers
Readme
๐ @gufran/expo-boilerplate
Ultimate Expo React Native Boilerplate - A professionally configured Expo environment designed for production-ready applications. Skip the tedious setup and dive straight into building amazing features!
โจ Why Choose This Boilerplate?
This boilerplate provides a complete, production-ready setup with enterprise-grade features:
- ๐ฅ Firebase Integration - Authentication, Push Notifications, Analytics
- ๐จ Professional UI - Pre-built components and screens
- ๐๏ธ Clean Architecture - Organized folder structure that scales
- โ๏ธ Cloud Storage - Azure Blob Storage for file uploads
- ๐ Authentication Flow - Complete auth screens and navigation
- ๐ฑ Native Features - Camera, Image Picker, Permissions
- ๐ Push Notifications - Notifee and Firebase Messaging
- ๐ API Management - TanStack Query configured
- ๐ State Management - Zustand for efficient state handling
- ๐ฏ TypeScript - Full type safety
๐ Quick Start
Create a new project with a single command:
npx @gufran/expo-boilerplate my-awesome-appOr use npm directly:
npm create @gufran/expo-boilerplate my-awesome-appWith yarn:
yarn create @gufran/expo-boilerplate my-awesome-appInteractive Mode
Simply run without a project name to enter interactive mode (will prompt for project name and bundle ID):
npx @gufran/expo-boilerplate๐ Command Options
npx @gufran/expo-boilerplate [project-name] [options]Options:
| Option | Description |
|--------|-------------|
| -b, --bundle-id <bundleId> | Bundle identifier (e.g., com.myapp) |
| --skip-install | Skip automatic dependency installation |
| --skip-git | Skip git initialization |
| --npm | Use npm instead of yarn |
| -h, --help | Display help information |
| -V, --version | Display version number |
Examples:
# Create project with custom bundle ID
npx @gufran/expo-boilerplate my-app -b com.myapp
# Create project with npm
npx @gufran/expo-boilerplate my-app --npm
# Skip installation and git init
npx @gufran/expo-boilerplate my-app --skip-install --skip-git
# Full command with all options
npx @gufran/expo-boilerplate my-app -b com.myapp --npm
# Interactive mode (prompts for name and bundle ID)
npx @gufran/expo-boilerplate๐ฆ What's Included?
๐ฏ Core Technologies
- Expo SDK 54 - Latest Expo framework
- React Native 0.81 - Latest stable RN version
- TypeScript - Full type safety
- React Navigation 7 - Native stack navigation
๐ฅ Firebase Services
- Firebase App & Messaging
- Push Notifications with Notifee
- Cloud Messaging
- Analytics ready
๐พ State & Data Management
- Zustand - Lightweight state management
- TanStack Query - Server state management
- MMKV - Fast local storage
- React Native Gesture Handler - Smooth gestures
๐จ UI & Media
- Image Picker & Camera
- Image Zoom capabilities
- SVG support
- Reanimated animations
- Keyboard-aware scrolling
โ๏ธ Cloud Services
- Azure Blob Storage integration
- Background file upload
- Progress tracking
๐ Authentication
- Complete auth flow
- Context-based auth management
- Secure storage
๐ Project Structure
my-app/
โโโ src/
โ โโโ assets/ # Images, fonts, icons
โ โโโ components/ # Reusable UI components
โ โ โโโ common/ # Common components
โ โโโ config/ # App configuration
โ โโโ constants/ # Constants, themes, strings
โ โโโ contexts/ # React contexts (Auth, etc.)
โ โโโ hooks/ # Custom React hooks
โ โโโ navigation/ # Navigation setup
โ โ โโโ AuthStack.tsx
โ โ โโโ MainStack.tsx
โ โ โโโ RootNavigator.tsx
โ โโโ screens/ # App screens
โ โ โโโ auth/ # Authentication screens
โ โ โโโ chat/ # Chat features
โ โ โโโ clubs/ # Club management
โ โ โโโ events/ # Events
โ โ โโโ ...
โ โโโ services/ # API services
โ โโโ stores/ # Zustand stores
โ โโโ types/ # TypeScript types
โ โโโ utils/ # Utility functions
โโโ android/ # Android native code
โโโ ios/ # iOS native code
โโโ FirebaseFiles/ # Firebase configuration files
โโโ assets/ # Root assets๐ ๏ธ Setup Steps
1. Create Your Project
# Interactive mode (recommended)
npx @gufran/expo-boilerplate
# Or specify project name and bundle ID
npx @gufran/expo-boilerplate my-app -b com.myapp
cd my-appThe CLI will automatically:
- Create project directory
- Copy all template files (no git clone needed!)
- Update
package.jsonwith your project name - Update
app.jsonwith your project name and bundle IDs - Install dependencies (unless --skip-install)
- Initialize git repository (unless --skip-git)
2. Configure Firebase
Add your Firebase configuration files:
For Android:
# Add google-services.json to:
android/app/google-services.jsonFor iOS:
# Add GoogleService-Info.plist to:
ios/ClubYakka/GoogleService-Info.plist3. Install iOS Dependencies
cd ios && pod install && cd ..4. Verify Configuration
The CLI automatically updates app.json with your bundle IDs, but you can verify:
{
"expo": {
"name": "my-app",
"slug": "my-app",
"version": "1.0.0",
"ios": {
"bundleIdentifier": "com.myapp"
},
"android": {
"package": "com.myapp"
}
}
}5. Start Development
# Start Metro bundler
npm start
# Run on Android
npm run android
# Run on iOS
npm run ios๐ง Available Scripts
| Script | Description |
|--------|-------------|
| npm start | Start Metro bundler |
| npm run android | Run on Android device/emulator |
| npm run ios | Run on iOS device/simulator |
| npm run web | Run on web browser |
| npm run pod | Install iOS pods |
| npm run clear | Clear Metro cache |
| npm run clean | Clean Android build |
๐จ Key Features Explained
Authentication Flow
Complete authentication system with:
- Login/Register screens
- OTP verification
- Password reset
- Protected routes
- Auth context management
Navigation Structure
Three-level navigation:
- RootNavigator - Entry point
- AuthStack - Unauthenticated screens
- MainStack - Authenticated screens
API Integration
Pre-configured with:
- Axios for HTTP requests
- TanStack Query for caching
- Error handling
- Request/response interceptors
File Upload
Background upload with:
- Azure Blob Storage integration
- Progress tracking
- Multiple file support
- Error handling
Push Notifications
Complete notification system:
- Firebase Cloud Messaging
- Notifee for local notifications
- Permission handling
- Deep linking support
๐ Environment Setup
Create .env file in root:
API_BASE_URL=https://api.yourapp.com
AZURE_STORAGE_URL=your-azure-url๐ฑ Platform-Specific Notes
iOS
- Requires Xcode 14+
- Run
pod installafter installing dependencies - Configure signing in Xcode
- Update
Info.plistwith required permissions
Android
- Requires Android Studio
- Update
google-services.json - Configure signing in
android/app/build.gradle - Set up keystore for release builds
๐งช Testing
# Run tests (when configured)
npm test
# Type checking
npx tsc --noEmit๐ Documentation
For detailed documentation on specific features:
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
๐ Issues
Found a bug? Please open an issue with a detailed description.
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ค Author
Gufran Gaury
- GitHub: @GufranGaury1887
- Repository: Boiler_Plat_Expo_-Gufran
๐ Show Your Support
Give a โญ๏ธ if this project helped you!
๐ฎ Support
For support, email [email protected] or open an issue on GitHub.
Built with โค๏ธ by Gufran Gaury
Happy Coding! ๐
