Skip to content

A modern, modular tool for creating beautiful charts and diagrams. Easily build, configure, and export charts through an intuitive web interface. Supports multiple chart types, customizable colors, and flexible export formats (PNG, JPEG, SVG, HTML). Runs containerized via Docker

License

Notifications You must be signed in to change notification settings

timbornemann/Custom-Chart-Composer

Repository files navigation

Custom Chart Composer

Version License

Ein modernes, webbasiertes Tool zur einfachen Erstellung Γ€sthetisch ansprechender Diagramme. Mit einer intuitiven BenutzeroberflΓ€che kΓΆnnen Sie verschiedene Diagrammtypen auswΓ€hlen, Daten und Farben anpassen und das fertige Ergebnis in verschiedenen Formaten exportieren.

Custom Chart Composer - Hauptansicht Die Hauptansicht der Custom Chart Composer Anwendung mit Sidebar fΓΌr Diagrammtypen, Vorschau-Bereich und Konfigurationspanel

Inhaltsverzeichnis

πŸš€ Installation

Windows-Installer (Empfohlen)

Die einfachste MΓΆglichkeit, Custom Chart Composer zu nutzen – keine Docker oder Node.js erforderlich!

Downloads:

Installation:

  1. Laden Sie die neueste Custom Chart Composer Setup <version>.exe herunter
  2. FΓΌhren Sie die Setup-Datei aus
  3. Die Anwendung wird installiert und steht im StartmenΓΌ zur VerfΓΌgung

Hinweise:

  • Der Installer enthΓ€lt Frontend und Backend – keine zusΓ€tzliche Runtime nΓΆtig
  • Die App-Version in der Kopfzeile entspricht der Release-Version
  • Keine Installation von Node.js, Docker oder anderen AbhΓ€ngigkeiten erforderlich

Docker Image

FΓΌr Server-Bereitstellung oder Container-Umgebungen.

Image herunterladen:

docker pull ghcr.io/timbornemann/custom-chart-composer:latest

Container starten:

docker run -d --name custom-chart-composer -p 3003:3003 ghcr.io/timbornemann/custom-chart-composer:latest

Zugriff:

Bestimmte Version verwenden:

docker run -d --name custom-chart-composer -p 3003:3003 ghcr.io/timbornemann/custom-chart-composer:1.0.2

Eigene Chart-Module hinzufΓΌgen:

Linux/Mac:

docker run -d --name custom-chart-composer -p 3003:3003 -v $(pwd)/modules:/app/backend/modules ghcr.io/timbornemann/custom-chart-composer:latest

Windows (PowerShell/CMD):

docker run -d --name custom-chart-composer -p 3003:3003 -v %cd%\modules:/app/backend/modules ghcr.io/timbornemann/custom-chart-composer:latest

Weitere Informationen:

✨ Features

  • 🎨 40+ Diagrammtypen: Balken, Horizontal, Linie, FlΓ€che, Kreis, Donut, Radar, Streudiagramm, Blasen, Polar-FlΓ€che, Gestapelt, Multi-Line, Kombiniert, Gruppiert, Treppenstufen, Vertikal, Prozent, Heatmap, Treemap, Sankey, Trichter, Violin, Box-Plot, Kalender-Heatmap, Koordinaten, Matrix, Sunburst, Wasserfall und viele mehr
  • 🎯 Modulares Plugin-System: Neue Diagrammtypen einfach hinzufΓΌgen
  • πŸ–ŒοΈ Umfangreiche Anpassungen: Farben, Beschriftungen, Optionen
  • πŸ“¦ Multiple Export-Formate: PNG, JPEG, HTML
  • πŸŒ™ Modernes Dark Theme: Professionelles UI-Design
  • ↩️ Undo & Redo inklusive Shortcuts: Γ„nderungen bequem per Toolbar oder mit Strg+Z / Strg+Shift+Z rΓΌckgΓ€ngig machen bzw. wiederholen
  • πŸ’Ύ Automatische Zwischenspeicherung: Deine Diagrammdaten werden lokal gepuffert, sodass beim Neuladen nichts verloren geht
  • 🐳 Docker-Support: Einfache Bereitstellung
  • ⚑ Live-Vorschau: Echtzeit-Aktualisierung bei Γ„nderungen

🎯 Verwendung

1. Diagrammtyp auswΓ€hlen

Diagrammtyp-Auswahl Auswahl verschiedener Diagrammtypen mit Live-Vorschau

WΓ€hlen Sie in der Sidebar den gewΓΌnschten Diagrammtyp:

Balkendiagramme (9 Typen):

  • Balkendiagramm: Klassische Wertevergleiche
  • Horizontales Balkendiagramm: Balken von links nach rechts
  • Gestapeltes Balkendiagramm: Mehrere DatensΓ€tze ΓΌbereinander
  • Gruppiertes Balkendiagramm: Mehrere DatensΓ€tze nebeneinander
  • Prozent-Balkendiagramm: Prozentuale Verteilung
  • Radiales Balkendiagramm: KreisfΓΆrmige Anordnung
  • Range-Balkendiagramm: Bereichswerte darstellen
  • Segmentiertes Balkendiagramm: Aufgeteilte Balken
  • Wasserfall-Diagramm: Kumulative Γ„nderungen

Liniendiagramme (9 Typen):

  • Liniendiagramm: Trends und Zeitreihen
  • FlΓ€chendiagramm: GefΓΌllte Linie fΓΌr Volumen
  • Multi-Liniendiagramm: Mehrere Linien vergleichen
  • Treppenstufen-Liniendiagramm: Gestufte VerlΓ€ufe
  • Vertikales Liniendiagramm: Spezielle Darstellung
  • GeglΓ€ttetes Liniendiagramm: Weiche Kurven
  • Gestricheltes Liniendiagramm: Gestrichelte Linien
  • Geschwungenes FlΓ€chendiagramm: Weich gefΓΌllte Kurven
  • Stream-Graph: Gestapeltes FlΓ€chendiagramm

Kreisdiagramme (8 Typen):

  • Kreisdiagramm: Anteile und VerhΓ€ltnisse
  • Donutdiagramm: Modern mit Loch in der Mitte
  • Polar-FlΓ€chendiagramm: KreisfΓΆrmige FlΓ€chendarstellung
  • Halbkreis-Diagramm: Halbkreis-Donut
  • Radiales Balkendiagramm: KreisfΓΆrmige Balken
  • Sunburst-Diagramm: Hierarchische konzentrische Ringe
  • Verschachteltes Donut: Mehrere Donuts
  • Chord-Diagramm: Beziehungen zwischen EntitΓ€ten

Punktdiagramme (6 Typen):

  • Streudiagramm: Korrelationen zwischen zwei Variablen
  • Blasendiagramm: 3-dimensionale Daten mit Radius
  • Heatmap-Diagramm: Matrix mit FarbintensitΓ€ten
  • Kalender-Heatmap: GitHub-Style JahresΓΌbersicht
  • Koordinatendiagramm: Geografische Koordinaten
  • Matrix-Diagramm: Gewichtete Punkte

Spezialdiagramme (8 Typen):

  • Radar-Chart: Mehrdimensionale Daten auf polaren Achsen
  • Box-Plot-Diagramm: Statistische Verteilungen
  • Kombiniertes Diagramm: Verschiedene Charttypen kombiniert
  • Sankey-Diagramm: Flussdiagramm fΓΌr DatenflΓΌsse
  • Tachometer-Diagramm: Aktuelle Werte visualisieren
  • Treemap-Diagramm: Hierarchische verschachtelte Rechtecke
  • Trichter-Diagramm: Prozessphasen darstellen
  • Violin-Chart: Erweiterte statistische Verteilungen

2. Daten konfigurieren

Im Tab "Daten":

  • Titel eingeben (optional)
  • Beschriftungen (Labels) kommagetrennt eingeben
  • Werte kommagetrennt eingeben
  • Datensatz-Label definieren

3. Styling anpassen

Styling-Optionen Umfangreiche Styling-Optionen mit Farbpalette, Hintergrundfarbe und Hintergrundbild-Upload

Im Tab "Styling":

  • Farbpalette: Benutzerdefinierte Farbzuweisung fΓΌr jeden Datenpunkt
  • Hintergrundfarbe: Vordefinierte Optionen oder eigene Farbauswahl
  • Hintergrundbild: Upload-Funktion fΓΌr PNG, JPG, GIF bis 5MB
  • Transparente HintergrΓΌnde: FΓΌr Overlay-Darstellungen

4. Optionen einstellen

Im Tab "Optionen":

  • Legende ein/ausschalten
  • Gitter anzeigen/verbergen
  • Diagrammspezifische Optionen anpassen
  • Exportgrâße festlegen (Breite/HΓΆhe)

5. Exportieren

Export-Optionen Umfangreiche Export-Funktionen mit verschiedenen Formaten und AuflΓΆsungen

Export-Formate:

  • PNG: Hochqualitative Rasterbilder
  • JPEG: Komprimierte Bilder fΓΌr Web
  • HTML: Interaktive Diagramme fΓΌr Webseiten

AuflΓΆsungen:

  • HD: 1280Γ—720 Pixel
  • Full HD: 1920Γ—1080 Pixel
  • 4K: 3840Γ—2160 Pixel
  • Quadrat: 1080Γ—1080 Pixel
  • Benutzerdefiniert: Eigene Dimensionen

ZusΓ€tzliche Optionen:

  • Skalierung: Prozentuale Grâßenanpassung
  • Transparenter Hintergrund: FΓΌr Overlay-Darstellungen
  • JSON-Export: Konfiguration speichern und teilen

πŸ“Š Diagrammtypen im Detail

Die Custom Chart Composer bietet eine beeindruckende Vielfalt an Diagrammtypen fΓΌr alle Datenvisualisierungs-Anforderungen:

Kreisdiagramme

Kreisdiagramm Klassisches Kreisdiagramm mit proportionalen Sektoren

Polar-Diagramme

Polar-FlΓ€chendiagramm Radiale Darstellung kategorialer Werte

Punktdiagramme

Streudiagramm Streudiagramm fΓΌr Korrelationsanalyse zwischen zwei Variablen

Spezialdiagramme

Radar-Chart Radar-Chart fΓΌr mehrdimensionale Daten auf polaren Achsen

Suchfunktion

Suchfunktion Intelligente Suchfunktion zur schnellen Navigation durch alle Diagrammtypen

πŸ“Έ Screenshots: Eine detaillierte Sammlung aller Screenshots mit Beschreibungen finden Sie im Ordner screenshots/

πŸ”„ Automatische Updates mit Watchtower

Damit dein Container automatisch aktualisiert wird, kannst du Watchtower verwenden. Watchtower prΓΌft in Intervallen auf neue Images und aktualisiert betroffene Container.

Alle Container ΓΌberwachen:

docker run -d --name watchtower --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --interval 3600

Nur diesen Container aktualisieren:

docker run -d --name watchtower --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower custom-chart-composer --interval 3600

Einmalige PrΓΌfung (danach endet der Watchtower-Container):

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower custom-chart-composer --run-once

Tipp: Benenne deinen Container genau custom-chart-composer, damit die obigen Befehle 1:1 funktionieren.

πŸ—οΈ Technologie-Stack

Komponente Technologie
Frontend React + Vite + TailwindCSS
Backend Node.js + Express
Charts Chart.js
Export Canvas (Node)
Container Docker

πŸ–₯️ Lokale Entwicklung

Option 1: Automatisch (Empfohlen)

Windows:

# Doppelklick auf start-dev.bat
# oder im Terminal:
start-dev.bat

Linux/Mac:

# AusfΓΌhrbar machen
chmod +x start-dev.sh

# Starten
./start-dev.sh

Option 2: Manuell - Schritt fΓΌr Schritt

Schritt 1: Backend starten

cd backend
npm install
npm run dev

Warten Sie bis "Server running on port 3003" angezeigt wird

Schritt 2: Frontend starten (neues Terminal)

cd frontend
npm install
npm run dev

Warten Sie bis "Local: http://localhost:5173" angezeigt wird

Schritt 3: Anwendung ΓΆffnen

Option 3: Docker Compose (Lokale Entwicklung)

# Repository klonen
git clone https://github.com/timbornemann/Custom-Chart-Composer.git
cd Custom-Chart-Composer

# Mit Docker Compose starten
docker-compose up --build

# App ΓΆffnen unter http://localhost:3003

Voraussetzungen:

  • Node.js 20+ (fΓΌr lokale Entwicklung)
  • Docker & Docker Compose (fΓΌr Container-Deployment)
  • npm oder yarn

Electron Desktop (Windows)

Die Desktop-Variante nutzt denselben Express-Server und das gebaute Vite-Frontend wie die Docker- bzw. Web-Version. Alle Γ„nderungen an Backend, Frontend oder den Modulen wirken sich somit automatisch auch auf die Electron-App aus.

Vorbereitung:

# AbhΓ€ngigkeiten installieren
cd backend
npm install
cd ../frontend
npm install
cd ../desktop/electron
npm install

Windows-Build erstellen:

cd desktop/electron
npm run build:win

Der fertige Installer befindet sich im Verzeichnis desktop/electron/dist.

Entwicklung im Desktop-Kontext:

# Frontend-Dev-Server starten
cd frontend
npm run dev

# In einem zweiten Terminal das Electron-Fenster ΓΆffnen
cd ../desktop/electron
npm run dev

Hinweis: Die Electron-App startet automatisch den Express-Server auf einem freien lokalen Port und ΓΌbergibt diesen intern an das Frontend. Anpassungen am Backend (z. B. neue Module im Ordner backend/modules) stehen sowohl in Docker als auch in der Desktop-App direkt zur VerfΓΌgung.

πŸ“ Projektstruktur

Custom-Chart-Composer/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ controllers/          # API-Controller
β”‚   β”œβ”€β”€ routes/              # API-Routes
β”‚   β”œβ”€β”€ services/            # Business Logic
β”‚   β”œβ”€β”€ modules/             # Chart-Module (40+ Diagrammtypen)
β”‚   β”‚   β”œβ”€β”€ areaChart.js
β”‚   β”‚   β”œβ”€β”€ barChart.js
β”‚   β”‚   β”œβ”€β”€ boxPlotChart.js
β”‚   β”‚   β”œβ”€β”€ bubbleChart.js
β”‚   β”‚   β”œβ”€β”€ calendarHeatmap.js
β”‚   β”‚   β”œβ”€β”€ candlestickChart.js
β”‚   β”‚   β”œβ”€β”€ chordChart.js
β”‚   β”‚   β”œβ”€β”€ coordinateChart.js
β”‚   β”‚   β”œβ”€β”€ curvedAreaChart.js
β”‚   β”‚   β”œβ”€β”€ dashedLineChart.js
β”‚   β”‚   β”œβ”€β”€ donutChart.js
β”‚   β”‚   β”œβ”€β”€ funnelChart.js
β”‚   β”‚   β”œβ”€β”€ gaugeChart.js
β”‚   β”‚   β”œβ”€β”€ groupedBarChart.js
β”‚   β”‚   β”œβ”€β”€ heatmapChart.js
β”‚   β”‚   β”œβ”€β”€ horizontalBarChart.js
β”‚   β”‚   β”œβ”€β”€ lineChart.js
β”‚   β”‚   β”œβ”€β”€ matrixChart.js
β”‚   β”‚   β”œβ”€β”€ mixedChart.js
β”‚   β”‚   β”œβ”€β”€ multiLineChart.js
β”‚   β”‚   β”œβ”€β”€ nestedDonutChart.js
β”‚   β”‚   β”œβ”€β”€ percentageBarChart.js
β”‚   β”‚   β”œβ”€β”€ pieChart.js
β”‚   β”‚   β”œβ”€β”€ polarAreaChart.js
β”‚   β”‚   β”œβ”€β”€ radarChart.js
β”‚   β”‚   β”œβ”€β”€ radialBarChart.js
β”‚   β”‚   β”œβ”€β”€ rangeBarChart.js
β”‚   β”‚   β”œβ”€β”€ sankeyChart.js
β”‚   β”‚   β”œβ”€β”€ scatterChart.js
β”‚   β”‚   β”œβ”€β”€ segmentedBarChart.js
β”‚   β”‚   β”œβ”€β”€ semiCircleChart.js
β”‚   β”‚   β”œβ”€β”€ smoothLineChart.js
β”‚   β”‚   β”œβ”€β”€ stackedBarChart.js
β”‚   β”‚   β”œβ”€β”€ steppedLineChart.js
β”‚   β”‚   β”œβ”€β”€ streamGraph.js
β”‚   β”‚   β”œβ”€β”€ sunburstChart.js
β”‚   β”‚   β”œβ”€β”€ treemapChart.js
β”‚   β”‚   β”œβ”€β”€ verticalLineChart.js
β”‚   β”‚   β”œβ”€β”€ violinChart.js
β”‚   β”‚   └── waterfallChart.js
β”‚   β”œβ”€β”€ package.json
β”‚   └── server.js
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/      # React-Komponenten
β”‚   β”‚   β”‚   β”œβ”€β”€ Layout/
β”‚   β”‚   β”‚   β”œβ”€β”€ ChartPreview.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ChartConfigPanel.jsx
β”‚   β”‚   β”‚   └── ExportPanel.jsx
β”‚   β”‚   β”œβ”€β”€ hooks/           # Custom React Hooks
β”‚   β”‚   β”œβ”€β”€ services/        # API-Services
β”‚   β”‚   β”œβ”€β”€ App.jsx
β”‚   β”‚   └── main.jsx
β”‚   β”œβ”€β”€ package.json
β”‚   └── vite.config.js
β”‚
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ screenshots/            # Screenshots der Anwendung
β”‚   β”œβ”€β”€ README.md          # Detaillierte Screenshot-Beschreibungen
β”‚   └── *.png              # Screenshots verschiedener Diagrammtypen
β”œβ”€β”€ Guideline.md            # Technische Spezifikation
└── README.md

πŸ”§ Eigene Chart-Module erstellen

Neue Diagrammtypen kΓΆnnen durch HinzufΓΌgen eines Moduls in backend/modules/ erstellt werden:

// backend/modules/customChart.js
import Chart from 'chart.js/auto';

export default {
  id: "custom",
  name: "Mein Custom Chart",
  library: "chartjs",
  configSchema: {
    labels: { type: "array", default: ["A", "B", "C"] },
    values: { type: "array", default: [10, 20, 30] },
    colors: { type: "array", default: ["#FF0000", "#00FF00", "#0000FF"] },
    backgroundColor: { type: "string", default: "#0F172A" },
    width: { type: "number", default: 800 },
    height: { type: "number", default: 600 },
    options: {
      showLegend: { type: "boolean", default: true }
    }
  },
  render: async (ctx, config, canvas) => {
    // Chart.js Rendering-Logik
    const chartConfig = {
      type: 'bar', // oder 'line', 'pie', etc.
      data: { /* ... */ },
      options: { /* ... */ }
    };
    new Chart(ctx, chartConfig);
  }
};

Nach dem HinzufΓΌgen wird das Modul automatisch geladen und in der UI verfΓΌgbar sein.

API-Dokumentation

Methode Route Beschreibung
GET /api/charts Liste aller verfΓΌgbaren Diagrammtypen
POST /api/render Rendert ein Diagramm
POST /api/export Exportiert Diagramm in gewΓ€hltem Format
GET /api/plugins/reload LΓ€dt Chart-Module neu
GET /health Health-Check

Beispiel: Export Request

POST /api/export
Content-Type: application/json

{
  "chartType": "bar",
  "config": {
    "labels": ["Jan", "Feb", "MΓ€r"],
    "values": [10, 20, 30],
    "colors": ["#4ADE80", "#22D3EE", "#F472B6"],
    "backgroundColor": "#0F172A",
    "width": 800,
    "height": 600
  },
  "format": "png",
  "transparent": false
}

🎨 Design-System

Farbpalette

Element Farbe Hex
Hintergrund Dunkel #0F172A
SekundΓ€rflΓ€che Dunkelgrau #1E293B
Akzentfarbe 1 Blau #3B82F6
Akzentfarbe 2 Cyan #22D3EE
Text Hell Weiß #F8FAFC
Text Grau Hellgrau #CBD5E1

Typografie

  • Schriftart: Inter (Google Fonts)
  • Überschriften: 600 Gewicht, 1.5-2rem
  • Fließtext: 400 Gewicht, 0.875-1rem

πŸ“ Umgebungsvariablen

Backend (.env)

PORT=3003
NODE_ENV=development

Frontend (.env)

VITE_API_URL=http://localhost:3003/api

πŸ§ͺ Testing

# Backend Tests (wenn implementiert)
cd backend
npm test

# Frontend Tests (wenn implementiert)
cd frontend
npm test

πŸ“„ Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe LICENSE Datei fΓΌr Details.

About

A modern, modular tool for creating beautiful charts and diagrams. Easily build, configure, and export charts through an intuitive web interface. Supports multiple chart types, customizable colors, and flexible export formats (PNG, JPEG, SVG, HTML). Runs containerized via Docker

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages