initial commit
This commit is contained in:
@@ -1,3 +1,48 @@
|
||||
# tirages
|
||||
# Tirage Classes — application mobile (Expo / React Native)
|
||||
|
||||
tirage aléatoire avec pondération par l'ancienneté du dernier tirage
|
||||
tirage aléatoire avec pondération par l'ancienneté du dernier tirage
|
||||
|
||||
Application 100% locale et hors-ligne (aucun compte, aucun serveur) : les classes
|
||||
et l'historique des tirages sont stockés sur l'appareil via AsyncStorage.
|
||||
|
||||
> **Prérequis :** Node.js ≥ 20.19 (requis par Expo SDK 54).
|
||||
|
||||
## Installation rapide (test avec Expo Go)
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npx expo install --fix # aligne les versions des dépendances avec le SDK Expo
|
||||
npx expo start
|
||||
```
|
||||
|
||||
Scannez le QR code avec l'app **Expo Go** (iOS ou Android) : l'appli se lance
|
||||
instantanément sur votre téléphone, sans Xcode ni Android Studio.
|
||||
|
||||
## Générer une appli installable (sans Expo Go), pour iOS et Android
|
||||
|
||||
Utilisez EAS Build (gratuit, nécessite un compte Expo) :
|
||||
|
||||
```bash
|
||||
npm install -g eas-cli
|
||||
eas login
|
||||
eas build:configure
|
||||
eas build --profile preview --platform all
|
||||
```
|
||||
|
||||
Vous obtenez un lien de téléchargement direct (.apk pour Android à installer
|
||||
directement, .ipa pour iOS via TestFlight ou un profil ad-hoc).
|
||||
|
||||
## Fonctionnalités
|
||||
|
||||
- Créer / modifier / supprimer des classes (nom, nombre d'élèves, pondération max)
|
||||
- Tirer un élève au sort, pondéré par l'ancienneté du dernier tirage
|
||||
- Bouton **Re-tirer** : annule le dernier tirage et en refait un immédiatement
|
||||
- Historique complet des tirages par classe
|
||||
- Aucune authentification, aucun réseau requis après installation
|
||||
|
||||
## Structure
|
||||
|
||||
- `src/models.js` — classes `Classe` et `Tirage` (POO) : logique du tirage pondéré encapsulée en méthodes (`classe.tirer()`, `classe.reTirer()`, `classe.calculerPoids()`), sérialisation JSON (`toJSON()`/`fromJSON()`). Testable indépendamment de React Native.
|
||||
- `src/storage.js` — persistance locale (AsyncStorage), manipule des instances `Classe`
|
||||
- `src/screens/` — écrans (liste, formulaire, détail/tirage)
|
||||
- `App.js` — navigation
|
||||
|
||||
Reference in New Issue
Block a user