Files
wiki/Catalogue-Self-Hosted/apps/app-panora.md
T
2026-06-09 18:40:21 +02:00

7.2 KiB


title: Panora created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, integration, api-unified, saas, etl, no-code, typescript] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/panoratech/Panora]

💻 Panora

L'API unifiée pour intégrations SaaS : connectez votre app à 30+ services (CRM, Helpdesk, ATS, Storage) en quelques lignes de code, sans réécrire une intégration par client — l'open source answer à Merge.dev et Apideck.

📋 Informations Générales

Champ Valeur
Site web panora.dev
GitHub panoratech/Panora
License MIT (Community) + Commercial (Cloud)
Langage TypeScript (NestJS + Next.js)
Étoiles GitHub 1k
Dernière MAJ 2026-06-07
Catégorie cat-development, Unified API / Integration

📝 Description

Panora est une plateforme d'intégration open source qui expose une API unifiée pour se connecter à des dizaines de SaaS tiers (CRM, Helpdesk, ATS, Storage, etc.). L'idée : vous codez une seule intégration Panora, et Panora se charge de parler à HubSpot, Salesforce, Pipedrive, Zendesk, Intercom, Greenhouse, Lever, Notion, Airtable, Google Drive, Dropbox… à votre place.

Le problème que résout Panora : chaque SaaS a sa propre API, ses propres schémas, ses propres rate limits, ses propres webhooks, ses propres OAuth flows. Pour une startup B2B qui veut supporter plusieurs CRM côté client, cela signifie réécrire la même intégration 5 fois. Panora mutualise ce travail : un seul schéma unifié (Common Model), des transformations automatiques vers les formats natifs de chaque provider, et un système de sync bidirectionnel (webhooks + polling).

C'est l'open source alternative à Merge.dev (leader du marché, $100k+/an) et Apideck. La version community couvre les intégrations les plus demandées ; la version cloud payante ajoute des providers enterprise, du support, et un SLA.

Public cible : startups B2B, équipes produit SaaS, intégrateurs qui veulent scaler leurs intégrations tierces sans y passer un dev à plein temps.

Fonctionnalités principales

  • API unifiée : un seul schéma pour 30+ SaaS
  • Catégories couvertes : CRM, Helpdesk, ATS, HRIS, Accounting, Storage, Calendar
  • Sync bidirectionnel : webhooks + polling, déduplication
  • Common Model : entités normalisées (Contact, Company, Deal, Ticket, etc.)
  • Authentification déléguée : OAuth flows gérés par Panora
  • Rate limit handling : backoff intelligent, queue
  • Field mapping : configuration par client des champs custom
  • Webhooks sortants : votre app est notifiée des changements
  • API REST + TypeScript SDK typé
  • Logs d'audit : qui a synchro quoi, quand
  • Self-hosted : 100% on-prem, données chez vous
  • Extensible : ajouter un provider custom (TypeScript)

🚀 Installation

Via Docker (recommandé)

# docker-compose.yml
version: '3.8'
services:
  panora-api:
    image: panoratech/panora-api:latest
    container_name: panora-api
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: "postgresql://panora:password@db:5432/panora"
      REDIS_URL: "redis://redis:6379"
      NEXTAUTH_SECRET: "changez-moi-en-production-50-chars"
      NEXTAUTH_URL: "https://panora.example.com"
      PANORA_ENCRYPTION_KEY: "32-chars-encryption-key-aes-256"
    depends_on:
      - db
      - redis
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.panora.rule=Host(`panora.example.com`)"
      - "traefik.http.routers.panora.entrypoints=websecure"
      - "traefik.http.routers.panora.tls.certresolver=letsencrypt"

  panora-web:
    image: panoratech/panora-web:latest
    container_name: panora-web
    restart: unless-stopped
    ports:
      - "3001:3000"
    environment:
      NEXT_PUBLIC_API_URL: "https://panora.example.com/api"

  db:
    image: postgres:16-alpine
    container_name: panora-db
    restart: unless-stopped
    environment:
      POSTGRES_USER: panora
      POSTGRES_PASSWORD: changez-moi
      POSTGRES_DB: panora
    volumes:
      - panora_db:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    container_name: panora-redis
    restart: unless-stopped

volumes:
  panora_db:

Installation manuelle

git clone https://github.com/panoratech/Panora.git
cd Panora
docker compose -f deploy/docker-compose.yaml up -d

⚙️ Configuration

  1. Créer le compte admin : https://panora.example.com/web
  2. Configurer un provider : Settings > Providers > ajouter credentials OAuth (HubSpot, Salesforce, etc.)
  3. Définir les connecteurs actifs par client : vertical, sync mode (immediate/scheduled)
  4. Map custom fields : pour chaque client, mapper ses champs custom
  5. Webhooks : configurer l'URL de votre backend pour recevoir les events
  6. Chiffrement : PANORA_ENCRYPTION_KEY obligatoire (AES-256 des tokens)
  7. API Keys : créer des clés par client, scope par catégorie

Exemple d'usage (API unifiée)

# Récupérer les contacts de tous les CRM d'un client
curl -H "Authorization: Bearer <API_KEY>" \
     -H "x-connection-id: <hubspot-connection-id>" \
     "https://panora.example.com/api/crm/contacts"
# → schéma unifié, identique quel que soit le CRM

🔗 Alternatives

  • Merge.dev — Leader du marché, propriétaire, $100k+/an
  • Apideck — Concurrent direct, plus accessible en pricing
  • Unify — Alternative européenne, plus orienté EU
  • Nango — Open source (MIT), focus sur OAuth + sync, plus bas niveau
  • Kombo — Concurrent européen, focus marché DACH
  • Tray.io — Plateforme iPaaS plus large, plus complexe
  • Workato — iPaaS enterprise, hors budget PME

🔒 Sécurité

  • 🔐 NEXTAUTH_SECRET + PANORA_ENCRYPTION_KEY robustes : openssl rand -hex 32 (32 chars pour AES-256)
  • 🛡️ HTTPS obligatoire via app-traefik : Panora manipule des tokens OAuth, des données CRM, et des secrets
  • 🔒 Chiffrement des credentials : tous les tokens provider sont chiffrés en base (AES-256)
  • 🛡️ API Keys : scope par client, rotation régulière
  • 🛡️ Webhooks sortants : signature HMAC, secret partagé
  • 🛡️ RGPD : Panora accède à des données CRM → DPA, registre des traitements
  • 🛡️ Audit log : conserver l'historique des synchronisations

📚 Ressources

🔗 Pages Liées