Une application mobile de suivi de progression pour vos pompes quotidiennes. Augmentez votre objectif chaque jour et suivez vos progrès !
One Day One Pushup More est une application mobile conçue pour vous aider à développer une habitude d'exercice progressive. L'idée est simple : chaque jour, vous devez faire au moins une pompe de plus que la veille. L'application vous permet de :
- ✅ Suivre vos performances quotidiennes
- 🎯 Visualiser vos objectifs progressifs
- 🏆 Débloquer des achievements
- 📊 Analyser vos statistiques
- 🌓 Profiter d'un thème clair/sombre fluide
- Expo - Framework React Native
- Expo Router - Routing basé sur les fichiers
- Tamagui - UI Kit avec animations natives
- Clerk - Authentification complète
- Firebase - Base de données et stockage cloud
- AsyncStorage - Stockage local persistant
- TypeScript - Typage statique
# Cloner le repository
git clone https://github.com/Aliskaa/one_day_one_pushup_more.git
cd one_day_one_pushup_more
# Installer les dépendances
yarn installCréez un fichier .env à la racine du projet :
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_key
EXPO_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
EXPO_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
EXPO_PUBLIC_FIREBASE_APP_ID=your_app_id# Démarrer Expo
yarn start
# Lancer sur Android
yarn android
# Lancer sur iOS
yarn ios
# Lancer sur le web
yarn web# Build Android (preview)
npx eas build --profile preview --platform android
# Build iOS (preview)
npx eas build --profile preview --platform ios
# Build web optimisé
yarn build:web:optimizedone_day_one_pushup_more/
├── app/ # Routes (Expo Router)
│ ├── (tabs)/ # Navigation par onglets
│ │ ├── index.tsx # Dashboard principal
│ │ ├── days.tsx # Liste des jours
│ │ ├── achievements.tsx # Achievements
│ │ └── settings.tsx # Paramètres
│ ├── _layout.tsx # Layout racine
│ └── sign-in.tsx # Page de connexion
├── components/ # Composants réutilisables
│ ├── DayRow.tsx # Composant d'une journée
│ ├── ThemeToggle.tsx # Toggle du thème
│ ├── AuthGuard.tsx # Protection des routes
│ └── ui/ # Composants UI de base
├── contexts/ # Contextes React
│ ├── ThemeContext.tsx # Gestion du thème
│ └── ModalContext.tsx # Gestion des modales
├── hooks/ # Hooks personnalisés
│ ├── useProgressData.ts # Gestion des données
│ └── useAchievements.ts # Système d'achievements
├── utils/ # Utilitaires
│ ├── firebase.ts # Configuration Firebase
│ ├── firebaseStorage.ts # Stockage Firebase
│ └── cache.ts # Cache Clerk
├── constants/ # Constantes
│ ├── achievements.ts # Définitions des achievements
│ └── theme.ts # Thème de l'app
├── types/ # Types TypeScript
└── tamagui.config.ts # Configuration Tamagui
L'application propose un thème clair/sombre avec :
- Transition fluide entre les thèmes
- Sauvegarde automatique de la préférence
- Support du thème système par défaut
-
Affichage calendaire avec code couleur :
- 🟢 Vert : Objectif validé
- 🟡 Jaune : En cours
- 🔵 Bleu : Aujourd'hui
- 🔴 Rouge : Jour manqué (non éditable)
- ⚪ Gris : Jour futur (verrouillé)
-
Édition rapide : Input numérique pour saisir vos performances
-
Barre de progression : Visualisation de votre avancement
Débloquez des récompenses basées sur :
- Nombre de jours consécutifs
- Total de pompes effectuées
- Milestones spécifiques
- Sign-in avec Google via Clerk
- Protection des routes
- Gestion automatique des sessions
yarn start # Démarrer Expo
yarn android # Lancer sur Android
yarn ios # Lancer sur iOS
yarn web # Lancer sur web
yarn build:web # Build web
yarn test # Lancer les tests
yarn check:tamagui # Vérifier les versions Tamagui
yarn upgrade:tamagui # Mettre à jour TamaguiSi vous rencontrez l'erreur "Can't find Tamagui configuration" :
npx @tamagui/cli checkAssurez-vous que toutes les dépendances @tamagui/* sont à la même version.
yarn start -c # Clear cacheVérifiez votre configuration EAS dans eas.json et assurez-vous que vos variables d'environnement sont correctement définies.
- Le projet utilise Expo Router pour la navigation basée sur les fichiers
- Les animations sont gérées par Tamagui avec des springs React Native
- Le thème est géré via un Context global avec persistance AsyncStorage
- Les données utilisateur sont stockées dans Firebase Firestore
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
Ce projet est sous licence MIT.
Kevin - Portfolio Project
Note: Ce projet fait partie d'un monorepo. Certaines dépendances (react, react-dom, react-native-web) ont été retirées et la configuration Metro a été adaptée en conséquence.