+
Skip to content

Chermann-KING/oypunu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌍 O'Ypunu - Dictionnaire Social Multilingue

Angular NestJS TypeScript MongoDB TailwindCSS Socket.io

Une plateforme sociale full-stack de dictionnaire multilingue qui révolutionne l'apprentissage des langues en combinant la richesse d'un dictionnaire collaboratif avec les fonctionnalités d'un réseau social moderne.

📋 Table des Matières

✨ Aperçu du Projet

O'Ypunu est une application web moderne full-stack qui transforme l'expérience d'apprentissage linguistique en combinant :

  • 📚 Dictionnaire collaboratif avec définitions riches et exemples
  • 🌐 Communautés linguistiques pour échanger et apprendre ensemble
  • 💬 Messagerie temps réel pour partager des mots et discuter
  • 👥 Réseau social pour connecter les passionnés de langues
  • 🎯 Système de favoris pour organiser son apprentissage
  • 🔊 Prononciations audio pour perfectionner l'accent

🎯 Mission

Démocratiser l'apprentissage linguistique en créant une communauté mondiale où chaque utilisateur contribue à enrichir la connaissance collective des langues.

🚀 Fonctionnalités Principales

📖 Dictionnaire Intelligent

  • Recherche avancée avec filtres par langue, catégorie, partie du discours
  • Contributions communautaires avec système de modération
  • Étymologies et prononciations détaillées
  • Historique des révisions pour la traçabilité
  • Upload audio pour les prononciations natives

🌍 Communautés Linguistiques

  • Création de communautés par langue ou thématique
  • Discussions thématiques autour des mots et expressions
  • Système de modération communautaire
  • Communautés privées/publiques selon les besoins

💬 Messagerie Temps Réel

  • Chat instantané avec Socket.io
  • Partage de mots intégré dans les conversations
  • Indicateurs de frappe et statuts de présence
  • Historique des conversations persistant

👤 Profils et Social

  • Profils personnalisables avec langues natives/apprises
  • Système de favoris pour organiser les mots
  • Statistiques d'apprentissage personnalisées
  • Réseau d'amis pour l'apprentissage collaboratif

🛡️ Administration et Modération

  • Dashboard administrateur avec métriques détaillées
  • Modération des contributions (approbation/rejet)
  • Gestion des utilisateurs et permissions
  • Système de rôles granulaire

🏗️ Architecture Technique

Architecture Full-Stack

┌───────────────────────────────────────────────────┐
│                FRONTEND (Angular 19)              │
├───────────────────────────────────────────────────┤
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐  │
│  │    Auth     │ │ Dictionary  │ │ Communities │  │
│  └─────────────┘ └─────────────┘ └─────────────┘  │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐  │
│  │  Messaging  │ │   Profile   │ │    Admin    │  │
│  └─────────────┘ └─────────────┘ └─────────────┘  │
└───────────────────────────────────────────────────┘
                          │
                API REST & WebSocket
                          │
┌───────────────────────────────────────────────────┐
│                 BACKEND (NestJS 11)               │
├───────────────────────────────────────────────────┤
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐  │
│  │ Auth Module │ │ Users Module│ │ Dictionary  │  │
│  └─────────────┘ └─────────────┘ └─────────────┘  │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐  │
│  │ Communities │ │  Messaging  │ │    Admin    │  │
│  └─────────────┘ └─────────────┘ └─────────────┘  │
└───────────────────────────────────────────────────┘
                          │
                    ┌─────────────┐
                    │   MongoDB   │
                    └─────────────┘

Frontend (Angular 19)

src/
├── app/
│   ├── core/             # Services centraux, guards, intercepteurs
│   ├── shared/           # Composants réutilisables
│   ├── features/         # Modules métier (lazy loading)
│   │   ├── auth/         # Authentification
│   │   ├── dictionary/   # Fonctionnalités dictionnaire
│   │   ├── communities/  # Gestion des communautés
│   │   ├── messaging/    # Chat temps réel
│   │   ├── admin/        # Administration
│   │   └── profile/      # Gestion des profils
│   └── pipes/            # Pipes personnalisés

Backend (NestJS 11)

src/
├── auth/                 # Module d'authentification
├── users/                # Module utilisateurs
├── dictionary/           # Module dictionnaire
├── communities/          # Module communautés
├── messaging/            # Module messagerie
├── admin/                # Module administration
├── common/               # Services partagés
└── config/               # Configuration globale

🛠️ Technologies Utilisées

Frontend

Technologie Version Usage
Angular 19.1.0 Framework principal
TypeScript 5.7.2 Langage de développement
TailwindCSS 3.4.0 Framework CSS
Socket.io Client 4.8.1 Communication temps réel
RxJS 7.8.0 Programmation réactive

Backend

Technologie Version Usage
NestJS 11.0.1 Framework Node.js
TypeScript 5.7.3 Langage de développement
MongoDB 8.12.1 Base de données NoSQL
Mongoose 8.12.1 ODM MongoDB
Socket.io 4.8.1 Communication temps réel
JWT 11.0.0 Authentification
Passport 0.7.0 Stratégies d'authentification
Bcrypt 5.1.1 Hashage mots de passe
Cloudinary 2.6.1 Stockage fichiers audio
Nodemailer 6.10.0 Envoi d'emails
Redis 5.6.1 Cache et sessions

📦 Installation

Prérequis

  • Node.js >= 18.x
  • npm >= 9.x
  • MongoDB (local ou cloud Atlas)
  • Redis (optionnel, pour les fonctionnalités temps réel)

Installation Complète

# Cloner le repository
git clone <repository-url>
cd oypunu

# Installer les dépendances du projet complet
npm install

# Installer les dépendances du backend
cd backend
npm install

# Installer les dépendances du frontend
cd ../frontend
npm install

Configuration

Backend (.env)

# Base de données
MONGODB_URI=mongodb://localhost:27017/oypunu

# JWT
JWT_SECRET=your-super-secret-jwt-key
JWT_EXPIRES_IN=1d

# Email (Nodemailer)
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USER=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_FROM=noreply@oypunu.com

# Cloudinary (pour les audios)
CLOUDINARY_CLOUD_NAME=your-cloud-name
CLOUDINARY_API_KEY=your-api-key
CLOUDINARY_API_SECRET=your-api-secret

# OAuth (optionnel)
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
FACEBOOK_APP_ID=your-facebook-app-id
FACEBOOK_APP_SECRET=your-facebook-app-secret

# URLs
FRONTEND_URL=http://localhost:4200
APP_URL=http://localhost:3000
PORT=3000

Frontend (environments/environment.ts)

export const environment = {
  production: false,
  apiUrl: "http://localhost:3000/api",
};

💻 Développement

Lancement en développement

# Terminal 1 - Backend
cd backend
npm run start:dev

# Terminal 2 - Frontend
cd frontend
npm start

L'application sera accessible sur :

Scripts Disponibles

Backend

npm run start:dev      # Développement avec hot reload
npm run build          # Build de production
npm run start:prod     # Lancer en production
npm test               # Tests unitaires
npm run test:cov       # Tests avec couverture
npm run lint           # Linting et formatage

Frontend

npm start              # Développement avec hot reload
npm run build          # Build de production
npm test               # Tests unitaires
npm run lint           # Linting et formatage

📁 Structure du Projet

oypunu/
├── backend/                  # API NestJS
│   ├── src/
│   │   ├── auth/              # Authentification
│   │   ├── users/             # Gestion utilisateurs
│   │   ├── dictionary/        # API dictionnaire
│   │   ├── communities/       # Communautés
│   │   ├── messaging/         # Chat temps réel
│   │   ├── admin/             # Administration
│   │   └── common/            # Services partagés
│   ├── package.json
│   └── .env
├── frontend/                 # Application Angular
│   ├── src/
│   │   ├── app/
│   │   │   ├── core/          # Services centraux
│   │   │   ├── shared/        # Composants partagés
│   │   │   └── features/      # Modules métier
│   │   └── environments/
│   └── package.json
├── docs/                     # Documentation
├── package.json               # Dependencies racine
└── README.md                  # Ce fichier

🔗 API Documentation

Endpoints Principaux

Authentification

POST   /api/auth/register            # Inscription
POST   /api/auth/login               # Connexion
GET    /api/auth/verify-email/:token # Vérification email
POST   /api/auth/forgot-password     # Mot de passe oublié
GET    /api/auth/profile             # Profil utilisateur

Dictionnaire

GET    /api/words/search            # Recherche de mots
POST   /api/words                   # Créer un mot
GET    /api/words/:id               # Détails d'un mot
PUT    /api/words/:id               # Modifier un mot
POST   /api/words/:id/audio         # Upload audio
GET    /api/words/pending           # Mots en attente (admin)

Communautés

GET    /api/communities             # Lister les communautés
POST   /api/communities             # Créer une communauté
GET    /api/communities/:id         # Détails communauté
POST   /api/communities/:id/join    # Rejoindre
GET    /api/communities/:id/members # Membres

Messagerie

GET    /api/messaging/conversations # Conversations
GET    /api/messaging/messages      # Messages
POST   /api/messaging/send          # Envoyer message
GET    /api/messaging/unread-count  # Messages non lus

WebSocket Events

// Événements temps réel
"send_message"; // Envoyer un message
"join_conversation"; // Rejoindre une conversation
"typing_start"; // Commencer à taper
"typing_stop"; // Arrêter de taper

// Événements reçus
"new_message"; // Nouveau message
"user_online"; // Utilisateur en ligne
"user_offline"; // Utilisateur hors ligne
"word_approved"; // Mot approuvé par un modérateur

🔒 Sécurité

Authentification

  • JWT Tokens avec expiration configurable
  • Refresh Tokens pour la sécurité
  • Hashage bcrypt pour les mots de passe
  • OAuth Social : Google, Facebook, Twitter
  • Validation stricte des entrées utilisateur

Autorisation

// Exemple de protection par rôle
@UseGuards(JwtAuthGuard, RolesGuard)
@Roles(UserRole.ADMIN)
@Get('admin/users')
async getUsers() {
  // Seuls les admins peuvent accéder
}

Validation

  • DTOs avec class-validator pour toutes les entrées
  • Sanitisation des données utilisateur
  • Validation des fichiers audio uploadés
  • Rate limiting pour éviter les abus
  • Guards Angular pour la protection des routes frontend

🤝 Contribution

Workflow de Développement

  1. Fork le projet
  2. Créer une branche : git checkout -b feature/nouvelle-fonctionnalite
  3. Commit les changements : git commit -m 'Ajout nouvelle fonctionnalité'
  4. Push la branche : git push origin feature/nouvelle-fonctionnalite
  5. Ouvrir une Pull Request

Standards de Code

  • TypeScript strict activé
  • ESLint + Prettier pour la qualité du code
  • Tests unitaires obligatoires pour les nouveaux services
  • Documentation pour tous les endpoints API
  • Commits conventionnels recommandés

Tests

# Backend
cd backend
npm test                   # Tests unitaires
npm run test:cov           # Tests avec couverture
npm run test:e2e           # Tests de bout en bout

# Frontend
cd frontend
npm test                   # Tests unitaires
npm run test:watch         # Tests en mode watch

🚀 Déploiement

Build de Production

# Backend
cd backend
npm run build
npm run start:prod

# Frontend
cd frontend
npm run build
# Les fichiers sont générés dans dist/

Variables d'Environnement Production

# Backend
NODE_ENV=production
MONGODB_URI=mongodb+srv://user:pass@cluster.mongodb.net/oypunu
JWT_SECRET=super-secure-production-secret
FRONTEND_URL=https://oypunu.com
APP_URL=https://api.oypunu.com

# Frontend
# src/environments/environment.prod.ts
export const environment = {
  production: true,
  apiUrl: 'https://api.oypunu.com/api',
};

Docker (optionnel)

# Backend Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY dist ./dist
EXPOSE 3000
CMD ["node", "dist/main"]

📊 Monitoring & Performance

Métriques Disponibles

  • Utilisateurs actifs et statistiques d'inscription
  • Mots créés/approuvés par période
  • Messages envoyés et activité temps réel
  • Performance API et temps de réponse

Optimisations

  • Indexation MongoDB pour les requêtes fréquentes
  • Cache Redis pour les données souvent consultées
  • Lazy Loading des modules Angular
  • Pagination pour toutes les listes
  • OnPush Change Detection où approprié

📄 Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

👨‍💻 Auteur

Chermann KING - Développeur Principal

🌟 Remerciements

Si ce projet vous plaît, n'hésitez pas à lui donner une étoile ! ⭐


Fait avec ❤️ pour la communauté des passionnés de langues

Plateforme full-stack moderne pour révolutionner l'apprentissage linguistique

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载