À propos du projet

Braindance est une application multiplateforme de suivi de jeux construite avec Kotlin Multiplatform et Compose Multiplatform, partageant l'interface et la logique entre les clients Android, iOS et navigateur (Wasm). Le backend est une API Ktor en Kotlin/JVM qui relaie les données de la base IGDB et du service de giveaways GamerPower. Les fonctionnalités principales incluent la recherche et l'exploration des détails des jeux, l'ajout de jeux aux favoris, le suivi des dates de sortie via un calendrier intégré, la découverte de giveaways de jeux et la lecture des dernières actualités. Toutes les plateformes clientes appellent le backend pour les données IGDB et GamerPower. L'organisation du projet sépare les responsabilités : androidApp (hôte Android), shared (interface Compose, logique applicative, réseau pour toutes les plateformes), iosApp (hôte Xcode/SwiftUI), webApp (hôte navigateur Compose Multiplatform) et backend (API Ktor). Le backend est versionné indépendamment des applications mobiles ; la version mobile actuelle est 0.3.1 et le backend est en 0.3.2. L'authentification IGDB utilise le client ID et le client secret d'une application développeur Twitch (pas de clé API distincte) ; GamerPower ne nécessite aucune clé API. Les identifiants Twitch sont stockés dans le coffre de secrets d'exécution du backend et ne sont jamais inclus dans les builds clients. L'URL du backend est intégrée aux builds clients mais n'est pas considérée comme un secret. Déploiement : GitHub Actions teste et empaquette le backend, publiant une image de conteneur sur GHCR depuis master. Un guide de déploiement Cloud Run est fourni pour la configuration d'exécution et le contrôle des coûts. Le client web est publié sur une branche web-app avec des fichiers statiques, prenant en charge les domaines personnalisés via GitHub Pages. Le projet peut être compilé sans URL de backend, mais un backend accessible avec des identifiants Twitch est requis pour les flux alimentés par IGDB. Les prérequis incluent JDK 21, Android SDK API 37 pour Android, macOS avec Xcode pour les builds iOS, et un hôte de conteneurs pour le backend. Le projet est sous licence GPL-3.0 et est activement en développement.