chore: wipe RN/Expo stack, prepare for Kotlin/Compose project (batch 0.1.1)
This commit is contained in:
parent
01751c6f66
commit
92c82e5fd4
|
|
@ -1,52 +1,36 @@
|
||||||
# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files
|
*.iml
|
||||||
|
.gradle
|
||||||
# dependencies
|
/local.properties
|
||||||
node_modules/
|
/.idea
|
||||||
|
|
||||||
# Expo
|
|
||||||
.expo/
|
|
||||||
dist/
|
|
||||||
web-build/
|
|
||||||
expo-env.d.ts
|
|
||||||
|
|
||||||
# Native
|
|
||||||
.kotlin/
|
|
||||||
*.orig.*
|
|
||||||
*.jks
|
|
||||||
*.p8
|
|
||||||
*.p12
|
|
||||||
*.key
|
|
||||||
*.mobileprovision
|
|
||||||
|
|
||||||
# Metro
|
|
||||||
.metro-health-check*
|
|
||||||
|
|
||||||
# debug
|
|
||||||
npm-debug.*
|
|
||||||
yarn-debug.*
|
|
||||||
yarn-error.*
|
|
||||||
|
|
||||||
# macOS
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
*.pem
|
/build
|
||||||
|
/captures
|
||||||
|
.externalNativeBuild
|
||||||
|
.cxx
|
||||||
|
local.properties
|
||||||
|
|
||||||
# local env files
|
# Private project docs (agent-only, never commit)
|
||||||
.env*.local
|
|
||||||
|
|
||||||
# typescript
|
|
||||||
*.tsbuildinfo
|
|
||||||
|
|
||||||
# generated native folders
|
|
||||||
/ios
|
|
||||||
/android
|
|
||||||
|
|
||||||
# Private project/agent docs — never commit
|
|
||||||
DEVELOPMENT_LOG.md
|
|
||||||
PROJECT.md
|
|
||||||
STRUCTURE.md
|
|
||||||
FUTURE.md
|
FUTURE.md
|
||||||
HISTORY.md
|
HISTORY.md
|
||||||
|
PROJECT.md
|
||||||
|
STRUCTURE.md
|
||||||
|
project-requirements.md
|
||||||
|
DEVELOPMENT_LOG.md
|
||||||
BUILD_SUMMARY.md
|
BUILD_SUMMARY.md
|
||||||
SCRIPTS.md
|
SCRIPTS.md
|
||||||
project-requirements.md
|
|
||||||
.learnings/
|
.learnings/
|
||||||
|
|
||||||
|
# Build artifacts
|
||||||
|
*.apk
|
||||||
|
*.aab
|
||||||
|
*.ap_
|
||||||
|
*.dex
|
||||||
|
*.class
|
||||||
|
bin/
|
||||||
|
gen/
|
||||||
|
out/
|
||||||
|
|
||||||
|
# Environment secrets
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
*.env
|
||||||
|
|
|
||||||
20
App.tsx
20
App.tsx
|
|
@ -1,20 +0,0 @@
|
||||||
import { StatusBar } from 'expo-status-bar';
|
|
||||||
import { StyleSheet, Text, View } from 'react-native';
|
|
||||||
|
|
||||||
export default function App() {
|
|
||||||
return (
|
|
||||||
<View style={styles.container}>
|
|
||||||
<Text>Open up App.tsx to start working on your app!</Text>
|
|
||||||
<StatusBar style="auto" />
|
|
||||||
</View>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
|
||||||
container: {
|
|
||||||
flex: 1,
|
|
||||||
backgroundColor: '#fff',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
33
app.json
33
app.json
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"expo": {
|
|
||||||
"name": "relationship-app",
|
|
||||||
"slug": "relationship-app",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"orientation": "portrait",
|
|
||||||
"icon": "./assets/icon.png",
|
|
||||||
"userInterfaceStyle": "light",
|
|
||||||
"newArchEnabled": true,
|
|
||||||
"splash": {
|
|
||||||
"image": "./assets/splash-icon.png",
|
|
||||||
"resizeMode": "contain",
|
|
||||||
"backgroundColor": "#ffffff"
|
|
||||||
},
|
|
||||||
"ios": {
|
|
||||||
"supportsTablet": true
|
|
||||||
},
|
|
||||||
"android": {
|
|
||||||
"adaptiveIcon": {
|
|
||||||
"foregroundImage": "./assets/adaptive-icon.png",
|
|
||||||
"backgroundColor": "#ffffff"
|
|
||||||
},
|
|
||||||
"edgeToEdgeEnabled": true,
|
|
||||||
"predictiveBackGestureEnabled": false
|
|
||||||
},
|
|
||||||
"web": {
|
|
||||||
"favicon": "./assets/favicon.png"
|
|
||||||
},
|
|
||||||
"plugins": [
|
|
||||||
"expo-router"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
import { Tabs } from 'expo-router';
|
|
||||||
import { Home, MessageCircle, Star, Settings } from 'lucide-react-native';
|
|
||||||
|
|
||||||
export default function TabsLayout() {
|
|
||||||
return (
|
|
||||||
<Tabs>
|
|
||||||
<Tabs.Tab
|
|
||||||
name="index"
|
|
||||||
options={{
|
|
||||||
title: 'Home',
|
|
||||||
tabBarIcon: ({ color }) => <Home color={color} size={24} />,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<Tabs.Tab
|
|
||||||
name="questions"
|
|
||||||
options={{
|
|
||||||
title: 'Questions',
|
|
||||||
tabBarIcon: ({ color }) => <MessageCircle color={color} size={24} />,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<Tabs.Tab
|
|
||||||
name="milestones"
|
|
||||||
options={{
|
|
||||||
title: 'Milestones',
|
|
||||||
tabBarIcon: ({ color }) => <Star color={color} size={24} />,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<Tabs.Tab
|
|
||||||
name="settings"
|
|
||||||
options={{
|
|
||||||
title: 'Settings',
|
|
||||||
tabBarIcon: ({ color }) => <Settings color={color} size={24} />,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</Tabs>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
import { View, Text } from 'react-native';
|
|
||||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
||||||
|
|
||||||
export default function HomeScreen() {
|
|
||||||
const insets = useSafeAreaInsets();
|
|
||||||
return (
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
flex: 1,
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
backgroundColor: '#fff',
|
|
||||||
paddingTop: insets.top,
|
|
||||||
paddingBottom: insets.bottom,
|
|
||||||
paddingLeft: insets.left,
|
|
||||||
paddingRight: insets.right,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Text className="text-2xl font-bold text-gray-900">Home</Text>
|
|
||||||
</View>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
import { View, Text } from 'react-native';
|
|
||||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
||||||
|
|
||||||
export default function MilestonesScreen() {
|
|
||||||
const insets = useSafeAreaInsets();
|
|
||||||
return (
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
flex: 1,
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
backgroundColor: '#fff',
|
|
||||||
paddingTop: insets.top,
|
|
||||||
paddingBottom: insets.bottom,
|
|
||||||
paddingLeft: insets.left,
|
|
||||||
paddingRight: insets.right,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Text className="text-2xl font-bold text-gray-900">Milestones</Text>
|
|
||||||
</View>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
import { View, Text } from 'react-native';
|
|
||||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
||||||
|
|
||||||
export default function QuestionsScreen() {
|
|
||||||
const insets = useSafeAreaInsets();
|
|
||||||
return (
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
flex: 1,
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
backgroundColor: '#fff',
|
|
||||||
paddingTop: insets.top,
|
|
||||||
paddingBottom: insets.bottom,
|
|
||||||
paddingLeft: insets.left,
|
|
||||||
paddingRight: insets.right,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Text className="text-2xl font-bold text-gray-900">Questions</Text>
|
|
||||||
</View>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
import { View, Text } from 'react-native';
|
|
||||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
||||||
|
|
||||||
export default function SettingsScreen() {
|
|
||||||
const insets = useSafeAreaInsets();
|
|
||||||
return (
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
flex: 1,
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
backgroundColor: '#fff',
|
|
||||||
paddingTop: insets.top,
|
|
||||||
paddingBottom: insets.bottom,
|
|
||||||
paddingLeft: insets.left,
|
|
||||||
paddingRight: insets.right,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Text className="text-2xl font-bold text-gray-900">Settings</Text>
|
|
||||||
</View>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
# App placeholder
|
|
||||||
22
app/[id].tsx
22
app/[id].tsx
|
|
@ -1,22 +0,0 @@
|
||||||
import { View, Text } from 'react-native';
|
|
||||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
||||||
|
|
||||||
export default function DetailScreen() {
|
|
||||||
const insets = useSafeAreaInsets();
|
|
||||||
return (
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
flex: 1,
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
backgroundColor: '#fff',
|
|
||||||
paddingTop: insets.top,
|
|
||||||
paddingBottom: insets.bottom,
|
|
||||||
paddingLeft: insets.left,
|
|
||||||
paddingRight: insets.right,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Text className="text-2xl font-bold text-gray-900">Detail</Text>
|
|
||||||
</View>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
import { Stack } from 'expo-router';
|
|
||||||
|
|
||||||
export default function RootLayout() {
|
|
||||||
return (
|
|
||||||
<Stack>
|
|
||||||
<Stack.Screen name="(tabs)" />
|
|
||||||
<Stack.Screen name="index" options={{ headerShown: false }} />
|
|
||||||
</Stack>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
# Assets placeholder
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.4 KiB |
BIN
assets/icon.png
BIN
assets/icon.png
Binary file not shown.
|
Before Width: | Height: | Size: 22 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
|
|
@ -1 +0,0 @@
|
||||||
# Components placeholder
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
# Constants placeholder
|
|
||||||
8
index.ts
8
index.ts
|
|
@ -1,8 +0,0 @@
|
||||||
import { registerRootComponent } from 'expo';
|
|
||||||
|
|
||||||
import App from './App';
|
|
||||||
|
|
||||||
// registerRootComponent calls AppRegistry.registerComponent('main', () => App);
|
|
||||||
// It also ensures that whether you load the app in Expo Go or in a native build,
|
|
||||||
// the environment is set up appropriately
|
|
||||||
registerRootComponent(App);
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
# Utilities placeholder
|
|
||||||
File diff suppressed because it is too large
Load Diff
36
package.json
36
package.json
|
|
@ -1,36 +0,0 @@
|
||||||
{
|
|
||||||
"name": "relationship-app",
|
|
||||||
"version": "1.0.2",
|
|
||||||
"main": "expo-router/entry",
|
|
||||||
"scripts": {
|
|
||||||
"start": "expo start",
|
|
||||||
"android": "expo start --android",
|
|
||||||
"ios": "expo start --ios",
|
|
||||||
"web": "expo start --web"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"expo": "~54.0.33",
|
|
||||||
"expo-constants": "~18.0.13",
|
|
||||||
"expo-linear-gradient": "~15.0.8",
|
|
||||||
"expo-linking": "~8.0.12",
|
|
||||||
"expo-router": "~6.0.23",
|
|
||||||
"expo-status-bar": "~3.0.9",
|
|
||||||
"lucide-react-native": "^1.14.0",
|
|
||||||
"react": "19.1.0",
|
|
||||||
"react-native": "0.81.5",
|
|
||||||
"react-native-safe-area-context": "~5.6.0",
|
|
||||||
"react-native-screens": "~4.16.0",
|
|
||||||
"react-native-svg": "15.12.1"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/react": "~19.1.0",
|
|
||||||
"@typescript-eslint/eslint-plugin": "^8.59.3",
|
|
||||||
"@typescript-eslint/parser": "^8.59.3",
|
|
||||||
"eslint": "^10.3.0",
|
|
||||||
"eslint-config-prettier": "^10.1.8",
|
|
||||||
"eslint-plugin-prettier": "^5.5.5",
|
|
||||||
"prettier": "^3.8.3",
|
|
||||||
"typescript": "~5.9.2"
|
|
||||||
},
|
|
||||||
"private": true
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"extends": "expo/tsconfig.base",
|
|
||||||
"compilerOptions": {
|
|
||||||
"strict": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue