create-gufran-expo-app 2.0.5 โ 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.
- package/README.md +60 -321
- package/bin/cli.js +0 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
#
|
|
1
|
+
# create-gufran-expo-app
|
|
2
2
|
|
|
3
|
-
](https://www.npmjs.com/package/create-gufran-expo-app)
|
|
4
|
+
[](https://www.npmjs.com/package/create-gufran-expo-app)
|
|
5
|
+
[](https://github.com/GufranGaury1887/Boiler_Plat_Expo_-Gufran/blob/main/LICENSE)
|
|
6
6
|
|
|
7
|
-
|
|
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
|
-
- โ๏ธ **
|
|
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
|
|
24
|
+
npx create-gufran-expo-app my-app
|
|
34
25
|
```
|
|
35
26
|
|
|
36
|
-
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
You don't need to install anything globally. Just use `npx`:
|
|
37
30
|
|
|
38
31
|
```bash
|
|
39
|
-
|
|
32
|
+
npx create-gufran-expo-app my-app
|
|
40
33
|
```
|
|
41
34
|
|
|
42
|
-
|
|
35
|
+
Or install globally:
|
|
43
36
|
|
|
44
37
|
```bash
|
|
45
|
-
|
|
38
|
+
npm install -g create-gufran-expo-app
|
|
39
|
+
create-gufran-expo-app my-app
|
|
46
40
|
```
|
|
47
41
|
|
|
48
|
-
|
|
42
|
+
## Usage
|
|
49
43
|
|
|
50
|
-
|
|
44
|
+
### Basic Usage
|
|
51
45
|
|
|
52
46
|
```bash
|
|
53
|
-
npx
|
|
47
|
+
npx create-gufran-expo-app my-app
|
|
54
48
|
```
|
|
55
49
|
|
|
56
|
-
|
|
50
|
+
### With Bundle ID
|
|
57
51
|
|
|
58
|
-
|
|
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
|
|
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 <
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
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
|
-
**
|
|
203
|
-
|
|
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
|
|
112
|
+
### 3. Install iOS dependencies
|
|
215
113
|
|
|
216
114
|
```bash
|
|
217
115
|
cd ios && pod install && cd ..
|
|
218
116
|
```
|
|
219
117
|
|
|
220
|
-
### 4.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
140
|
+
- Node.js >= 18.0.0
|
|
141
|
+
- For iOS: Xcode 14+, CocoaPods
|
|
142
|
+
- For Android: Android Studio, JDK 17
|
|
405
143
|
|
|
406
|
-
|
|
144
|
+
## License
|
|
407
145
|
|
|
408
|
-
|
|
146
|
+
MIT ยฉ [Gufran Gaury](https://github.com/GufranGaury1887)
|
|
409
147
|
|
|
410
|
-
|
|
148
|
+
## Links
|
|
411
149
|
|
|
412
|
-
|
|
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.
|
|
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": {
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"bin",
|
|
47
47
|
"lib",
|
|
48
48
|
"template",
|
|
49
|
+
"index.js",
|
|
49
50
|
"README.md",
|
|
50
51
|
"LICENSE"
|
|
51
52
|
]
|