chore: wipe RN/Expo stack, prepare for Kotlin/Compose project (batch 0.1.1)

This commit is contained in:
null 2026-06-15 18:32:27 -05:00
parent 01751c6f66
commit 92c82e5fd4
23 changed files with 29 additions and 11504 deletions

74
.gitignore vendored
View File

@ -1,52 +1,36 @@
# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files
# dependencies
node_modules/
# 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
*.iml
.gradle
/local.properties
/.idea
.DS_Store
*.pem
/build
/captures
.externalNativeBuild
.cxx
local.properties
# local env files
.env*.local
# typescript
*.tsbuildinfo
# generated native folders
/ios
/android
# Private project/agent docs — never commit
DEVELOPMENT_LOG.md
PROJECT.md
STRUCTURE.md
# Private project docs (agent-only, never commit)
FUTURE.md
HISTORY.md
PROJECT.md
STRUCTURE.md
project-requirements.md
DEVELOPMENT_LOG.md
BUILD_SUMMARY.md
SCRIPTS.md
project-requirements.md
.learnings/
# Build artifacts
*.apk
*.aab
*.ap_
*.dex
*.class
bin/
gen/
out/
# Environment secrets
.env
.env.local
*.env

20
App.tsx
View File

@ -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',
},
});

View File

@ -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"
]
}
}

View File

@ -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>
);
}

View File

@ -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>
);
}

View File

@ -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>
);
}

View File

@ -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>
);
}

View File

@ -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>
);
}

View File

@ -1 +0,0 @@
# App placeholder

View File

@ -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>
);
}

View File

@ -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>
);
}

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1 +0,0 @@
# Components placeholder

View File

@ -1 +0,0 @@
# Constants placeholder

View File

@ -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);

View File

@ -1 +0,0 @@
# Utilities placeholder

11194
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -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
}

View File

@ -1,6 +0,0 @@
{
"extends": "expo/tsconfig.base",
"compilerOptions": {
"strict": true
}
}