@idealyst/cli 1.0.33 → 1.0.35

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 (82) hide show
  1. package/dist/templates/api/README.md +207 -0
  2. package/dist/templates/api/__tests__/api.test.ts +26 -0
  3. package/dist/templates/api/env.example +12 -0
  4. package/dist/templates/api/jest.config.js +23 -0
  5. package/dist/templates/api/jest.setup.js +9 -0
  6. package/dist/templates/api/package.json +62 -0
  7. package/dist/templates/api/prisma/schema.prisma +21 -0
  8. package/dist/templates/api/src/context.ts +23 -0
  9. package/dist/templates/api/src/controllers/UserController.ts +102 -0
  10. package/dist/templates/api/src/index.ts +14 -0
  11. package/dist/templates/api/src/lib/controller.ts +90 -0
  12. package/dist/templates/api/src/lib/middleware.ts +170 -0
  13. package/dist/templates/api/src/middleware/auth.ts +75 -0
  14. package/dist/templates/api/src/middleware/common.ts +103 -0
  15. package/dist/templates/api/src/router/index.ts +130 -0
  16. package/dist/templates/api/src/server.ts +50 -0
  17. package/dist/templates/api/src/trpc.ts +28 -0
  18. package/dist/templates/api/tsconfig.json +44 -0
  19. package/dist/templates/native/.yarnrc.yml +19 -0
  20. package/dist/templates/native/App.tsx +23 -0
  21. package/dist/templates/native/README.md +86 -0
  22. package/dist/templates/native/__tests__/App.test.tsx +156 -0
  23. package/dist/templates/native/__tests__/components.test.tsx +300 -0
  24. package/dist/templates/native/app.json +5 -0
  25. package/dist/templates/native/babel.config.js +10 -0
  26. package/dist/templates/native/index.js +6 -0
  27. package/dist/templates/native/jest.config.js +21 -0
  28. package/dist/templates/native/jest.setup.js +12 -0
  29. package/dist/templates/native/metro.config.js +27 -0
  30. package/dist/templates/native/package.json +44 -0
  31. package/dist/templates/native/src/App-with-trpc.tsx +59 -0
  32. package/dist/templates/native/src/utils/trpc.ts +127 -0
  33. package/dist/templates/native/tsconfig.json +30 -0
  34. package/dist/templates/shared/README.md +109 -0
  35. package/dist/templates/shared/__tests__/shared.test.ts +39 -0
  36. package/dist/templates/shared/jest.config.js +22 -0
  37. package/dist/templates/shared/package.json +50 -0
  38. package/dist/templates/shared/rollup.config.js +43 -0
  39. package/dist/templates/shared/src/index.ts +1 -0
  40. package/dist/templates/shared/tsconfig.json +25 -0
  41. package/dist/templates/web/README.md +90 -0
  42. package/dist/templates/web/__tests__/App.test.tsx +342 -0
  43. package/dist/templates/web/__tests__/components.test.tsx +564 -0
  44. package/dist/templates/web/index.html +13 -0
  45. package/dist/templates/web/jest.config.js +27 -0
  46. package/dist/templates/web/jest.setup.js +24 -0
  47. package/dist/templates/web/package.json +66 -0
  48. package/dist/templates/web/src/App-with-trpc.tsx +67 -0
  49. package/dist/templates/web/src/App.tsx +15 -0
  50. package/dist/templates/web/src/main.tsx +25 -0
  51. package/dist/templates/web/src/utils/trpc.ts +93 -0
  52. package/dist/templates/web/tsconfig.json +27 -0
  53. package/dist/templates/web/vite.config.ts +69 -0
  54. package/dist/templates/workspace/.devcontainer/devcontainer.json +140 -0
  55. package/dist/templates/workspace/.devcontainer/docker-compose.yml +74 -0
  56. package/dist/templates/workspace/.dockerignore +151 -0
  57. package/dist/templates/workspace/.env.example +36 -0
  58. package/dist/templates/workspace/.env.production +56 -0
  59. package/dist/templates/workspace/.yarnrc.yml +26 -0
  60. package/dist/templates/workspace/DOCKER.md +0 -0
  61. package/dist/templates/workspace/Dockerfile +93 -0
  62. package/dist/templates/workspace/README.md +179 -0
  63. package/dist/templates/workspace/docker/nginx/prod.conf +238 -0
  64. package/dist/templates/workspace/docker/nginx.conf +131 -0
  65. package/dist/templates/workspace/docker/postgres/init.sql +41 -0
  66. package/dist/templates/workspace/docker/prometheus/prometheus.yml +52 -0
  67. package/dist/templates/workspace/docker-compose.prod.yml +146 -0
  68. package/dist/templates/workspace/docker-compose.yml +144 -0
  69. package/dist/templates/workspace/jest.config.js +20 -0
  70. package/dist/templates/workspace/package.json +35 -0
  71. package/dist/templates/workspace/scripts/docker/db-backup.sh +230 -0
  72. package/dist/templates/workspace/scripts/docker/deploy.sh +212 -0
  73. package/dist/templates/workspace/scripts/docker-build.sh +151 -0
  74. package/dist/templates/workspace/scripts/test-runner.js +120 -0
  75. package/dist/templates/workspace/setup.sh +205 -0
  76. package/package.json +3 -2
  77. package/templates/workspace/.devcontainer/Dockerfile +22 -0
  78. package/templates/workspace/.devcontainer/devcontainer.json +0 -140
  79. package/templates/workspace/.devcontainer/docker-compose.yml +13 -26
  80. package/templates/workspace/.devcontainer/setup.sh +64 -0
  81. package/templates/workspace/Dockerfile +24 -6
  82. /package/{templates → dist/templates}/workspace/.devcontainer/post-create.sh +0 -0
@@ -0,0 +1,59 @@
1
+ import React from 'react';
2
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
3
+ import { httpBatchLink } from '@trpc/client';
4
+ import { Screen, Text, View } from '@idealyst/components';
5
+ import { trpc } from './utils/trpc';
6
+
7
+ // Create tRPC client
8
+ const queryClient = new QueryClient();
9
+
10
+ const trpcClient = trpc.createClient({
11
+ links: [
12
+ httpBatchLink({
13
+ url: 'http://localhost:3000/trpc', // Update this to your API URL
14
+ // For device testing, you might need: 'http://192.168.1.xxx:3000/trpc'
15
+ // Optional: Add headers for authentication
16
+ // headers() {
17
+ // return {
18
+ // authorization: getAuthToken(),
19
+ // };
20
+ // },
21
+ }),
22
+ ],
23
+ });
24
+
25
+ function App() {
26
+ // Example tRPC usage
27
+ const { data, isLoading, error } = trpc.hello.useQuery({ name: 'React Native' });
28
+
29
+ return (
30
+ <trpc.Provider client={trpcClient} queryClient={queryClient}>
31
+ <QueryClientProvider client={queryClient}>
32
+ <Screen>
33
+ <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center', padding: 20 }}>
34
+ <Text variant="h1" style={{ textAlign: 'center', marginBottom: 20 }}>
35
+ Welcome to {{appName}}!
36
+ </Text>
37
+ <Text variant="body" style={{ textAlign: 'center', marginBottom: 20 }}>
38
+ This is a React Native app built with the Idealyst Framework
39
+ </Text>
40
+
41
+ {/* tRPC Example */}
42
+ <View style={{ marginTop: 20, alignItems: 'center' }}>
43
+ <Text variant="h3" style={{ marginBottom: 10 }}>tRPC Example:</Text>
44
+ {isLoading && <Text>Loading...</Text>}
45
+ {error && <Text>Error: {error.message}</Text>}
46
+ {data && <Text style={{ textAlign: 'center' }}>{data.greeting}</Text>}
47
+ </View>
48
+
49
+ <Text variant="caption" style={{ textAlign: 'center', marginTop: 30 }}>
50
+ Edit src/App.tsx to get started
51
+ </Text>
52
+ </View>
53
+ </Screen>
54
+ </QueryClientProvider>
55
+ </trpc.Provider>
56
+ );
57
+ }
58
+
59
+ export default App;
@@ -0,0 +1,127 @@
1
+ import { createTRPCReact } from '@trpc/react-query';
2
+ import { createTRPCProxyClient, httpBatchLink } from '@trpc/client';
3
+
4
+ // Import your API types here when you have an API project
5
+ // Example: import type { AppRouter } from '@your-workspace/api';
6
+
7
+ // For now, we'll use a generic type that you can replace
8
+ type AppRouter = any;
9
+
10
+ // Create the tRPC React hooks
11
+ export const trpc = createTRPCReact<AppRouter>();
12
+
13
+ // Create a vanilla client (for use outside of React components)
14
+ export const trpcClient = createTRPCProxyClient<AppRouter>({
15
+ links: [
16
+ httpBatchLink({
17
+ url: 'http://localhost:3000/trpc', // Update this to match your API URL
18
+ // Optional: Add headers for authentication
19
+ // headers() {
20
+ // return {
21
+ // authorization: getAuthToken(),
22
+ // };
23
+ // },
24
+ }),
25
+ ],
26
+ });
27
+
28
+ /*
29
+ Usage Examples for React Native:
30
+
31
+ 1. First, install the required dependencies:
32
+ yarn add @trpc/client @trpc/react-query @tanstack/react-query
33
+
34
+ 2. Replace the AppRouter type import above with your actual API router:
35
+ import type { AppRouter } from '@your-workspace/api';
36
+
37
+ 3. Set up the tRPC provider in your App component:
38
+
39
+ ```tsx
40
+ import React from 'react';
41
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
42
+ import { httpBatchLink } from '@trpc/client';
43
+ import { trpc } from './src/utils/trpc';
44
+
45
+ const queryClient = new QueryClient();
46
+
47
+ const trpcClient = trpc.createClient({
48
+ links: [
49
+ httpBatchLink({
50
+ url: 'http://localhost:3000/trpc', // Use your computer's IP for device testing
51
+ // For device testing, you might need: 'http://192.168.1.xxx:3000/trpc'
52
+ }),
53
+ ],
54
+ });
55
+
56
+ function App() {
57
+ return (
58
+ <trpc.Provider client={trpcClient} queryClient={queryClient}>
59
+ <QueryClientProvider client={queryClient}>
60
+ // Your app components
61
+ </QueryClientProvider>
62
+ </trpc.Provider>
63
+ );
64
+ }
65
+
66
+ export default App;
67
+ ```
68
+
69
+ 4. Use tRPC in your React Native components:
70
+
71
+ ```tsx
72
+ import React from 'react';
73
+ import { View, Text, ScrollView, TouchableOpacity } from 'react-native';
74
+ import { trpc } from '../utils/trpc';
75
+
76
+ function UsersList() {
77
+ const { data: users, isLoading, refetch } = trpc.users.getAll.useQuery();
78
+ const createUser = trpc.users.create.useMutation({
79
+ onSuccess: () => {
80
+ refetch(); // Refresh the list after creating
81
+ },
82
+ });
83
+
84
+ if (isLoading) {
85
+ return (
86
+ <View>
87
+ <Text>Loading...</Text>
88
+ </View>
89
+ );
90
+ }
91
+
92
+ return (
93
+ <ScrollView>
94
+ {users?.map(user => (
95
+ <View key={user.id}>
96
+ <Text>{user.name}</Text>
97
+ <Text>{user.email}</Text>
98
+ </View>
99
+ ))}
100
+ <TouchableOpacity
101
+ onPress={() => createUser.mutate({
102
+ email: 'test@example.com',
103
+ name: 'Test User'
104
+ })}
105
+ >
106
+ <Text>Create User</Text>
107
+ </TouchableOpacity>
108
+ </ScrollView>
109
+ );
110
+ }
111
+ ```
112
+
113
+ 5. For device testing, make sure to:
114
+ - Use your computer's IP address instead of localhost
115
+ - Ensure your API server is accessible from the device
116
+ - Consider using ngrok for external testing
117
+
118
+ 6. Error handling example:
119
+
120
+ ```tsx
121
+ const { data, error, isLoading } = trpc.users.getAll.useQuery();
122
+
123
+ if (error) {
124
+ return <Text>Error: {error.message}</Text>;
125
+ }
126
+ ```
127
+ */
@@ -0,0 +1,30 @@
1
+ {
2
+ "extends": "@react-native/typescript-config/tsconfig.json",
3
+ "compilerOptions": {
4
+ "allowJs": true,
5
+ "allowSyntheticDefaultImports": true,
6
+ "esModuleInterop": true,
7
+ "isolatedModules": true,
8
+ "jsx": "react-native",
9
+ "lib": ["es2017"],
10
+ "moduleResolution": "node",
11
+ "noEmit": true,
12
+ "strict": true,
13
+ "target": "esnext",
14
+ "skipLibCheck": true,
15
+ "resolveJsonModule": true,
16
+ "baseUrl": "./",
17
+ "paths": {
18
+ "@/*": ["./src/*"]
19
+ }
20
+ },
21
+ "include": [
22
+ "src/**/*",
23
+ "index.js"
24
+ ],
25
+ "exclude": [
26
+ "node_modules",
27
+ "android",
28
+ "ios"
29
+ ]
30
+ }
@@ -0,0 +1,109 @@
1
+ # {{projectName}}
2
+
3
+ {{description}}
4
+
5
+ ## Getting Started
6
+
7
+ This is a shared library built with the Idealyst Framework that can be used across React Native and React web applications.
8
+
9
+ ### Prerequisites
10
+
11
+ - Node.js 18+
12
+ - Yarn
13
+
14
+ ### Installation
15
+
16
+ Install dependencies:
17
+ ```bash
18
+ yarn install
19
+ ```
20
+
21
+ ### Development
22
+
23
+ Build the library:
24
+ ```bash
25
+ yarn build
26
+ ```
27
+
28
+ Watch for changes during development:
29
+ ```bash
30
+ yarn dev
31
+ ```
32
+
33
+ ### Project Structure
34
+
35
+ ```
36
+ {{projectName}}/
37
+ ├── src/
38
+ │ ├── components/ # Shared components
39
+ │ ├── utils/ # Utility functions
40
+ │ ├── types/ # TypeScript types
41
+ │ └── index.ts # Main export file
42
+ ├── dist/ # Built library (generated)
43
+ ├── rollup.config.js # Build configuration
44
+ └── tsconfig.json # TypeScript configuration
45
+ ```
46
+
47
+ ### Features
48
+
49
+ - **Cross-platform**: Works on both React Native and React web
50
+ - **TypeScript**: Full type safety
51
+ - **Tree-shakeable**: Optimized for bundle size
52
+ - **Peer Dependencies**: Lightweight by design
53
+ - **Idealyst Theme Integration**: Compatible with the Idealyst theming system
54
+
55
+ ### Usage
56
+
57
+ After building, you can import and use the library in your projects:
58
+
59
+ ```tsx
60
+ import { SharedComponent, toTitleCase, ComponentProps } from '{{packageName}}';
61
+
62
+ // Use the shared component
63
+ <SharedComponent
64
+ title="Hello World"
65
+ description="This works on both web and mobile!"
66
+ />
67
+
68
+ // Use utility functions
69
+ const formatted = toTitleCase('hello world'); // "Hello World"
70
+ ```
71
+
72
+ ### Building for Production
73
+
74
+ Build the library:
75
+ ```bash
76
+ yarn build
77
+ ```
78
+
79
+ This creates:
80
+ - `dist/index.js` - CommonJS build
81
+ - `dist/index.esm.js` - ES modules build
82
+ - `dist/index.d.ts` - TypeScript declarations
83
+
84
+ ### Publishing
85
+
86
+ Before publishing, make sure to:
87
+
88
+ 1. Update the version in `package.json`
89
+ 2. Build the library: `yarn build`
90
+ 3. Publish to npm: `npm publish`
91
+
92
+ ### Development in Monorepo
93
+
94
+ If you're using this in a monorepo, you can reference it directly:
95
+
96
+ ```json
97
+ {
98
+ "dependencies": {
99
+ "{{packageName}}": "workspace:*"
100
+ }
101
+ }
102
+ ```
103
+
104
+ ### Learn More
105
+
106
+ - [Idealyst Framework Documentation](https://github.com/your-username/idealyst-framework)
107
+ - [React Native Documentation](https://reactnative.dev/)
108
+ - [React Documentation](https://react.dev/)
109
+ - [Rollup Documentation](https://rollupjs.org/)
@@ -0,0 +1,39 @@
1
+ import { add_stuff } from '../src/index';
2
+
3
+ describe('Shared Library', () => {
4
+ it('should export add_stuff', () => {
5
+ expect(add_stuff).toBeDefined();
6
+ expect(typeof add_stuff).toBe('string');
7
+ expect(add_stuff).toBe('here');
8
+ });
9
+ });
10
+
11
+ describe('Sample Shared Tests', () => {
12
+ it('should pass a basic test', () => {
13
+ expect(1 + 1).toBe(2);
14
+ });
15
+
16
+ it('should handle string operations', () => {
17
+ const testString = 'Hello World';
18
+ expect(testString).toContain('World');
19
+ expect(testString.length).toBe(11);
20
+ });
21
+
22
+ it('should work with objects', () => {
23
+ const testObj = { name: 'test', value: 42 };
24
+ expect(testObj).toHaveProperty('name');
25
+ expect(testObj).toHaveProperty('value', 42);
26
+ });
27
+
28
+ it('should handle arrays', () => {
29
+ const testArray = [1, 2, 3, 4, 5];
30
+ expect(testArray).toHaveLength(5);
31
+ expect(testArray).toContain(3);
32
+ expect(testArray.filter(x => x > 3)).toEqual([4, 5]);
33
+ });
34
+
35
+ it('should work with async operations', async () => {
36
+ const result = await Promise.resolve('async test');
37
+ expect(result).toBe('async test');
38
+ });
39
+ });
@@ -0,0 +1,22 @@
1
+ /** @type {import('jest').Config} */
2
+ module.exports = {
3
+ preset: 'ts-jest',
4
+ testEnvironment: 'node',
5
+ roots: ['<rootDir>/src', '<rootDir>/__tests__'],
6
+ testMatch: [
7
+ '**/__tests__/**/*.{ts,tsx,js}',
8
+ '**/*.{test,spec}.{ts,tsx,js}'
9
+ ],
10
+ transform: {
11
+ '^.+\\.tsx?$': 'ts-jest',
12
+ },
13
+ collectCoverageFrom: [
14
+ 'src/**/*.{ts,tsx}',
15
+ '!src/**/*.d.ts',
16
+ '!src/**/index.ts',
17
+ ],
18
+ coverageDirectory: 'coverage',
19
+ coverageReporters: ['text', 'lcov'],
20
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
21
+ testTimeout: 10000,
22
+ };
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "{{packageName}}",
3
+ "version": "{{version}}",
4
+ "description": "{{description}}",
5
+ "main": "src/index.ts",
6
+ "module": "src/index.ts",
7
+ "types": "src/index.ts",
8
+ "scripts": {
9
+ "build": "tsc",
10
+ "test": "jest",
11
+ "test:watch": "jest --watch",
12
+ "test:coverage": "jest --coverage",
13
+ "type-check": "tsc --noEmit"
14
+ },
15
+ "peerDependencies": {
16
+ "@idealyst/components": "^1.0.21",
17
+ "@idealyst/navigation": "^1.0.21",
18
+ "@idealyst/theme": "^1.0.21",
19
+ "react": "^19.1.0",
20
+ "react-native": "^0.80.1"
21
+ },
22
+ "peerDependenciesMeta": {
23
+ "react-native": {
24
+ "optional": true
25
+ }
26
+ },
27
+ "devDependencies": {
28
+ "@idealyst/components": "^1.0.21",
29
+ "@idealyst/navigation": "^1.0.21",
30
+ "@idealyst/theme": "^1.0.21",
31
+ "@types/jest": "^29.5.12",
32
+ "@types/react": "^19.1.0",
33
+ "jest": "^29.7.0",
34
+ "react": "^19.1.0",
35
+ "react-native": "^0.80.1",
36
+ "ts-jest": "^29.1.2",
37
+ "typescript": "^5.0.0"
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "src"
42
+ ],
43
+ "keywords": [
44
+ "react",
45
+ "react-native",
46
+ "cross-platform",
47
+ "shared",
48
+ "library"
49
+ ]
50
+ }
@@ -0,0 +1,43 @@
1
+ const typescript = require('rollup-plugin-typescript2');
2
+
3
+ module.exports = {
4
+ input: 'src/index.ts',
5
+ output: [
6
+ {
7
+ file: 'dist/index.js',
8
+ format: 'cjs',
9
+ exports: 'named',
10
+ sourcemap: true,
11
+ },
12
+ {
13
+ file: 'dist/index.esm.js',
14
+ format: 'esm',
15
+ exports: 'named',
16
+ sourcemap: true,
17
+ },
18
+ ],
19
+ plugins: [
20
+ typescript({
21
+ typescript: require('typescript'),
22
+ tsconfig: './tsconfig.json',
23
+ exclude: ['**/*.test.ts', '**/*.test.tsx', '**/*.native.ts', '**/*.native.tsx'],
24
+ declaration: true,
25
+ declarationDir: 'dist',
26
+ rootDir: 'src',
27
+ clean: true,
28
+ }),
29
+ ],
30
+ external: [
31
+ 'react',
32
+ 'react-dom',
33
+ 'react-native',
34
+ 'react-native-unistyles',
35
+ '@react-native/normalize-colors',
36
+ 'react-native-edge-to-edge',
37
+ 'react-native-nitro-modules',
38
+ '@react-native-vector-icons/common',
39
+ '@react-native-vector-icons/material-design-icons',
40
+ '@mdi/js',
41
+ '@mdi/react',
42
+ ],
43
+ };
@@ -0,0 +1 @@
1
+ export const add_stuff = "here";
@@ -0,0 +1,25 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "ESNext",
5
+ "lib": ["ES2020"],
6
+ "moduleResolution": "node",
7
+ "esModuleInterop": true,
8
+ "allowSyntheticDefaultImports": true,
9
+ "strict": true,
10
+ "skipLibCheck": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "declaration": true,
13
+ "declarationDir": "./dist",
14
+ "outDir": "./dist",
15
+ "rootDir": "./src",
16
+ "jsx": "react-jsx"
17
+ },
18
+ "include": [
19
+ "src/**/*"
20
+ ],
21
+ "exclude": [
22
+ "node_modules",
23
+ "dist"
24
+ ]
25
+ }
@@ -0,0 +1,90 @@
1
+ # {{projectName}}
2
+
3
+ {{description}}
4
+
5
+ ## Getting Started
6
+
7
+ This is a React web application built with the Idealyst Framework and Vite.
8
+
9
+ ### Prerequisites
10
+
11
+ - Node.js 18+
12
+ - Yarn
13
+
14
+ ### Installation
15
+
16
+ Install dependencies:
17
+ ```bash
18
+ yarn install
19
+ ```
20
+
21
+ ### Development
22
+
23
+ Start the development server:
24
+ ```bash
25
+ yarn dev
26
+ ```
27
+
28
+ The app will be available at `http://localhost:3000`
29
+
30
+ ### Building for Production
31
+
32
+ Build the app:
33
+ ```bash
34
+ yarn build
35
+ ```
36
+
37
+ Preview the production build:
38
+ ```bash
39
+ yarn preview
40
+ ```
41
+
42
+ ### Project Structure
43
+
44
+ ```
45
+ {{projectName}}/
46
+ ├── src/
47
+ │ ├── App.tsx # Main app component
48
+ │ └── main.tsx # App entry point
49
+ ├── index.html # HTML template
50
+ ├── vite.config.ts # Vite configuration
51
+ └── tsconfig.json # TypeScript configuration
52
+ ```
53
+
54
+ ### Features
55
+
56
+ - **Idealyst Components**: Cross-platform UI components
57
+ - **Idealyst Navigation**: Consistent navigation system
58
+ - **Idealyst Theme**: Unified theming across platforms
59
+ - **React 19.1**: Latest React version
60
+ - **Vite**: Fast build tool and dev server
61
+ - **TypeScript**: Full type safety
62
+ - **React Native Web**: Use React Native components on the web
63
+
64
+ ### Development
65
+
66
+ The app uses the Idealyst Framework for consistent UI and navigation that works across web and mobile platforms.
67
+
68
+ Edit `src/App.tsx` to start building your application.
69
+
70
+ ### Styling
71
+
72
+ The app uses Unistyles for cross-platform styling. You can create styles that work on both web and mobile:
73
+
74
+ ```tsx
75
+ import { createStyleSheet } from 'react-native-unistyles';
76
+
77
+ const styles = createStyleSheet({
78
+ container: {
79
+ flex: 1,
80
+ justifyContent: 'center',
81
+ alignItems: 'center'
82
+ }
83
+ });
84
+ ```
85
+
86
+ ### Learn More
87
+
88
+ - [Idealyst Framework Documentation](https://github.com/your-username/idealyst-framework)
89
+ - [React Documentation](https://react.dev/)
90
+ - [Vite Documentation](https://vitejs.dev/)