feat: add iOS support and harden receipt scanning

This commit is contained in:
Timo
2026-08-20 23:48:26 +02:00
parent f5e06c32b0
commit cf1b799e1b
107 changed files with 11755 additions and 122 deletions

82
app/ios/project.yml Normal file
View File

@@ -0,0 +1,82 @@
\
# XcodeGen spec — generates ScanReceipts.xcodeproj on macOS.
#
# Why XcodeGen instead of a hand-committed .xcodeproj: the project file is a
# fragile, Xcode-internal plist format tied to UUIDs Xcode itself assigns.
# Generating it from this YAML on the machine that actually builds keeps the
# real project file out of git entirely (see .gitignore) and avoids merge
# conflicts in a format nobody can diff sensibly.
#
# Setup (macOS, once): `brew install xcodegen`
# Generate the project: `cd app/ios && xcodegen generate`
# Then open ScanReceipts.xcodeproj in Xcode.
name: ScanReceipts
options:
bundleIdPrefix: app.scan-receipts
deploymentTarget:
iOS: "17.0"
createIntermediateGroups: true
settings:
base:
SWIFT_VERSION: "5.0"
MARKETING_VERSION: "1.0.0"
CURRENT_PROJECT_VERSION: "1"
IPHONEOS_DEPLOYMENT_TARGET: "17.0"
TARGETED_DEVICE_FAMILY: "1" # iPhone only for v1; add "1,2" once iPad layouts exist.
# Set your own Apple Developer Team ID here (Xcode > Signing & Capabilities
# also works and overrides this locally without touching the checked-in spec).
DEVELOPMENT_TEAM: ""
CODE_SIGN_STYLE: Automatic
targets:
ScanReceipts:
type: application
platform: iOS
sources:
- path: ScanReceipts
excludes:
- "**/.DS_Store"
info:
path: ScanReceipts/Resources/Info.plist
properties:
CFBundleDisplayName: ScanReceipts
UILaunchScreen: {}
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
NSCameraUsageDescription: "ScanReceipts braucht Kamerazugriff, um Belege zu fotografieren und zu digitalisieren."
NSPhotoLibraryUsageDescription: "ScanReceipts braucht Zugriff auf deine Fotos, um bestehende Belegfotos zu importieren."
NSFaceIDUsageDescription: "ScanReceipts kann Face ID nutzen, um die App beim Öffnen zu schützen."
ITSAppUsesNonExemptEncryption: false
# Same three families the web app loads from Google Fonts (see
# src/styles/globals.css) — self-hosted here as the actual OFL font
# files instead of a CDN, since a native app doesn't have a stylesheet
# to load them from. See ScanReceipts/Design/ZenithTypography.swift.
UIAppFonts:
- HankenGrotesk-Variable.ttf
- Inter-Variable.ttf
- JetBrainsMono-Variable.ttf
entitlements:
path: ScanReceipts/Resources/ScanReceipts.entitlements
properties:
com.apple.developer.applesignin:
- Default
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: app.scan-receipts.ios
PRODUCT_NAME: ScanReceipts
dependencies: []
schemes:
ScanReceipts:
build:
targets:
ScanReceipts: all
run:
config: Debug
archive:
config: Release
test:
config: Debug