Danke dass du bei FlipsiForge mitmachen möchtest! Dieser Guide erklärt wie du beitragen kannst — egal ob Code, Übersetzungen, Tests oder Doku.
FlipsiForge ist eine cross-platform 3D-Druck Management Software (.NET 10 / Avalonia UI). Sie ist Teil des TechFlipsi Ökosystems und steht unter GPL-3.0 Lizenz.
| Technologie | Verwendung |
|---|---|
| .NET 10 | Laufzeit |
| Avalonia UI 12 | Cross-Platform UI (Windows + Linux) |
| ASP.NET Core | Server (Full + Lite Modus) |
| CommunityToolkit.Mvvm 8.4 | MVVM-Pattern |
| ONNX Runtime | KI lokal (keine Cloud) |
| Serilog | Logging |
| SkiaSharp | G-Code-Visualisierung |
| Entity Framework Core | Datenbank (Server-Modus) |
FlipsiForge/
├── src/
│ ├── FlipsiForge.Core/ # Gemeinsamer Kern (Models, Services, Drucker-Protokolle)
│ ├── FlipsiForge.Desktop/ # Avalonia UI Desktop-App
│ ├── FlipsiForge.Server/ # ASP.NET Core Server (Full/Lite)
│ └── FlipsiForge.MockMoonraker/ # Mock-Server für Tests/Demos
├── CONCEPT.md # Gesamtkonzept
├── IMPLEMENTATION.md # Implementierungs-Details
├── TESTING.md # Test-Guide für Tester
└── CONTRIBUTING.md # Diese Datei
- .NET 10 SDK
- Git
- Ein Code-Editor (VS Code, Rider, Visual Studio)
- Optional: Avalonia UI Extension für deinen Editor
git clone https://github.com/TechFlipsi/FlipsiForge.git
cd FlipsiForge
dotnet build# Simulierten Drucker starten
dotnet run --project src/FlipsiForge.MockMoonraker -- --scenario printingSiehe TESTING.md für alle Szenarien und Details.
Du brauchst keine Programmierkenntnisse um zu helfen! FlipsiForge lebt von Feedback aus der Community — jeder Beitrag zählt, egal ob Code oder nicht.
| Beitrag | Wie | Aufwand |
|---|---|---|
| 💡 Feature-Wünsche | Issue eröffnen: "Ich wünsche mir..." — beschreibe was dir im 3D-Druck-Alltag fehlt | 5 Min |
| 🐛 Bug-Reports | Issue eröffnen: "Bei X passiert Y" — Screenshot + Beschreibung reicht | 5 Min |
| 📝 Feedback zur UI | Issue: "Das ist unübersichtlich" oder "Das sollte größer sein" | 5 Min |
| 🌐 Übersetzungen | Muttersprache übersetzen — nur JSON-Dateien, keine Code-Erfahrung nötig | 30 Min |
| 📖 Doku verbessern | Rechtschreibung, Formulierungen, fehlende Erklärungen | 10 Min |
| 🧪 Testen | Mock-Server ausprobieren, Szenarien durchklicken, Bugs melden | 20 Min |
| 🤔 Ideen & Konzepte | "Was wäre wenn FlipsiForge auch X könnte?" — Issue eröffnen | 10 Min |
| 🎨 Design-Vorschläge | Mockup zeichnen/skizzieren, als Issue hochladen | 15 Min |
Jeder Feature-Wunsch ist willkommen. Egal wie klein oder "unrealistisch" — schreib es auf. Wir entscheiden dann gemeinsam was machbar ist. Manchmal ist eine scheinbar unmögliche Idee der beste Anstoß.
Gehe zu Issues und schreibe:
## 💡 Feature-Wunsch: [Kurzer Titel]
### Was ich mir wünsche
[Beschreibe in eigenen Worten was dir fehlt — keine Technik-Sprache nötig]
### Warum das helfen würde
[Wie würde es deinen 3D-Druck-Alltag verbessern?]
### Wie es aussehen könnte
[Optional: Skizze, Screenshot von anderer Software, oder einfach beschreiben]Fertig. Kein Code, kein PR, kein Fork nötig. Wir kümmern uns um den Rest.
Was: Views erstellen, Design verbessern, Dark Mode, Layout, Animationen
Wo:
src/FlipsiForge.Desktop/Views/— AXAML Viewssrc/FlipsiForge.Desktop/ViewModels/— ViewModels (MVVM)- Theme: Dark Void
#050507+ Ember#ff6600
Beispiel — neuer View:
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Margin="16">
<TextBlock Text="Mein neuer View" FontSize="20" FontWeight="Bold"/>
</StackPanel>
</UserControl>Was: Core-Services, Drucker-Protokolle, Server-API, KI-Integration
Wo:
src/FlipsiForge.Core/Services/— Geschäftslogiksrc/FlipsiForge.Core/Services/Printing/— Drucker-Protokollesrc/FlipsiForge.Server/— API-Controller, Services
Neues Drucker-Protokoll hinzufügen:
- Erstelle Klasse in
Core/Services/Printing/dieIPrinterConnectionimplementiert - Registriere in
PrinterConnectionManager - Füge Protokoll zum
PrinterProtocolEnum inCore/Models/Enums.cshinzu - Teste mit Mock oder echtem Drucker
Was: Neue Drucker-Protokolle (RepRapFirmware, Duet, Klipper-Extensions), Verbesserung bestehender
Bestehende Protokolle:
MoonrakerConnection— Klipper/Moonraker (HTTP + WebSocket)BambuConnection— Bambu Lab (MQTT)PrusaLinkConnection— Prusa (HTTP)OctoPrintConnection— OctoPrint (HTTP)MarlinConnection— Marlin (Serial)
Was: JSON-Sprachdateien erweitern und übersetzen
Wie: Siehe i18n-Ordner. Jede Sprache hat ein JSON-File. Keine Code-Erfahrung nötig — nur Muttersprache!
Geplante Sprachen: DE, EN, FR, ES, IT, PL, NL, RU, TR, AR, PT, ZH, JA
Regel: Wenn die Software auf Deutsch eingestellt ist, sollen keine englischen Wörter sichtbar sein. Gleiches gilt für jede andere Sprache.
Was: Szenarien erweitern, Bug-Reports, Edge-Case-Tests
Wo: src/FlipsiForge.MockMoonraker/ — Mock-Server
Neues Szenario hinzufügen:
case "heating":
_state = "startup";
_hotendTemp = 150m;
_targetHotendTemp = 210m;
break;Was: README, Setup-Guides, API-Doku, Benutzerhandbuch
Wo: Root-Verzeichnis und docs/ (wenn vorhanden)
Schau in den offenen Issues oder erstelle ein neues für deine Idee.
# Fork auf GitHub erstellen, dann:
git clone https://github.com/<dein-username>/FlipsiForge.git
cd FlipsiForge
git remote add upstream https://github.com/TechFlipsi/FlipsiForge.git
# Branch erstellen
git checkout -b feat/mein-feature
# oder
git checkout -b fix/mein-bugfix- Halte dich an den bestehenden Code-Stil
- Verwende
CommunityToolkit.Mvvmfür ViewModels ([ObservableProperty],[RelayCommand]) - Alle öffentlichen Methoden brauchen XML-Doku-Kommentare (
/// <summary>) - Fehler defensiv behandeln — kein
throwin UI-Code
# Bauen
dotnet build
# Mock-Server starten
dotnet run --project src/FlipsiForge.MockMoonraker -- --scenario printing
# Desktop-App testen
dotnet run --project src/FlipsiForge.Desktopgit add -A
git commit -m "feat: kurze Beschreibung
Optional: ausführlichere Beschreibung"Commit-Format:
feat:— Neues Featurefix:— Bug-Fixdocs:— Dokumentationrefactor:— Refactoringtest:— Testschore:— Sonstiges
git push origin feat/mein-featureDann auf GitHub einen Pull Request erstellen mit:
- Titel: Kurze Beschreibung
- Body: Was hast du gemacht? Warum? Wie testen?
- Issue verlinken:
Fixes #123oderRelates to #456
// ✅ Richtig
public sealed class MeinService
{
private readonly ILogger<MeinService> _logger;
/// <summary>
/// Macht etwas Wichtiges.
/// </summary>
public async Task<bool> MacheEtwasAsync(string parameter)
{
// ...
}
}
// ❌ Falsch — keine Doku, public field
public class meinService {
public string Value;
}- Nullable ist enabled — behandele
nullexplizit - Async für alle I/O-Operationen (HTTP, DB, File)
- Sealed für Klassen die nicht vererbt werden sollen
- XML-Doku für alle öffentlichen Members
- Defensive Fehlerbehandlung — keine ungecatchten Exceptions in UI-Code
- Keine Magic Numbers — Konstanten oder Enums verwenden
Alle Beiträge stehen unter GPL-3.0. Mit dem Einreichen eines PR stimmst du zu dass deine Änderungen unter dieser Lizenz veröffentlicht werden.
- Sei respektvoll und freundlich
- Keine Diskriminierung — egal wegen was
- Hilf Neulingen — jeder hat mal angefangen
- Kritik ist ok, aber sachlich und konstruktiv
- Frag wenn du etwas nicht verstehst — niemand beisst
- Discord: discord.gg/zHPhQ7EaqH
- Issues: GitHub Issues
- Maintainer: TechFlipsi
Danke für deinen Beitrag! Jeder hilft, FlipsiForge besser zu machen. 🤝