Application mobile de mise en relation pour les activités sportives, permettant aux utilisateurs de créer, rejoindre et gérer des sessions sportives.
-
Sessions Sportives
- Création de sessions sportives
- Recherche de sessions par proximité
- Gestion des équipes et des participants
- Statuts des sessions (À venir, En cours, Terminé)
-
Gestion des Équipes
- Création d'équipes
- Rejoindre/Quitter une équipe
- Affichage des membres
-
Chat en Temps Réel
- Discussion dans le lobby
- Chat par équipe
- Notifications
-
Frontend
- React Native
- TypeScript
- Redux Toolkit
- React Navigation
- Expo
-
Backend
- Node.js
- Express
- Prisma
- PostgreSQL
-
React Native
- Framework pour créer des applications mobiles natives
- Permet d'écrire une seule fois le code pour iOS et Android
- Utilise des composants natifs pour de meilleures performances
-
TypeScript
- Version de JavaScript avec des types
- Aide à éviter les erreurs avant l'exécution
- Améliore l'auto-complétion dans l'éditeur
-
Redux Toolkit
- Gère l'état global de l'application
- Stocke les données des sessions, utilisateurs et chats
- Synchronise les données entre les écrans
-
React Navigation
- Gère la navigation entre les écrans
- Maintient l'historique de navigation
- Permet les transitions fluides
-
Expo
- Simplifie le développement React Native
- Fournit des outils de développement
- Permet de tester facilement sur mobile
-
Node.js
- Environnement d'exécution JavaScript
- Gère le serveur de l'application
- Traite les requêtes des utilisateurs
-
Express
- Framework web pour Node.js
- Gère les routes API
- Traite les requêtes HTTP
-
Prisma
- ORM (Object-Relational Mapping)
- Gère la base de données de façon type-safe
- Simplifie les requêtes à la base de données
-
PostgreSQL
- Base de données relationnelle
- Stocke toutes les données de l'application
- Gère les relations entre les données
-
Création d'une Session
- Frontend : Formulaire React Native
- Redux : Stocke la nouvelle session
- Express : Reçoit la requête
- Prisma : Sauvegarde dans PostgreSQL
-
Rejoindre une Équipe
- React Navigation : Affiche l'écran de lobby
- Redux : Met à jour l'état
- Express : Traite la demande
- Prisma : Met à jour les relations
-
Chat en Temps Réel
- React Native : Interface utilisateur
- Redux : Gère les messages
- Node.js : Traite les messages
- PostgreSQL : Stocke l'historique
- Node.js (v18+)
- PostgreSQL
- npm ou yarn
- Expo CLI
- Cloner le repository
git clone https://github.com/moussahe/SportlyForReal.git
cd SportlyForReal- Installer les dépendances
npm install- Configurer les variables d'environnement
cp .env.example .envModifier le fichier .env avec vos configurations :
DATABASE_URL="postgresql://user:password@localhost:5432/sportly_db"
- Initialiser la base de données
npx prisma migrate dev
npx prisma db seed- Démarrer le serveur backend
npm run server- Démarrer l'application React Native
npm run startLe projet utilise un Makefile pour simplifier les opérations courantes. Voici les principales commandes disponibles :
make install: Installe toutes les dépendancesmake start: Démarre l'application mobile et le serveurmake start-web: Démarre l'application en mode webmake stop: Arrête tous les processusmake clean: Nettoie le projet (node_modules, builds, etc.)
make db-setup: Configure la base de données (migration + seed)make db-migrate: Applique les migrations Prismamake db-reset: Réinitialise la base de donnéesmake db-seed: Génère les données de testmake db-studio: Ouvre Prisma Studio
make dev: Lance l'application en mode développementmake dev-web: Installation complète + démarrage webmake lint: Vérifie le code avec ESLintmake test: Lance les tests
make ports: Liste les ports utilisésmake ports-kill: Force la fermeture des ports utilisésmake help: Affiche l'aide avec toutes les commandes disponibles
Pour voir toutes les commandes disponibles :
make help- Cliquer sur le bouton "+" dans l'écran d'accueil
- Remplir les informations de la session :
- Sport
- Date et heure
- Lieu
- Nombre de joueurs
- Niveau requis
- Parcourir les sessions disponibles sur l'écran d'accueil
- Cliquer sur une session pour voir les détails
- Rejoindre une équipe disponible
- Pour rejoindre : Cliquer sur "Rejoindre l'équipe"
- Pour quitter : Cliquer sur "Quitter l'équipe"
- Les équipes sont automatiquement équilibrées
Les contributions sont les bienvenues ! Pour contribuer :
- Forker le projet
- Créer une branche pour votre fonctionnalité
git checkout -b feat/nom-de-la-fonctionnalite- Commiter vos changements
git commit -m "feat: description de la fonctionnalité"- Pousser vers la branche
git push origin feat/nom-de-la-fonctionnalite- Ouvrir une Pull Request
feat:Nouvelle fonctionnalitéfix:Correction de bugdocs:Documentationstyle:Mise en forme du coderefactor:Refactorisation du codetest:Ajout ou modification de testschore:Tâches diverses
sportly/
├── src/
│ ├── components/ # Composants réutilisables
│ ├── screens/ # Écrans de l'application
│ ├── navigation/ # Configuration de la navigation
│ ├── store/ # État global (Redux)
│ ├── utils/ # Fonctions utilitaires
│ └── types/ # Types TypeScript
├── backend/
│ ├── controllers/ # Contrôleurs API
│ ├── routes/ # Routes API
│ └── middleware/ # Middleware Express
└── prisma/
├── schema.prisma # Schéma de base de données
└── seed.ts # Données de test
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Pour toute question ou suggestion, n'hésitez pas à :
- Ouvrir une issue
- Me contacter par email : moussa.hechaichi@gmail.com