Skip to content
Cette page a été générée et traduite avec l'aide de l'IA. Si vous remarquez des inexactitudes, n'hésitez pas à contribuer. Modifier sur GitHub

Fenfa

Fenfa (分发, "distribuer" en chinois) est une plateforme de distribution d'applications auto-hébergée pour iOS, Android, macOS, Windows et Linux. Téléversez des builds, obtenez des pages d'installation avec codes QR, et gérez les versions via un panneau d'administration -- le tout depuis un seul binaire Go avec frontend intégré et stockage SQLite.

Fenfa est conçu pour les équipes de développement, les ingénieurs QA et les départements informatiques d'entreprise qui ont besoin d'un canal de distribution d'applications privé et contrôlable -- un canal qui gère l'installation iOS OTA, la distribution d'APK Android et la livraison d'applications bureau sans dépendre des boutiques d'applications publiques ou de services tiers.

Pourquoi Fenfa ?

Les boutiques d'applications publiques imposent des délais de révision, des restrictions de contenu et des préoccupations de confidentialité. Les services de distribution tiers facturent des frais par téléchargement et contrôlent vos données. Fenfa vous donne le contrôle total :

  • Auto-hébergé. Vos builds, votre serveur, vos données. Pas de dépendance fournisseur, pas de frais par téléchargement.
  • Multi-plateforme. Une seule page produit dessert iOS, Android, macOS, Windows et Linux avec détection automatique de la plateforme.
  • Zéro dépendance. Un seul binaire Go avec SQLite intégré. Pas de Redis, pas de PostgreSQL, pas de file de messages.
  • Distribution iOS OTA. Prise en charge complète de la génération de manifestes itms-services://, de la liaison UDID des appareils et de l'intégration de l'API Apple Developer pour le provisionnement ad-hoc.

Fonctionnalités clés

  • Téléversement intelligent -- Détection automatique des métadonnées de l'application (bundle ID, version, icône) depuis les packages IPA et APK. Il suffit de téléverser le fichier et Fenfa s'occupe du reste.

  • Pages produit -- Pages de téléchargement publiques avec codes QR, détection de plateforme et journaux de modifications par version. Partagez une seule URL pour toutes les plateformes.

  • Liaison UDID iOS -- Flux d'enregistrement des appareils pour la distribution ad-hoc. Les utilisateurs lient leur UDID d'appareil via un profil de configuration mobile guidé, et les administrateurs peuvent enregistrer automatiquement les appareils via l'API Apple Developer.

  • Stockage S3/R2 -- Stockage d'objets compatible S3 optionnel (Cloudflare R2, AWS S3, MinIO) pour un hébergement de fichiers évolutif. Le stockage local fonctionne immédiatement.

  • Panneau d'administration -- Panneau d'administration Vue 3 complet pour gérer les produits, variantes, versions, appareils et paramètres système. Prend en charge les interfaces en chinois et en anglais.

  • Authentification par jeton -- Portées de jetons d'administration et de téléversement séparées. Les pipelines CI/CD utilisent des jetons de téléversement ; les administrateurs utilisent des jetons d'administration pour un contrôle total.

  • Suivi d'événements -- Suivez les visites de page, les clics de téléchargement et les téléchargements de fichiers par version. Exportez les événements en CSV pour l'analyse.

Architecture

mermaid
graph TB
    CLIENT["Navigateur / Pipeline CI"]

    subgraph Server["Serveur Fenfa (Go + Gin)"]
        ROUTER["Routeur Gin"]
        AUTH["Middleware Auth<br/>X-Auth-Token"]
        HANDLERS["Handlers<br/>Téléversement · Téléchargement · Admin · UDID"]
        EMBED["Frontend Intégré<br/>Page publique (Vue 3) · Panneau Admin (Vue 3)"]
        GORM["ORM GORM"]
    end

    subgraph Storage["Couche de stockage"]
        SQLITE["Base de données SQLite"]
        FILES["Stockage de fichiers<br/>Local ou S3/R2"]
    end

    CLIENT --> ROUTER
    ROUTER --> AUTH
    AUTH --> HANDLERS
    ROUTER --> EMBED
    HANDLERS --> GORM
    GORM --> SQLITE
    HANDLERS --> FILES

Modèle de données

mermaid
graph LR
    PRODUCT["Produit<br/>(ex. MonApp)"]
    VARIANT_IOS["Variante : iOS<br/>com.example.myapp"]
    VARIANT_ANDROID["Variante : Android<br/>com.example.myapp"]
    VARIANT_MAC["Variante : macOS<br/>arm64 · dmg"]
    REL1["Version v1.0.0<br/>build 100"]
    REL2["Version v1.1.0<br/>build 110"]
    REL3["Version v1.0.0<br/>build 100"]

    PRODUCT --> VARIANT_IOS
    PRODUCT --> VARIANT_ANDROID
    PRODUCT --> VARIANT_MAC
    VARIANT_IOS --> REL1
    VARIANT_IOS --> REL2
    VARIANT_ANDROID --> REL3
  • Produit : Une application logique avec un nom, un slug, une icône et une description. Une seule page produit dessert toutes les plateformes.
  • Variante : Une cible de build spécifique à une plateforme (iOS, Android, macOS, Windows, Linux) avec son propre identifiant, architecture et type d'installateur.
  • Version : Un build spécifique téléversé avec numéro de version, numéro de build, journal des modifications et fichier binaire.

Installation rapide

bash
docker run -d --name fenfa -p 8000:8000 fenfa/fenfa:latest

Visitez http://localhost:8000/admin et connectez-vous avec le jeton dev-admin-token.

Consultez le Guide d'installation pour Docker Compose, les builds depuis les sources et la configuration en production.

Sections de documentation

SectionDescription
InstallationInstaller Fenfa avec Docker ou compiler depuis les sources
Démarrage rapideFaire fonctionner Fenfa et téléverser votre premier build en 5 minutes
Gestion des produitsCréer et gérer des produits multi-plateformes
Variantes de plateformeConfigurer les variantes iOS, Android et bureau
Gestion des versionsTéléverser, versionner et gérer les versions
Aperçu de distributionComment Fenfa distribue les applications aux utilisateurs finaux
Distribution iOSInstallation iOS OTA, génération de manifeste, liaison UDID
Distribution AndroidDistribution d'APK Android
Distribution bureauDistribution macOS, Windows et Linux
Aperçu APIRéférence API REST
API de téléversementTéléverser des builds via API ou CI/CD
API d'administrationRéférence complète de l'API d'administration
ConfigurationToutes les options de configuration
Déploiement DockerDéploiement Docker et Docker Compose
Déploiement en productionProxy inverse, TLS, sauvegardes et surveillance
DépannageProblèmes courants et solutions

Informations sur le projet

  • Licence : MIT
  • Langage : Go 1.25+ (backend), Vue 3 + Vite (frontend)
  • Base de données : SQLite (via GORM)
  • Dépôt : github.com/openprx/fenfa
  • Organisation : OpenPRX

Released under the Apache-2.0 License.