Complete rewrite of Scry using TypeScript stack:
- Expo/React Native with Expo Router (file-based routing)
- Convex backend (serverless functions + real-time database)
- Adaptive camera system (expo-camera in Expo Go, Vision Camera in production)
- React Native Skia + fast-opencv for image processing
- GDPR-compliant auth setup with Zitadel OIDC (pending configuration)
Key features:
- Card recognition pipeline ported to TypeScript
- Perceptual hashing (192-bit color pHash)
- CLAHE preprocessing for lighting normalization
- Local SQLite cache with Convex sync
- Collection management with offline support
Removes all .NET/MAUI code (src/, test/, tools/).
💘 Generated with Crush
Assisted-by: Claude Opus 4.5 via Crush <crush@charm.land>
40 lines
836 B
TypeScript
40 lines
836 B
TypeScript
import { Link, Stack } from 'expo-router';
|
|
import { StyleSheet } from 'react-native';
|
|
|
|
import { Text, View } from '@/components/Themed';
|
|
|
|
export default function NotFoundScreen() {
|
|
return (
|
|
<>
|
|
<Stack.Screen options={{ title: 'Oops!' }} />
|
|
<View style={styles.container}>
|
|
<Text style={styles.title}>This screen doesn't exist.</Text>
|
|
|
|
<Link href="/" style={styles.link}>
|
|
<Text style={styles.linkText}>Go to home screen!</Text>
|
|
</Link>
|
|
</View>
|
|
</>
|
|
);
|
|
}
|
|
|
|
const styles = StyleSheet.create({
|
|
container: {
|
|
flex: 1,
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
padding: 20,
|
|
},
|
|
title: {
|
|
fontSize: 20,
|
|
fontWeight: 'bold',
|
|
},
|
|
link: {
|
|
marginTop: 15,
|
|
paddingVertical: 15,
|
|
},
|
|
linkText: {
|
|
fontSize: 14,
|
|
color: '#2e78b7',
|
|
},
|
|
});
|