EduLab / documentation /README.md
rinogeek's picture
Initial deploy to Hugging Face
062d102

🎓 EduConnect Africa - Plateforme d'Apprentissage Collaborative

Développé par Marino ATOHOUN pour Hypee

Une plateforme moderne connectant étudiants et mentors à travers l'Afrique, avec des outils d'IA, gamification et opportunités académiques.


🏗️ Architecture

Stack Technologique

Frontend:

  • ⚛️ React 19 + TypeScript
  • ⚡ Vite (build tool)
  • 🎨 CSS personnalisé
  • 🔄 React Router v7
  • 📡 Axios pour les appels API

Backend:

  • 🐍 Python 3.12 + Django 4.2
  • 🔌 Django REST Framework
  • 🔐 JWT Authentication (Simple JWT)
  • 🔄 Django Channels (WebSockets)
  • 📊 PostgreSQL / SQLite

🚀 Démarrage Rapide

Prérequis

  • Node.js 18+ (pour le frontend)
  • Python 3.12+ (pour le backend)
  • npm ou yarn

Installation Backend

cd backend

# Créer l'environnement virtuel
python3 -m venv venv
source venv/bin/activate  # Linux/Mac
# ou
venv\Scripts\activate  # Windows

# Installer les dépendances
pip install -r requirements.txt

# Migrations
python manage.py migrate

# Créer un superutilisateur
python manage.py createsuperuser

# Lancer le serveur
python manage.py runserver

Le backend sera accessible sur http://127.0.0.1:8000

Installation Frontend

cd frontend

# Installer les dépendances
npm install

# Lancer le serveur de développement
npm run dev

Le frontend sera accessible sur http://localhost:5173


📁 Structure du Projet

educonnect/
├── backend/
│   ├── apps/
│   │   ├── users/          # Gestion utilisateurs
│   │   ├── mentors/        # Profils mentors
│   │   ├── bookings/       # Réservations sessions
│   │   ├── forum/          # Questions/Réponses
│   │   ├── gamification/   # Badges & Points
│   │   ├── messaging/      # Chat temps réel
│   │   ├── notifications/  # Système notifications
│   │   ├── opportunities/  # Bourses & Stages
│   │   ├── ai_tools/       # Tuteur IA
│   │   ├── core/           # Mixins réutilisables
│   │   └── analytics/      # Statistique
│   ├── educonnect/         # Configuration Django
│   ├── manage.py
│   └── requirements.txt
│
├── frontend/
│   ├── pages/              # Pages React
│   ├── components/         # Composants réutilisables
│   ├── context/            # React Context (Auth, Theme, etc.)
│   ├── services/           # Services API (axios)
│   ├── types.ts            # Types TypeScript
│   ├── constants.ts        # Constantes
│   └── App.tsx             # Point d'entrée
│
├── INTEGRATION_LOG.md      # Journal d'intégration
├── test_api.sh             # Script de test API
└── README.md               # Ce fichier

🔌 APIs & Endpoints

Documentation Interactive

Endpoints Principaux

Module Endpoint Description
Auth /api/auth/ Authentification JWT
Forum /api/forum/ Questions & Réponses
Mentors /api/mentors/ Profils mentors
Bookings /api/bookings/ Réservations
Opportunities /api/opportunities/ Bourses & Stages
Notifications /api/notifications/ Notifications
Gamification /api/gamification/ Badges & Points
AI /api/ai/ Tuteur IA

Consultez frontend/API_GUIDE.md pour des exemples détaillés.


✨ Fonctionnalités

🔐 Authentification

  • ✅ Inscription étudiant/mentor
  • ✅ Connexion JWT
  • ✅ Refresh automatique des tokens
  • ✅ Gestion de profil

💬 Forum Académique

  • ✅ Poser des questions
  • ✅ Répondre aux questions
  • ✅ Système de votes (upvote/downvote)
  • ✅ Tags & catégories
  • ✅ Recherche avancée
  • ✅ Filtres (résolu/non résolu)

👨‍🏫 Mentorat

  • ✅ Recherche de mentors
  • ✅ Profils détaillés
  • ✅ Système de notation & avis
  • ✅ Réservation de sessions
  • ✅ Calendrier de disponibilité

🎯 Opportunités

  • ✅ Bourses d'études
  • ✅ Stages & internships
  • ✅ Concours académiques
  • ✅ Formations

🏆 Gamification

  • ✅ Système de points
  • ✅ Badges de progression
  • ✅ Classements
  • ✅ Récompenses

🤖 Outils IA

  • ✅ Tuteur pédagogique (Gemini/GPT)
  • ✅ Sandbox de code
  • ✅ Atlas interactif géographique
  • ✅ Atelier d'écriture
  • ✅ Calculatrice scientifique

💬 Messagerie

  • ✅ Chat temps réel
  • ✅ WebSockets (Django Channels)
  • ✅ Conversations privées

🔔 Notifications

  • ✅ Temps réel
  • ✅ Notifications push
  • ✅ Historique

🧪 Tests

Test des endpoints backend

./test_api.sh

Scénario de test complet

  1. Créer un compte
curl -X POST http://127.0.0.1:8000/api/auth/register/ \
  -H "Content-Type: application/json" \
  -d '{
    "email": "test@example.com",
    "password": "SecurePass123",
    "password_confirm": "SecurePass123",
    "name": "John Doe",
    "role": "STUDENT"
  }'
  1. Se connecter
curl -X POST http://127.0.0.1:8000/api/auth/login/ \
  -H "Content-Type: application/json" \
  -d '{
    "email": "test@example.com",
    "password": "SecurePass123"
  }'
  1. Récupérer les questions (avec token)
curl -X GET http://127.0.0.1:8000/api/forum/questions/ \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

🛠️ Développement

Variables d'environnement

Créez un fichier .env dans backend/ :

SECRET_KEY=your-secret-key-here
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
CORS_ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3000

# Database (optionnel, SQLite par défaut)
DB_NAME=educonnect_db
DB_USER=postgres
DB_PASSWORD=yourpassword
DB_HOST=localhost
DB_PORT=5432

# APIs IA (optionnel)
GEMINI_API_KEY=your-gemini-key
OPENAI_API_KEY=your-openai-key

# Email (optionnel)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-password

Commandes utiles

# Backend
python manage.py makemigrations    # Créer migrations
python manage.py migrate           # Appliquer migrations
python manage.py createsuperuser   # Créer admin
python manage.py collectstatic     # Collecter fichiers statiques
python manage.py test              # Lancer les tests

# Frontend
npm run dev                        # Dev server
npm run build                      # Build production
npm run preview                    # Preview build

📚 Documentation Complète


🤝 Contribution

Ce projet a été développé par Marino ATOHOUN pour Hypee.

Workflow de contribution

  1. Fork le projet
  2. Créer une branche (git checkout -b feature/AmazingFeature)
  3. Commit les changements (git commit -m 'Add AmazingFeature')
  4. Push vers la branche (git push origin feature/AmazingFeature)
  5. Ouvrir une Pull Request

📝 Licence

© 2025 Hypee - Marino ATOHOUN. Tous droits réservés.


📞 Support

Pour toute question ou support :


Fait avec ❤️ en Afrique pour l'Afrique 🌍