@digilogiclabs/create-saas-app 1.19.8 → 1.20.1

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 (36) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/generators/package-installer.d.ts.map +1 -1
  4. package/dist/generators/package-installer.js +11 -1
  5. package/dist/generators/package-installer.js.map +1 -1
  6. package/dist/generators/template-generator.d.ts +2 -0
  7. package/dist/generators/template-generator.d.ts.map +1 -1
  8. package/dist/generators/template-generator.js +16 -0
  9. package/dist/generators/template-generator.js.map +1 -1
  10. package/dist/templates/mobile/base/template/App.tsx +11 -5
  11. package/dist/templates/mobile/base/template/app.json +1 -1
  12. package/dist/templates/mobile/base/template/babel.config.js +6 -0
  13. package/dist/templates/mobile/base/template/package.json +9 -4
  14. package/dist/templates/mobile/ui-auth-payments/template/app/_layout.tsx +11 -4
  15. package/dist/templates/mobile/ui-auth-payments/template/app.json +1 -1
  16. package/dist/templates/mobile/ui-auth-payments/template/package.json +11 -9
  17. package/dist/templates/mobile/ui-auth-payments-ai/template/app/_layout.tsx +11 -4
  18. package/dist/templates/mobile/ui-auth-payments-ai/template/app.json +1 -1
  19. package/dist/templates/mobile/ui-auth-payments-ai/template/package.json +11 -9
  20. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +134 -0
  21. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app.json +1 -1
  22. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/package.json +11 -9
  23. package/package.json +1 -1
  24. package/src/templates/mobile/base/template/App.tsx +11 -5
  25. package/src/templates/mobile/base/template/app.json +1 -1
  26. package/src/templates/mobile/base/template/babel.config.js +6 -0
  27. package/src/templates/mobile/base/template/package.json +9 -4
  28. package/src/templates/mobile/ui-auth-payments/template/app/_layout.tsx +11 -4
  29. package/src/templates/mobile/ui-auth-payments/template/app.json +1 -1
  30. package/src/templates/mobile/ui-auth-payments/template/package.json +11 -9
  31. package/src/templates/mobile/ui-auth-payments-ai/template/app/_layout.tsx +11 -4
  32. package/src/templates/mobile/ui-auth-payments-ai/template/app.json +1 -1
  33. package/src/templates/mobile/ui-auth-payments-ai/template/package.json +11 -9
  34. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +134 -0
  35. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app.json +1 -1
  36. package/src/templates/mobile/ui-auth-payments-ai-rag/template/package.json +11 -9
@@ -3,7 +3,8 @@ import { StatusBar } from 'expo-status-bar';
3
3
  import { StyleSheet, Text, View, Button } from 'react-native';
4
4
  import { SafeAreaProvider } from 'react-native-safe-area-context';
5
5
  import { AuthProvider, useAuth } from '@digilogiclabs/saas-factory-auth/native';
6
- import { StripeProvider } from '@digilogiclabs/saas-factory-payments/native';
6
+ import { PaymentsProvider } from '@digilogiclabs/saas-factory-payments/native';
7
+ import { StripeProvider } from '@stripe/stripe-react-native';
7
8
  import { Link, Slot } from 'expo-router';
8
9
  import {
9
10
  NativePageTransition as PageTransition,
@@ -100,11 +101,16 @@ export default function App() {
100
101
  return (
101
102
  <SafeAreaProvider>
102
103
  <AuthProvider>
103
- <StripeProvider
104
- stripeKey={process.env.EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY!}
104
+ <PaymentsProvider
105
+ apiUrl={process.env.EXPO_PUBLIC_API_URL || 'http://localhost:3000'}
105
106
  >
106
- <AppContent />
107
- </StripeProvider>
107
+ <StripeProvider
108
+ publishableKey={process.env.EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY!}
109
+ merchantIdentifier="merchant.com.{{packageName}}.app"
110
+ >
111
+ <AppContent />
112
+ </StripeProvider>
113
+ </PaymentsProvider>
108
114
  </AuthProvider>
109
115
  </SafeAreaProvider>
110
116
  );
@@ -28,7 +28,7 @@
28
28
  "foregroundImage": "./assets/adaptive-icon.png",
29
29
  "backgroundColor": "#ffffff"
30
30
  },
31
- "package": "com.{{packageName}}.app"
31
+ "package": "com.{{slugNameCamelCase}}.app"
32
32
  },
33
33
  "web": {
34
34
  "favicon": "./assets/favicon.png",
@@ -0,0 +1,6 @@
1
+ module.exports = function(api) {
2
+ api.cache(true);
3
+ return {
4
+ presets: ['babel-preset-expo'],
5
+ };
6
+ };
@@ -12,8 +12,8 @@
12
12
  "eject": "expo eject"
13
13
  },
14
14
  "dependencies": {
15
- "expo": "~51.0.0",
16
- "react": "18.2.0",
15
+ "expo": "~54.0.11",
16
+ "react": "19.1.0",
17
17
  "react-native": "0.72.10",
18
18
  "@expo/vector-icons": "^13.0.0",
19
19
  "@react-navigation/native": "^6.1.0",
@@ -24,13 +24,19 @@
24
24
  "react-native-gesture-handler": "~2.12.0",
25
25
  "@digilogiclabs/saas-factory-ui": "^0.27.1",
26
26
  "@digilogiclabs/saas-factory-auth": "^1.0.5",
27
- "@digilogiclabs/saas-factory-payments": "^1.2.6",
27
+ "@digilogiclabs/saas-factory-payments": "^1.2.7",
28
28
  "firebase": "^10.0.0",
29
29
  "@supabase/supabase-js": "^2.0.0",
30
30
  "@react-native-community/netinfo": "^11.0.0",
31
31
  "@stripe/stripe-react-native": "~0.28.0",
32
32
  "expo-linear-gradient": "~12.3.0",
33
33
  "@react-native-async-storage/async-storage": "1.18.2",
34
+ "expo-constants": "~16.0.2",
35
+ "expo-linking": "~6.3.1",
36
+ "expo-status-bar": "~1.12.1",
37
+ "react-native-web": "~0.19.10",
38
+ "react-dom": "19.1.0",
39
+ "@react-native/assets-registry": "^0.81.1",
34
40
  "expo-haptics": "~12.4.0",
35
41
  "expo-asset": "~8.10.1",
36
42
  "metro": "~0.76.0",
@@ -42,7 +48,6 @@
42
48
  "devDependencies": {
43
49
  "@babel/core": "^7.20.0",
44
50
  "@types/react": "~18.2.14",
45
- "@types/react-native": "~0.72.2",
46
51
  "typescript": "^5.1.3"
47
52
  },
48
53
  "private": true
@@ -19,6 +19,9 @@ import {
19
19
  // Auth Provider
20
20
  import { AuthProvider } from '@digilogiclabs/saas-factory-auth/native';
21
21
 
22
+ // Payments Provider
23
+ import { PaymentsProvider } from '@digilogiclabs/saas-factory-payments/native';
24
+
22
25
  // Prevent the splash screen from auto-hiding before asset loading is complete
23
26
  SplashScreen.preventAutoHideAsync();
24
27
 
@@ -57,10 +60,13 @@ export default function RootLayout() {
57
60
  supabaseUrl={process.env.EXPO_PUBLIC_SUPABASE_URL!}
58
61
  supabaseAnonKey={process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY!}
59
62
  >
60
- <StripeProvider
61
- publishableKey={process.env.EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY!}
62
- merchantIdentifier="merchant.com.{{packageName}}.app"
63
+ <PaymentsProvider
64
+ apiUrl={process.env.EXPO_PUBLIC_API_URL || 'http://localhost:3000'}
63
65
  >
66
+ <StripeProvider
67
+ publishableKey={process.env.EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY!}
68
+ merchantIdentifier="merchant.com.{{packageName}}.app"
69
+ >
64
70
  <AppShell
65
71
  navigationMode="tabs"
66
72
  showHeader={true}
@@ -115,7 +121,8 @@ export default function RootLayout() {
115
121
  </AppShell>
116
122
  <Toast />
117
123
  <StatusBar style="auto" />
118
- </StripeProvider>
124
+ </StripeProvider>
125
+ </PaymentsProvider>
119
126
  </AuthProvider>
120
127
  </NetworkAwareContent>
121
128
  </OfflineWrapper>
@@ -33,7 +33,7 @@
33
33
  "foregroundImage": "./assets/adaptive-icon.png",
34
34
  "backgroundColor": "#ffffff"
35
35
  },
36
- "package": "com.{{packageName}}.app",
36
+ "package": "com.{{slugNameCamelCase}}.app",
37
37
  "permissions": [
38
38
  "CAMERA",
39
39
  "ACCESS_FINE_LOCATION",
@@ -19,8 +19,8 @@
19
19
  "type-check": "tsc --noEmit"
20
20
  },
21
21
  "dependencies": {
22
- "expo": "~51.0.0",
23
- "react": "18.2.0",
22
+ "expo": "~54.0.11",
23
+ "react": "19.1.0",
24
24
  "react-native": "0.73.6",
25
25
 
26
26
  "@expo/vector-icons": "^14.0.0",
@@ -37,7 +37,7 @@
37
37
 
38
38
  "@digilogiclabs/saas-factory-ui": "^0.27.1",
39
39
  "@digilogiclabs/saas-factory-auth": "^1.0.5",
40
- "@digilogiclabs/saas-factory-payments": "^1.2.6",
40
+ "@digilogiclabs/saas-factory-payments": "^1.2.7",
41
41
 
42
42
  "@supabase/supabase-js": "^2.39.0",
43
43
  "@react-native-async-storage/async-storage": "1.21.0",
@@ -45,11 +45,11 @@
45
45
  "@stripe/stripe-react-native": "0.28.0",
46
46
  "@supabase/ssr": "^0.7.0",
47
47
 
48
- "expo-router": "~3.4.0",
48
+ "expo-router": "~6.0.9",
49
49
  "expo-font": "~11.10.0",
50
- "expo-linking": "~6.2.2",
51
- "expo-constants": "~15.4.0",
52
- "expo-status-bar": "~1.6.0",
50
+ "expo-linking": "~6.3.1",
51
+ "expo-constants": "~16.0.2",
52
+ "expo-status-bar": "~1.12.1",
53
53
  "expo-splash-screen": "~0.26.4",
54
54
  "expo-system-ui": "~2.9.3",
55
55
  "expo-web-browser": "~12.8.2",
@@ -78,7 +78,10 @@
78
78
  "react-native-mmkv": "^2.12.2",
79
79
  "react-native-svg": "14.1.0",
80
80
  "react-native-url-polyfill": "^2.0.0",
81
-
81
+ "react-native-web": "~0.19.10",
82
+ "react-dom": "19.1.0",
83
+ "@react-native/assets-registry": "^0.81.1",
84
+
82
85
  "zustand": "^4.4.7",
83
86
  "react-hook-form": "^7.48.2",
84
87
  "@hookform/resolvers": "^3.3.2",
@@ -89,7 +92,6 @@
89
92
  "devDependencies": {
90
93
  "@babel/core": "^7.23.6",
91
94
  "@types/react": "~18.2.45",
92
- "@types/react-native": "~0.73.0",
93
95
  "typescript": "~5.3.3",
94
96
  "jest": "^29.7.0",
95
97
  "@testing-library/react-native": "^12.4.2",
@@ -19,6 +19,9 @@ import {
19
19
  // Auth Provider
20
20
  import { AuthProvider } from '@digilogiclabs/saas-factory-auth/native';
21
21
 
22
+ // Payments Provider
23
+ import { PaymentsProvider } from '@digilogiclabs/saas-factory-payments/native';
24
+
22
25
  // Prevent the splash screen from auto-hiding before asset loading is complete
23
26
  SplashScreen.preventAutoHideAsync();
24
27
 
@@ -57,10 +60,13 @@ export default function RootLayout() {
57
60
  supabaseUrl={process.env.EXPO_PUBLIC_SUPABASE_URL!}
58
61
  supabaseAnonKey={process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY!}
59
62
  >
60
- <StripeProvider
61
- publishableKey={process.env.EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY!}
62
- merchantIdentifier="merchant.com.{{packageName}}.app"
63
+ <PaymentsProvider
64
+ apiUrl={process.env.EXPO_PUBLIC_API_URL || 'http://localhost:3000'}
63
65
  >
66
+ <StripeProvider
67
+ publishableKey={process.env.EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY!}
68
+ merchantIdentifier="merchant.com.{{packageName}}.app"
69
+ >
64
70
  <AppShell
65
71
  navigationMode="tabs"
66
72
  showHeader={true}
@@ -115,7 +121,8 @@ export default function RootLayout() {
115
121
  </AppShell>
116
122
  <Toast />
117
123
  <StatusBar style="auto" />
118
- </StripeProvider>
124
+ </StripeProvider>
125
+ </PaymentsProvider>
119
126
  </AuthProvider>
120
127
  </NetworkAwareContent>
121
128
  </OfflineWrapper>
@@ -33,7 +33,7 @@
33
33
  "foregroundImage": "./assets/adaptive-icon.png",
34
34
  "backgroundColor": "#ffffff"
35
35
  },
36
- "package": "com.{{packageName}}.app",
36
+ "package": "com.{{slugNameCamelCase}}.app",
37
37
  "permissions": [
38
38
  "CAMERA",
39
39
  "ACCESS_FINE_LOCATION",
@@ -19,8 +19,8 @@
19
19
  "type-check": "tsc --noEmit"
20
20
  },
21
21
  "dependencies": {
22
- "expo": "~51.0.0",
23
- "react": "18.2.0",
22
+ "expo": "~54.0.11",
23
+ "react": "19.1.0",
24
24
  "react-native": "0.73.6",
25
25
 
26
26
  "@expo/vector-icons": "^14.0.0",
@@ -37,7 +37,7 @@
37
37
 
38
38
  "@digilogiclabs/saas-factory-ui": "^0.27.1",
39
39
  "@digilogiclabs/saas-factory-auth": "^1.0.5",
40
- "@digilogiclabs/saas-factory-payments": "^1.2.6",
40
+ "@digilogiclabs/saas-factory-payments": "^1.2.7",
41
41
  "@digilogiclabs/saas-factory-ai": "^4.0.2",
42
42
  "@digilogiclabs/saas-factory-ai-types": "^4.0.2",
43
43
 
@@ -47,11 +47,11 @@
47
47
  "@stripe/stripe-react-native": "0.28.0",
48
48
  "@supabase/ssr": "^0.7.0",
49
49
 
50
- "expo-router": "~3.4.0",
50
+ "expo-router": "~6.0.9",
51
51
  "expo-font": "~11.10.0",
52
- "expo-linking": "~6.2.2",
53
- "expo-constants": "~15.4.0",
54
- "expo-status-bar": "~1.6.0",
52
+ "expo-linking": "~6.3.1",
53
+ "expo-constants": "~16.0.2",
54
+ "expo-status-bar": "~1.12.1",
55
55
  "expo-splash-screen": "~0.26.4",
56
56
  "expo-system-ui": "~2.9.3",
57
57
  "expo-web-browser": "~12.8.2",
@@ -80,7 +80,10 @@
80
80
  "react-native-mmkv": "^2.12.2",
81
81
  "react-native-svg": "14.1.0",
82
82
  "react-native-url-polyfill": "^2.0.0",
83
-
83
+ "react-native-web": "~0.19.10",
84
+ "react-dom": "19.1.0",
85
+ "@react-native/assets-registry": "^0.81.1",
86
+
84
87
  "zustand": "^4.4.7",
85
88
  "react-hook-form": "^7.48.2",
86
89
  "@hookform/resolvers": "^3.3.2",
@@ -91,7 +94,6 @@
91
94
  "devDependencies": {
92
95
  "@babel/core": "^7.23.6",
93
96
  "@types/react": "~18.2.45",
94
- "@types/react-native": "~0.73.0",
95
97
  "typescript": "~5.3.3",
96
98
  "jest": "^29.7.0",
97
99
  "@testing-library/react-native": "^12.4.2",
@@ -0,0 +1,134 @@
1
+ import { useEffect } from 'react';
2
+ import { useFonts } from 'expo-font';
3
+ import { SplashScreen, Stack } from 'expo-router';
4
+ import { SafeAreaProvider } from 'react-native-safe-area-context';
5
+ import { StatusBar } from 'expo-status-bar';
6
+ import { GestureHandlerRootView } from 'react-native-gesture-handler';
7
+ import { StripeProvider } from '@stripe/stripe-react-native';
8
+
9
+ // UI Library Providers
10
+ import {
11
+ NativeThemeProvider as ThemeProvider,
12
+ OfflineWrapper,
13
+ NetworkAwareContent,
14
+ NativeHapticsProvider as HapticsProvider,
15
+ NativeToast as Toast,
16
+ AppShell
17
+ } from '@digilogiclabs/saas-factory-ui/native';
18
+
19
+ // Auth Provider
20
+ import { AuthProvider } from '@digilogiclabs/saas-factory-auth/native';
21
+
22
+ // Payments Provider
23
+ import { PaymentsProvider } from '@digilogiclabs/saas-factory-payments/native';
24
+
25
+ // Prevent the splash screen from auto-hiding before asset loading is complete
26
+ SplashScreen.preventAutoHideAsync();
27
+
28
+ export default function RootLayout() {
29
+ const [loaded, error] = useFonts({
30
+ // Add your custom fonts here
31
+ });
32
+
33
+ // Expo Router uses Error Boundaries to catch errors in the navigation tree
34
+ useEffect(() => {
35
+ if (error) throw error;
36
+ }, [error]);
37
+
38
+ useEffect(() => {
39
+ if (loaded) {
40
+ SplashScreen.hideAsync();
41
+ }
42
+ }, [loaded]);
43
+
44
+ if (!loaded) {
45
+ return null;
46
+ }
47
+
48
+ return (
49
+ <GestureHandlerRootView style={{ flex: 1 }}>
50
+ <SafeAreaProvider>
51
+ <ThemeProvider>
52
+ <HapticsProvider>
53
+ <OfflineWrapper
54
+ cacheStrategy="stale-while-revalidate"
55
+ showOfflineIndicator={true}
56
+ backgroundSync={true}
57
+ >
58
+ <NetworkAwareContent>
59
+ <AuthProvider
60
+ supabaseUrl={process.env.EXPO_PUBLIC_SUPABASE_URL!}
61
+ supabaseAnonKey={process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY!}
62
+ >
63
+ <PaymentsProvider
64
+ apiUrl={process.env.EXPO_PUBLIC_API_URL || 'http://localhost:3000'}
65
+ >
66
+ <StripeProvider
67
+ publishableKey={process.env.EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY!}
68
+ merchantIdentifier="merchant.com.{{packageName}}.app"
69
+ >
70
+ <AppShell
71
+ navigationMode="tabs"
72
+ showHeader={true}
73
+ headerConfig={{
74
+ title: "{{titleCaseName}}",
75
+ showBackButton: false,
76
+ showProfileButton: true
77
+ }}
78
+ >
79
+ <Stack
80
+ screenOptions={{
81
+ headerShown: false,
82
+ animation: 'slide_from_right',
83
+ animationTypeForReplace: 'push'
84
+ }}
85
+ >
86
+ <Stack.Screen
87
+ name="(tabs)"
88
+ options={{ headerShown: false }}
89
+ />
90
+ <Stack.Screen
91
+ name="auth"
92
+ options={{
93
+ presentation: 'modal',
94
+ headerShown: false
95
+ }}
96
+ />
97
+ <Stack.Screen
98
+ name="onboarding"
99
+ options={{
100
+ presentation: 'fullScreenModal',
101
+ headerShown: false
102
+ }}
103
+ />
104
+ <Stack.Screen
105
+ name="profile"
106
+ options={{
107
+ presentation: 'card',
108
+ headerShown: true,
109
+ title: 'Profile'
110
+ }}
111
+ />
112
+ <Stack.Screen
113
+ name="settings"
114
+ options={{
115
+ presentation: 'card',
116
+ headerShown: true,
117
+ title: 'Settings'
118
+ }}
119
+ />
120
+ </Stack>
121
+ </AppShell>
122
+ <Toast />
123
+ <StatusBar style="auto" />
124
+ </StripeProvider>
125
+ </PaymentsProvider>
126
+ </AuthProvider>
127
+ </NetworkAwareContent>
128
+ </OfflineWrapper>
129
+ </HapticsProvider>
130
+ </ThemeProvider>
131
+ </SafeAreaProvider>
132
+ </GestureHandlerRootView>
133
+ );
134
+ }
@@ -30,7 +30,7 @@
30
30
  "foregroundImage": "./assets/adaptive-icon.png",
31
31
  "backgroundColor": "#ffffff"
32
32
  },
33
- "package": "{{androidPackage}}",
33
+ "package": "com.{{slugNameCamelCase}}.app",
34
34
  "permissions": [
35
35
  "CAMERA",
36
36
  "RECORD_AUDIO",
@@ -22,8 +22,8 @@
22
22
  "db:types": "supabase gen types --local > types/supabase.ts"
23
23
  },
24
24
  "dependencies": {
25
- "expo": "~51.0.0",
26
- "react": "18.2.0",
25
+ "expo": "~54.0.11",
26
+ "react": "19.1.0",
27
27
  "react-native": "0.73.6",
28
28
 
29
29
  "@expo/vector-icons": "^14.0.0",
@@ -40,7 +40,7 @@
40
40
 
41
41
  "@digilogiclabs/saas-factory-ui": "^0.27.1",
42
42
  "@digilogiclabs/saas-factory-auth": "^1.0.5",
43
- "@digilogiclabs/saas-factory-payments": "^1.2.6",
43
+ "@digilogiclabs/saas-factory-payments": "^1.2.7",
44
44
  "@digilogiclabs/saas-factory-ai": "^4.0.2",
45
45
  "@digilogiclabs/saas-factory-ai-types": "^4.0.2",
46
46
 
@@ -50,11 +50,11 @@
50
50
  "@stripe/stripe-react-native": "0.28.0",
51
51
  "@supabase/ssr": "^0.7.0",
52
52
 
53
- "expo-router": "~3.4.0",
53
+ "expo-router": "~6.0.9",
54
54
  "expo-font": "~11.10.0",
55
- "expo-linking": "~6.2.2",
56
- "expo-constants": "~15.4.0",
57
- "expo-status-bar": "~1.6.0",
55
+ "expo-linking": "~6.3.1",
56
+ "expo-constants": "~16.0.2",
57
+ "expo-status-bar": "~1.12.1",
58
58
  "expo-splash-screen": "~0.26.4",
59
59
  "expo-system-ui": "~2.9.3",
60
60
  "expo-web-browser": "~12.8.2",
@@ -85,7 +85,10 @@
85
85
  "react-native-mmkv": "^2.12.2",
86
86
  "react-native-svg": "14.1.0",
87
87
  "react-native-url-polyfill": "^2.0.0",
88
-
88
+ "react-native-web": "~0.19.10",
89
+ "react-dom": "19.1.0",
90
+ "@react-native/assets-registry": "^0.81.1",
91
+
89
92
  "zustand": "^4.4.7",
90
93
  "react-hook-form": "^7.48.2",
91
94
  "@hookform/resolvers": "^3.3.2",
@@ -96,7 +99,6 @@
96
99
  "devDependencies": {
97
100
  "@babel/core": "^7.23.6",
98
101
  "@types/react": "~18.2.45",
99
- "@types/react-native": "~0.73.0",
100
102
  "typescript": "~5.3.3",
101
103
  "jest": "^29.7.0",
102
104
  "@testing-library/react-native": "^12.4.2",