Skip to content
This repository was archived by the owner on Feb 3, 2026. It is now read-only.

Repository files navigation

SwipeLive - Application de Live Shopping

PHP Version Symfony Version License: MIT

📱 À propos

SwipeLive était une application mobile innovante de live shopping, permettant aux vendeurs de présenter leurs produits en direct et aux acheteurs d'interagir et d'acheter en temps réel. Le projet combinait l'expérience immersive du streaming en direct avec la simplicité du commerce électronique.

État du projet : Application fonctionnelle, levée de fonds signée (250k €), arrêt du projet avec l'arrivée de TikTok Shop en France.

Composants du projet :

🚀 Fonctionnalités

  • Live Streaming

    • Diffusion en direct via Agora
    • Chat en temps rĂ©el avec Pusher
    • Interactions vendeur-acheteur en direct
  • Gestion des Produits

    • Catalogue de produits
    • Gestion des stocks en temps rĂ©el
    • PrĂ©sentation des produits pendant le live
  • Paiements SĂ©curisĂ©s

    • IntĂ©gration Stripe
    • Transactions sĂ©curisĂ©es
    • Historique des commandes
  • Authentification et SĂ©curitĂ©

    • JWT pour l'authentification API
    • Firebase pour l'authentification utilisateur
    • Gestion des rĂ´les (acheteurs, vendeurs, administrateurs)
  • Gestion des MĂ©dias

    • Cloudinary pour la gestion des mĂ©dias
    • Traitement vidĂ©o avec FFmpeg
    • Stockage AWS S3

🛠 Technologies Utilisées

  • Backend

    • Symfony 6.4
    • PHP 8.2
    • Doctrine ORM
    • JWT Authentication
    • PostgreSQL
  • Services Cloud

    • AWS S3 pour le stockage
    • Cloudinary pour les mĂ©dias
    • Firebase pour l'authentification
    • Pusher pour le temps rĂ©el
    • Stripe pour les paiements
    • Agora pour le streaming vidĂ©o
  • Monitoring

    • Bugsnag pour le suivi des erreurs
    • Logs personnalisĂ©s

📋 Prérequis

Installation Classique

  • PHP 8.2 ou supĂ©rieur
  • Composer
  • PostgreSQL
  • FFmpeg

Installation avec Docker (Recommandée)

  • Docker
  • Docker Compose

🚀 Installation

Option 1 : Installation avec Docker (Recommandée)

  1. Cloner le projet

    git clone https://github.com/votre-username/swipelive.git
    cd swipelive
  2. Créer le fichier d'environnement

    # Créez un fichier .env avec la configuration suivante :
    DATABASE_URL="postgresql://symfony:symfony@database:5432/swipelive?serverVersion=15&charset=utf8"
    APP_ENV=dev
    APP_SECRET=your-secret-key-here
  3. Générer les certificats SSL (pour HTTPS)

    cd docker/nginx/ssl
    ./generate-ssl.sh
    cd ../../..
  4. Lancer les conteneurs Docker

    docker-compose up -d --build
  5. Installer les dépendances

    docker-compose exec app composer install
  6. Créer la base de données et exécuter les migrations

    docker-compose exec app php bin/console doctrine:database:create
    docker-compose exec app php bin/console doctrine:migrations:migrate
  7. Accéder à l'application

    Note : Les certificats SSL sont auto-signés. Lors de la première connexion HTTPS, vous devrez accepter l'avertissement de sécurité dans votre navigateur ou votre client HTTP.

Commandes Docker utiles

# Voir les logs en temps réel
docker-compose logs -f

# Accéder au conteneur de l'application
docker-compose exec app bash

# Exécuter des commandes Symfony
docker-compose exec app php bin/console [commande]

# ArrĂŞter les conteneurs
docker-compose down

# Redémarrer les conteneurs
docker-compose up -d

Option 2 : Installation Classique

  1. Cloner le projet

    git clone https://github.com/votre-username/swipelive.git
    cd swipelive
  2. Installer les dépendances

    composer install
    npm install # ou yarn install
  3. Configuration de l'environnement

    cp .env.example .env
    # Configurez les variables d'environnement dans .env
  4. Configuration de la base de données

    php bin/console doctrine:database:create
    php bin/console doctrine:migrations:migrate
  5. Générer les clés JWT

    mkdir -p config/jwt
    openssl genpkey -out config/jwt/private.pem -aes256 -algorithm rsa -pkeyopt rsa_keygen_bits:4096
    openssl pkey -in config/jwt/private.pem -out config/jwt/public.pem -pubout
  6. Compiler les assets

    npm run build # ou yarn build
  7. Démarrer le serveur

    symfony server:start

⚙️ Configuration des Services

Services Requis

  1. Firebase

    • CrĂ©er un projet Firebase
    • TĂ©lĂ©charger le fichier de configuration
    • Placer le fichier dans config/firebase/
  2. Stripe

    • CrĂ©er un compte Stripe
    • Configurer les clĂ©s API dans .env
  3. AWS S3

    • CrĂ©er un bucket S3
    • Configurer les credentials AWS
  4. Cloudinary

    • CrĂ©er un compte Cloudinary
    • Configurer l'URL Cloudinary dans .env
  5. Pusher

    • CrĂ©er un compte Pusher
    • Configurer les clĂ©s dans .env
  6. Agora

    • CrĂ©er un compte Agora
    • Configurer l'App ID et le certificat

🏗 Architecture

graph TD
    A[Client Mobile] -->|API Requests| B[API Symfony]
    B -->|Push Notifications| C[Firebase]
    B -->|Media Storage| D[AWS S3]
    B -->|Image Processing| E[Cloudinary]
    B -->|Real-time Events| F[Pusher]
    B -->|Live Streaming| G[Agora]
    B -->|Payments| H[Stripe]
    B -->|Database| I[(MySQL)]
Loading

Structure du Backend

src/
├── Controller/     # Contrôleurs API REST
├── Entity/         # Entités Doctrine
├── Service/        # Services métier
├── Repository/     # Repositories Doctrine
└── EventListener/  # Listeners d'événements

🔄 Améliorations Architecturales Potentielles

Cette section présente les améliorations architecturales qui auraient pu être implémentées avec le recul pour rendre le projet plus robuste, plus performant et maintenable.

Domain-Driven Design (DDD)

  • ImplĂ©mentation d'une architecture en couches (Layered Architecture)
    src/
    ├── Domain/          # Entités, Value Objects, Events
    ├── Application/     # Use Cases, Services applicatifs
    ├── Infrastructure/  # Persistence, External Services
    └── Presentation/   # Controllers, DTOs
    
  • DĂ©finition de Bounded Contexts clairs (ex: Streaming, Marketplace, Authentication)
  • Utilisation d'Aggregates pour maintenir la cohĂ©rence des donnĂ©es
  • ImplĂ©mentation d'Event Sourcing pour le suivi des changements d'Ă©tat

Clean Architecture

  • SĂ©paration stricte des responsabilitĂ©s avec le principe des cercles concentriques
  • Inversion des dĂ©pendances (interfaces dans le domaine)
  • Use Cases isolĂ©s et testables
  • Mappers dĂ©diĂ©s entre les couches

Microservices

Décomposition potentielle en services autonomes :

  • Service de Streaming (Agora)
  • Service de Paiement (Stripe)
  • Service de Gestion des Produits
  • Service de Chat
  • Service de Notification
  • Service d'Authentication

Améliorations Techniques

  • Tests

    • Tests unitaires plus exhaustifs
    • Tests d'intĂ©gration avec TestContainers
    • Tests de performance avec K6
    • Tests E2E avec Cypress
    • Fixtures plus complètes avec Alice
  • Patterns & Pratiques

    • Command Query Responsibility Segregation (CQRS)
    • Implementation du pattern Mediator (ex: symfony/messenger)
    • Circuit Breaker pour les appels aux services externes
    • Cache distribuĂ© avec Redis
    • File d'attente avec RabbitMQ pour les opĂ©rations asynchrones
  • Monitoring & ObservabilitĂ©

    • Distributed Tracing avec Jaeger
    • MĂ©triques dĂ©taillĂ©es avec Prometheus
    • Dashboards Grafana
    • Log aggregation avec ELK Stack
  • CI/CD

    • Pipeline de dĂ©ploiement blue/green
    • Tests de sĂ©curitĂ© automatisĂ©s
    • Quality Gates avec SonarQube
    • Analyse statique du code plus poussĂ©e

Ces améliorations démontrent une compréhension approfondie des pratiques modernes de développement et d'architecture logicielle, tout en maintenant un équilibre entre complexité et maintenabilité.

📝 License

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

About

Plateforme de Live Shopping

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages