create-gufran-expo-app 2.0.4 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +60 -321
  2. package/bin/cli.js +0 -1
  3. package/package.json +4 -3
  4. package/template/src/navigation/AuthStack.tsx +6 -25
  5. package/template/src/navigation/MainStack.tsx +0 -148
  6. package/template/src/navigation/RootNavigator.tsx +4 -26
  7. package/template/src/navigation/index.ts +0 -1
  8. package/template/src/navigation/navigationRef.ts +1 -1
  9. package/template/src/screens/HomeScreen.tsx +3 -215
  10. package/template/src/screens/auth/LoginScreen.tsx +13 -13
  11. package/template/src/screens/auth/index.ts +1 -6
  12. package/template/src/screens/index.ts +0 -35
  13. package/template/src/services/api.ts +5 -5
  14. package/template/src/services/authService.ts +3 -299
  15. package/template/src/services/mainServices.ts +19 -1914
  16. package/template/src/types/navigation.ts +5 -155
  17. package/template/src/utils/index.ts +5 -8
  18. package/template/src/navigation/MiddleStack.tsx +0 -35
  19. package/template/src/screens/auth/AddMamber.tsx +0 -428
  20. package/template/src/screens/auth/ForgotPasswordScreen.tsx +0 -176
  21. package/template/src/screens/auth/OTPVerifyScreen.tsx +0 -359
  22. package/template/src/screens/auth/RegisterScreen.tsx +0 -430
  23. package/template/src/screens/auth/SuccessScreen.tsx +0 -201
  24. package/template/src/screens/chat/ChatScreen.tsx +0 -1819
  25. package/template/src/screens/chat/ChatThreadsScreen.tsx +0 -360
  26. package/template/src/screens/chat/ReportMessageScreen.tsx +0 -238
  27. package/template/src/screens/clubs/Announcements.tsx +0 -426
  28. package/template/src/screens/clubs/BuyRaffleTicketsScreen.tsx +0 -568
  29. package/template/src/screens/clubs/ClubDeteils.tsx +0 -497
  30. package/template/src/screens/clubs/JoinClub.tsx +0 -841
  31. package/template/src/screens/events/EventScreen.tsx +0 -460
  32. package/template/src/screens/raffles/MyReferralMembersScreen.tsx +0 -758
  33. package/template/src/screens/raffles/RaffleDetailsScreen.tsx +0 -762
  34. package/template/src/screens/raffles/RafflesScreen.tsx +0 -495
  35. package/template/src/screens/raffles/SetRaffleReminderScreen.tsx +0 -390
  36. package/template/src/screens/teams/JoinTeamScreen.tsx +0 -464
  37. package/template/src/screens/teams/MyTeamDetailsScreen.tsx +0 -979
  38. package/template/src/screens/teams/MyTeamScreen.tsx +0 -568
  39. package/template/src/screens/teams/PendingRequestsScreen.tsx +0 -426
  40. package/template/src/screens/volunteerOpportunities/SetReminderScreen.tsx +0 -631
  41. package/template/src/screens/volunteerOpportunities/VolunteerOpportunitiesDetailsScreen.tsx +0 -1049
  42. package/template/src/screens/volunteerOpportunities/VolunteerOpportunitiesScreen.tsx +0 -608
  43. package/template/src/utils/ClubSearchManager.ts +0 -222
package/README.md CHANGED
@@ -1,21 +1,16 @@
1
- # 🚀 @gufran/expo-boilerplate
1
+ # create-gufran-expo-app
2
2
 
3
- ![npm version](https://img.shields.io/npm/v/@gufran/expo-boilerplate.svg)
4
- ![downloads](https://img.shields.io/npm/dt/@gufran/expo-boilerplate.svg)
5
- ![license](https://img.shields.io/npm/l/@gufran/expo-boilerplate.svg)
3
+ [![npm version](https://img.shields.io/npm/v/create-gufran-expo-app.svg)](https://www.npmjs.com/package/create-gufran-expo-app)
4
+ [![npm downloads](https://img.shields.io/npm/dt/create-gufran-expo-app.svg)](https://www.npmjs.com/package/create-gufran-expo-app)
5
+ [![license](https://img.shields.io/npm/l/create-gufran-expo-app.svg)](https://github.com/GufranGaury1887/Boiler_Plat_Expo_-Gufran/blob/main/LICENSE)
6
6
 
7
- **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!
7
+ A CLI tool to create production-ready Expo React Native apps with Firebase, Navigation, TypeScript, and more. Works offline - no git clone needed!
8
8
 
9
- ---
10
-
11
- ## ✨ Why Choose This Boilerplate?
12
-
13
- This boilerplate provides a complete, production-ready setup with enterprise-grade features:
9
+ ## Features
14
10
 
15
11
  - 🔥 **Firebase Integration** - Authentication, Push Notifications, Analytics
16
- - 🎨 **Professional UI** - Pre-built components and screens
17
12
  - 🗂️ **Clean Architecture** - Organized folder structure that scales
18
- - ☁️ **Cloud Storage** - Azure Blob Storage for file uploads
13
+ - ☁️ **Azure Blob Storage** - File uploads with progress tracking
19
14
  - 🔐 **Authentication Flow** - Complete auth screens and navigation
20
15
  - 📱 **Native Features** - Camera, Image Picker, Permissions
21
16
  - 🔔 **Push Notifications** - Notifee and Firebase Messaging
@@ -23,390 +18,134 @@ This boilerplate provides a complete, production-ready setup with enterprise-gra
23
18
  - 📊 **State Management** - Zustand for efficient state handling
24
19
  - 🎯 **TypeScript** - Full type safety
25
20
 
26
- ---
27
-
28
- ## 🚀 Quick Start
29
-
30
- Create a new project with a single command:
21
+ ## Quick Start
31
22
 
32
23
  ```bash
33
- npx @gufran/expo-boilerplate my-awesome-app
24
+ npx create-gufran-expo-app my-app
34
25
  ```
35
26
 
36
- Or use npm directly:
27
+ ## Installation
28
+
29
+ You don't need to install anything globally. Just use `npx`:
37
30
 
38
31
  ```bash
39
- npm create @gufran/expo-boilerplate my-awesome-app
32
+ npx create-gufran-expo-app my-app
40
33
  ```
41
34
 
42
- With yarn:
35
+ Or install globally:
43
36
 
44
37
  ```bash
45
- yarn create @gufran/expo-boilerplate my-awesome-app
38
+ npm install -g create-gufran-expo-app
39
+ create-gufran-expo-app my-app
46
40
  ```
47
41
 
48
- ### Interactive Mode
42
+ ## Usage
49
43
 
50
- Simply run without a project name to enter interactive mode (will prompt for project name and bundle ID):
44
+ ### Basic Usage
51
45
 
52
46
  ```bash
53
- npx @gufran/expo-boilerplate
47
+ npx create-gufran-expo-app my-app
54
48
  ```
55
49
 
56
- ---
50
+ ### With Bundle ID
57
51
 
58
- ## 📋 Command Options
52
+ ```bash
53
+ npx create-gufran-expo-app my-app --bundle-id com.mycompany.myapp
54
+ ```
55
+
56
+ ### Interactive Mode
59
57
 
60
58
  ```bash
61
- npx @gufran/expo-boilerplate [project-name] [options]
59
+ npx create-gufran-expo-app
60
+ # Will prompt for project name and bundle ID
62
61
  ```
63
62
 
64
- ### Options:
63
+ ### Options
65
64
 
66
65
  | Option | Description |
67
66
  |--------|-------------|
68
- | `-b, --bundle-id <bundleId>` | Bundle identifier (e.g., com.myapp) |
67
+ | `-b, --bundle-id <id>` | Bundle identifier (e.g., com.myapp) |
69
68
  | `--skip-install` | Skip automatic dependency installation |
70
69
  | `--skip-git` | Skip git initialization |
71
70
  | `--npm` | Use npm instead of yarn |
72
71
  | `-h, --help` | Display help information |
73
72
  | `-V, --version` | Display version number |
74
73
 
75
- ### Examples:
76
-
77
- ```bash
78
- # Create project with custom bundle ID
79
- npx @gufran/expo-boilerplate my-app -b com.myapp
80
-
81
- # Create project with npm
82
- npx @gufran/expo-boilerplate my-app --npm
83
-
84
- # Skip installation and git init
85
- npx @gufran/expo-boilerplate my-app --skip-install --skip-git
86
-
87
- # Full command with all options
88
- npx @gufran/expo-boilerplate my-app -b com.myapp --npm
89
-
90
- # Interactive mode (prompts for name and bundle ID)
91
- npx @gufran/expo-boilerplate
92
- ```
93
-
94
- ---
95
-
96
- ## 📦 What's Included?
97
-
98
- ### 🎯 Core Technologies
99
-
100
- - **Expo SDK 54** - Latest Expo framework
101
- - **React Native 0.81** - Latest stable RN version
102
- - **TypeScript** - Full type safety
103
- - **React Navigation 7** - Native stack navigation
104
-
105
- ### 🔥 Firebase Services
106
-
107
- - Firebase App & Messaging
108
- - Push Notifications with Notifee
109
- - Cloud Messaging
110
- - Analytics ready
111
-
112
- ### 💾 State & Data Management
113
-
114
- - **Zustand** - Lightweight state management
115
- - **TanStack Query** - Server state management
116
- - **MMKV** - Fast local storage
117
- - **React Native Gesture Handler** - Smooth gestures
118
-
119
- ### 🎨 UI & Media
120
-
121
- - Image Picker & Camera
122
- - Image Zoom capabilities
123
- - SVG support
124
- - Reanimated animations
125
- - Keyboard-aware scrolling
126
-
127
-
128
- ### ☁️ Cloud Services
129
-
130
- - Azure Blob Storage integration
131
- - Background file upload
132
- - Progress tracking
133
-
134
- ### 🔐 Authentication
135
-
136
- - Complete auth flow
137
- - Context-based auth management
138
- - Secure storage
139
-
140
- ---
141
-
142
- ## 📁 Project Structure
74
+ ## Project Structure
143
75
 
144
76
  ```
145
77
  my-app/
146
78
  ├── src/
147
79
  │ ├── assets/ # Images, fonts, icons
148
80
  │ ├── components/ # Reusable UI components
149
- │ │ └── common/ # Common components
150
81
  │ ├── config/ # App configuration
151
82
  │ ├── constants/ # Constants, themes, strings
152
- │ ├── contexts/ # React contexts (Auth, etc.)
83
+ │ ├── contexts/ # React contexts
153
84
  │ ├── hooks/ # Custom React hooks
154
85
  │ ├── navigation/ # Navigation setup
155
- │ │ ├── AuthStack.tsx
156
- │ │ ├── MainStack.tsx
157
- │ │ └── RootNavigator.tsx
158
86
  │ ├── screens/ # App screens
159
- │ │ ├── auth/ # Authentication screens
160
- │ │ ├── chat/ # Chat features
161
- │ │ ├── clubs/ # Club management
162
- │ │ ├── events/ # Events
163
- │ │ └── ...
164
87
  │ ├── services/ # API services
165
88
  │ ├── stores/ # Zustand stores
166
89
  │ ├── types/ # TypeScript types
167
90
  │ └── utils/ # Utility functions
168
91
  ├── android/ # Android native code
169
92
  ├── ios/ # iOS native code
170
- ├── FirebaseFiles/ # Firebase configuration files
93
+ ├── FirebaseFiles/ # Firebase config samples
171
94
  └── assets/ # Root assets
172
95
  ```
173
96
 
174
- ---
175
-
176
- ## 🛠️ Setup Steps
97
+ ## After Project Creation
177
98
 
178
- ### 1. Create Your Project
99
+ ### 1. Navigate to your project
179
100
 
180
101
  ```bash
181
- # Interactive mode (recommended)
182
- npx @gufran/expo-boilerplate
183
-
184
- # Or specify project name and bundle ID
185
- npx @gufran/expo-boilerplate my-app -b com.myapp
186
-
187
102
  cd my-app
188
103
  ```
189
104
 
190
- The CLI will automatically:
191
- - Create project directory
192
- - Copy all template files (no git clone needed!)
193
- - Update `package.json` with your project name
194
- - Update `app.json` with your project name and bundle IDs
195
- - Install dependencies (unless --skip-install)
196
- - Initialize git repository (unless --skip-git)
197
-
198
105
  ### 2. Configure Firebase
199
106
 
200
107
  Add your Firebase configuration files:
201
108
 
202
- **For Android:**
203
- ```bash
204
- # Add google-services.json to:
205
- android/app/google-services.json
206
- ```
207
-
208
- **For iOS:**
209
- ```bash
210
- # Add GoogleService-Info.plist to:
211
- ios/ClubYakka/GoogleService-Info.plist
212
- ```
109
+ - **Android**: Copy `google-services.json` to `android/app/`
110
+ - **iOS**: Copy `GoogleService-Info.plist` to `ios/YourApp/`
213
111
 
214
- ### 3. Install iOS Dependencies
112
+ ### 3. Install iOS dependencies
215
113
 
216
114
  ```bash
217
115
  cd ios && pod install && cd ..
218
116
  ```
219
117
 
220
- ### 4. Verify Configuration
221
-
222
- The CLI automatically updates `app.json` with your bundle IDs, but you can verify:
223
-
224
- ```json
225
- {
226
- "expo": {
227
- "name": "my-app",
228
- "slug": "my-app",
229
- "version": "1.0.0",
230
- "ios": {
231
- "bundleIdentifier": "com.myapp"
232
- },
233
- "android": {
234
- "package": "com.myapp"
235
- }
236
- }
237
- }
238
- ```
239
-
240
- ### 5. Start Development
118
+ ### 4. Start development
241
119
 
242
120
  ```bash
243
- # Start Metro bundler
244
- npm start
245
-
246
- # Run on Android
247
- npm run android
248
-
249
- # Run on iOS
250
- npm run ios
121
+ npm start # Start Metro bundler
122
+ npm run android # Run on Android
123
+ npm run ios # Run on iOS
251
124
  ```
252
125
 
253
- ---
254
-
255
- ## 🔧 Available Scripts
256
-
257
- | Script | Description |
258
- |--------|-------------|
259
- | `npm start` | Start Metro bundler |
260
- | `npm run android` | Run on Android device/emulator |
261
- | `npm run ios` | Run on iOS device/simulator |
262
- | `npm run web` | Run on web browser |
263
- | `npm run pod` | Install iOS pods |
264
- | `npm run clear` | Clear Metro cache |
265
- | `npm run clean` | Clean Android build |
266
-
267
- ---
268
-
269
- ## 🎨 Key Features Explained
270
-
271
- ### Authentication Flow
272
-
273
- Complete authentication system with:
274
- - Login/Register screens
275
- - OTP verification
276
- - Password reset
277
- - Protected routes
278
- - Auth context management
279
-
280
- ### Navigation Structure
281
-
282
- Three-level navigation:
283
- 1. **RootNavigator** - Entry point
284
- 2. **AuthStack** - Unauthenticated screens
285
- 3. **MainStack** - Authenticated screens
286
-
287
- ### API Integration
288
-
289
- Pre-configured with:
290
- - Axios for HTTP requests
291
- - TanStack Query for caching
292
- - Error handling
293
- - Request/response interceptors
294
-
295
- ### File Upload
296
-
297
- Background upload with:
298
- - Azure Blob Storage integration
299
- - Progress tracking
300
- - Multiple file support
301
- - Error handling
302
-
303
- ### Push Notifications
304
-
305
- Complete notification system:
306
- - Firebase Cloud Messaging
307
- - Notifee for local notifications
308
- - Permission handling
309
- - Deep linking support
310
-
311
- ---
312
-
313
- ## 🔐 Environment Setup
314
-
315
- Create `.env` file in root:
316
-
317
- ```env
318
- API_BASE_URL=https://api.yourapp.com
319
- AZURE_STORAGE_URL=your-azure-url
320
- ```
321
-
322
- ---
323
-
324
- ## 📱 Platform-Specific Notes
325
-
326
- ### iOS
327
-
328
- - Requires Xcode 14+
329
- - Run `pod install` after installing dependencies
330
- - Configure signing in Xcode
331
- - Update `Info.plist` with required permissions
332
-
333
- ### Android
334
-
335
- - Requires Android Studio
336
- - Update `google-services.json`
337
- - Configure signing in `android/app/build.gradle`
338
- - Set up keystore for release builds
339
-
340
- ---
341
-
342
- ## 🧪 Testing
343
-
344
- ```bash
345
- # Run tests (when configured)
346
- npm test
347
-
348
- # Type checking
349
- npx tsc --noEmit
350
- ```
351
-
352
- ---
353
-
354
- ## 📚 Documentation
355
-
356
- For detailed documentation on specific features:
357
-
358
- - [Firebase Setup](./docs/firebase.md)
359
- - [Azure Storage](./docs/azure-storage.md)
360
- - [Navigation Guide](./docs/navigation.md)
361
- - [API Services](./docs/api-services.md)
362
-
363
- ---
364
-
365
- ## 🤝 Contributing
366
-
367
- Contributions are welcome! Please feel free to submit a Pull Request.
368
-
369
- 1. Fork the repository
370
- 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
371
- 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
372
- 4. Push to the branch (`git push origin feature/amazing-feature`)
373
- 5. Open a Pull Request
374
-
375
- ---
376
-
377
- ## 🐛 Issues
378
-
379
- Found a bug? Please [open an issue](https://github.com/GufranGaury1887/Boiler_Plat_Expo_-Gufran/issues) with a detailed description.
380
-
381
- ---
382
-
383
- ## 📄 License
384
-
385
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
386
-
387
- ---
388
-
389
- ## 👤 Author
390
-
391
- **Gufran Gaury**
392
-
393
- - GitHub: [@GufranGaury1887](https://github.com/GufranGaury1887)
394
- - Repository: [Boiler_Plat_Expo_-Gufran](https://github.com/GufranGaury1887/Boiler_Plat_Expo_-Gufran)
395
-
396
- ---
397
-
398
- ## 🌟 Show Your Support
126
+ ## Tech Stack
399
127
 
400
- Give a ⭐️ if this project helped you!
128
+ | Category | Technologies |
129
+ |----------|-------------|
130
+ | Framework | Expo SDK 54, React Native 0.81 |
131
+ | Language | TypeScript |
132
+ | Navigation | React Navigation 7 |
133
+ | State | Zustand, TanStack Query |
134
+ | Storage | MMKV |
135
+ | Backend | Firebase, Azure Blob Storage |
136
+ | Notifications | Notifee, FCM |
401
137
 
402
- ---
138
+ ## Requirements
403
139
 
404
- ## 📮 Support
140
+ - Node.js >= 18.0.0
141
+ - For iOS: Xcode 14+, CocoaPods
142
+ - For Android: Android Studio, JDK 17
405
143
 
406
- For support, email gufrangaury@gmail.com or open an issue on GitHub.
144
+ ## License
407
145
 
408
- ---
146
+ MIT © [Gufran Gaury](https://github.com/GufranGaury1887)
409
147
 
410
- **Built with ❤️ by Gufran Gaury**
148
+ ## Links
411
149
 
412
- *Happy Coding! 🚀*
150
+ - [GitHub Repository](https://github.com/GufranGaury1887/Boiler_Plat_Expo_-Gufran)
151
+ - [Report Issues](https://github.com/GufranGaury1887/Boiler_Plat_Expo_-Gufran/issues)
package/bin/cli.js CHANGED
@@ -20,7 +20,6 @@ program
20
20
  .description('Create a new Expo app using Gufran\'s professional boilerplate')
21
21
  .argument('[project-name]', 'Name of your new project')
22
22
  .option('-b, --bundle-id <bundleId>', 'Bundle identifier (e.g., com.company.appname)')
23
- .option('-t, --template <template>', 'Template variant to use', 'default')
24
23
  .option('--skip-install', 'Skip dependency installation')
25
24
  .option('--skip-git', 'Skip git initialization')
26
25
  .option('--npm', 'Use npm instead of yarn')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-gufran-expo-app",
3
- "version": "2.0.4",
3
+ "version": "2.0.6",
4
4
  "description": "🚀 Ultimate Expo React Native Boilerplate - Create production-ready Expo apps instantly with Firebase, Navigation, TypeScript, and more. No git clone needed, works offline!",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -22,7 +22,7 @@
22
22
  "starter-kit",
23
23
  "gufran"
24
24
  ],
25
- "author": "Gufran Gaury <your-email@example.com>",
25
+ "author": "Gufran Gaury <gufran.gaury@gmail.com>",
26
26
  "license": "MIT",
27
27
  "repository": {
28
28
  "type": "git",
@@ -46,7 +46,8 @@
46
46
  "bin",
47
47
  "lib",
48
48
  "template",
49
+ "index.js",
49
50
  "README.md",
50
51
  "LICENSE"
51
52
  ]
52
- }
53
+ }
@@ -1,17 +1,16 @@
1
1
  import React from 'react';
2
2
  import { createNativeStackNavigator } from '@react-navigation/native-stack';
3
3
  import { AuthStackParamList } from '../types';
4
- import { LoginScreen, RegisterScreen, ForgotPasswordScreen, OTPVerifyScreen, WelcomeScreen } from '../screens/auth';
5
- import { theme } from '../constants';
6
- import { StorageService } from '../utils/storage';
7
- import SuccessScreen from '../screens/auth/SuccessScreen';
4
+ import { LoginScreen, WelcomeScreen } from '../screens/auth';
5
+ import { theme } from '@constants';
6
+ import { StorageService } from '@utils/storage';
8
7
 
9
8
  const Stack = createNativeStackNavigator<AuthStackParamList>();
10
9
 
11
10
  export const AuthStack: React.FC = () => {
12
11
  // Check if welcome screen has been shown before
13
12
  const hasWelcomeScreenBeenShown = StorageService.preferences.getWelcomeScreenShown();
14
-
13
+
15
14
  // Set initial route based on whether welcome screen has been shown
16
15
  const initialRouteName = hasWelcomeScreenBeenShown ? 'Login' : 'Welcome';
17
16
 
@@ -37,30 +36,12 @@ export const AuthStack: React.FC = () => {
37
36
  <Stack.Screen
38
37
  name="Welcome"
39
38
  component={WelcomeScreen}
40
-
39
+
41
40
  />
42
41
  <Stack.Screen
43
42
  name="Login"
44
43
  component={LoginScreen}
45
-
46
- />
47
- <Stack.Screen
48
- name="Register"
49
- component={RegisterScreen}
50
-
51
- />
52
- <Stack.Screen
53
- name="ForgotPassword"
54
- component={ForgotPasswordScreen}
55
-
56
- />
57
- <Stack.Screen
58
- name="OTPVerify"
59
- component={OTPVerifyScreen}
60
- />
61
- <Stack.Screen
62
- name="Success"
63
- component={SuccessScreen}
44
+
64
45
  />
65
46
  </Stack.Navigator>
66
47
  );