This commit is contained in:
2026-04-18 23:11:35 +02:00
commit f7cfd2a86e
196 changed files with 35538 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
// Authenticated app group layout.
// Gate on session: if no session, redirect to `/`.
// Add tab bar / drawer nav here once we have more than one screen.
import { Stack } from 'expo-router';
export default function AppLayout() {
return <Stack screenOptions={{ headerShown: true }} />;
}
+18
View File
@@ -0,0 +1,18 @@
// Chats list placeholder.
// Milestone 1 TODO: render list of conversations, decrypt last-message preview,
// navigate to a conversation screen on tap.
import { StyleSheet, Text, View } from 'react-native';
export default function Chats() {
return (
<View style={styles.container}>
<Text style={styles.text}>Chats placeholder</Text>
</View>
);
}
const styles = StyleSheet.create({
container: { flex: 1, alignItems: 'center', justifyContent: 'center', backgroundColor: '#0b0b0f' },
text: { color: '#fff' },
});
+18
View File
@@ -0,0 +1,18 @@
// Root layout for Expo Router.
// Wraps every screen. Place global providers here (Theme, Supabase/Auth context,
// SafeAreaProvider, GestureHandlerRootView, etc.) once they exist.
import { Stack } from 'expo-router';
import { StatusBar } from 'expo-status-bar';
export default function RootLayout() {
return (
<>
<StatusBar style="auto" />
<Stack screenOptions={{ headerShown: false }}>
<Stack.Screen name="index" />
<Stack.Screen name="(app)" />
</Stack>
</>
);
}
+29
View File
@@ -0,0 +1,29 @@
// Landing / Login screen.
//
// Milestone 1 TODO:
// - Show app logo + "Enter your email" field.
// - On submit, call shared/auth requestMagicLink(email).
// - Handle deep link return in app/_layout.tsx (or a dedicated auth callback route).
import { StyleSheet, Text, View } from 'react-native';
export default function Landing() {
return (
<View style={styles.container}>
<Text style={styles.title}>ChatApp</Text>
<Text style={styles.subtitle}>Login placeholder magic link flow goes here.</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
backgroundColor: '#0b0b0f',
padding: 24,
},
title: { color: '#fff', fontSize: 28, fontWeight: '600' },
subtitle: { color: '#9ca3af', marginTop: 8, textAlign: 'center' },
});