Migrate from .NET MAUI to Expo + Convex
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>
This commit is contained in:
parent
56499d5af9
commit
83ab4df537
138 changed files with 19136 additions and 7681 deletions
67
lib/recognition/index.ts
Normal file
67
lib/recognition/index.ts
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
/**
|
||||
* Card recognition module exports.
|
||||
*/
|
||||
|
||||
// Recognition service
|
||||
export {
|
||||
recognizeCard,
|
||||
computeImageHash,
|
||||
calculateConfidence,
|
||||
createRecognitionService,
|
||||
type RecognitionOptions,
|
||||
type RecognitionResult,
|
||||
type CardMatch,
|
||||
type CardHashEntry,
|
||||
} from "./recognitionService";
|
||||
|
||||
// Card detection
|
||||
export {
|
||||
detectCard,
|
||||
type CardDetectionResult,
|
||||
} from "./cardDetector";
|
||||
|
||||
// Perspective correction
|
||||
export {
|
||||
warpPerspective,
|
||||
OUTPUT_WIDTH,
|
||||
OUTPUT_HEIGHT,
|
||||
} from "./perspectiveCorrection";
|
||||
|
||||
// CLAHE preprocessing
|
||||
export { applyCLAHE } from "./clahe";
|
||||
|
||||
// Perceptual hashing
|
||||
export {
|
||||
computeColorHash,
|
||||
hammingDistance,
|
||||
hashToHex,
|
||||
hexToHash,
|
||||
HASH_VERSION,
|
||||
MATCH_THRESHOLD,
|
||||
HASH_BITS,
|
||||
} from "./perceptualHash";
|
||||
|
||||
// Image utilities
|
||||
export {
|
||||
resizeImage,
|
||||
rotateImage,
|
||||
toGrayscale,
|
||||
grayscaleToRgba,
|
||||
gaussianBlur,
|
||||
distance,
|
||||
type Point,
|
||||
type Size,
|
||||
} from "./imageUtils";
|
||||
|
||||
// Image loading
|
||||
export {
|
||||
loadImageForRecognition,
|
||||
loadImageAsBase64,
|
||||
} from "./imageLoader";
|
||||
|
||||
// Skia image decoding
|
||||
export {
|
||||
decodeImageBase64,
|
||||
decodeImageFromUri,
|
||||
useDecodedImage,
|
||||
} from "./skiaDecoder";
|
||||
Loading…
Add table
Add a link
Reference in a new issue