Développement¶
Prérequis¶
- macOS avec Xcode 26.5+ (SDK iOS 26.5 / macOS 26), Swift 6.3
- Cibles de déploiement : iOS/iPadOS 18.0, macOS 15.0
Cloner & ouvrir¶
git clone git@git.cythin.eu:Kourser/skingomz-app.git && cd skingomz-app
open Skingomz.xcodeproj
Le package local Packages/Core est référencé par le projet
(XCLocalSwiftPackageReference) ; GRDB est résolu automatiquement (épinglé à 7.11.1
dans Package.resolved).
Tests¶
La logique métier est couverte par des tests Swift Testing, exécutables sans IDE :
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
swift test --package-path Packages/Core
Le réseau est abstrait derrière des protocoles (FeedDataLoading, SearchDataLoading,
SyncHTTPClient) — les tests injectent des stubs, donc aucun appel réseau réel.
Build (ligne de commande)¶
# iOS simulateur
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
xcodebuild -project Skingomz.xcodeproj -scheme Skingomz \
-destination 'generic/platform=iOS Simulator' build
# macOS
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
xcodebuild -project Skingomz.xcodeproj -scheme Skingomz \
-destination 'platform=macOS' build
xcode-selectpeut pointer sur les Command Line Tools ;DEVELOPER_DIRévite unsudo xcode-select.
Conventions¶
- Clean-room : ne jamais copier/traduire du code copylefté (AntennaPod et autres). Implémentez depuis les specs publiques.
- Pas de dépendance non épinglée : toute dépendance tierce a une version explicite et une licence vérifiée.
- Le métier ne dépend pas de l'UI : gardez
Packages/Coresans import SwiftUI/UIKit. - Concurrence : le package et l'app sont en mode langage Swift 5 ; l'app et les
contrôleurs sont
@MainActor. - Modificateurs iOS-only : passez par les helpers de
PlatformModifiers.swiftpour rester compatibles macOS.
Structure du dépôt¶
Skingomz.xcodeproj projet Xcode (cible native multiplateforme)
Skingomz/ sources de l'app SwiftUI
Packages/Core/ logique métier (6 modules) + tests
docs/ documentation / wiki
.github/ templates d'issues/PR + CI