Entwicklung

Mein Gold & Silber Portfolio Manager - Golang Fyne GUI Programmierung

16.03.2024

Gold & Silber Portfolio Manager

7min. Lesezeit

7min. Lesezeit

7min. Lesezeit

Der ultimative Guide zum "Gold & Silber Portfolio Manager"

Als leidenschaftlicher Softwareentwickler und Investor in Edelemtalle stand ich vor einem Dilemma.

Die verfügbaren Tools zur Verwaltung meiner Investments in Gold und Silber waren entweder kostspielig oder erfüllten nicht meine Anforderunge an Funktionalität und Benutzerfreundlichkeit.

Ich wollt eine Lösung, die mich nicht nur Echtzeitdaten liefert sondern auch mein Portfolio übersichtlich darstellt und einfach zu bedinen ist. So kam ich auf die Idee, meine eigenes Tool zu entwickeln.

Ich hatte schon viel über das Fyne-Toolkit für Go gehört und war neugierig, es auszuprobieren. Es versprach eine einfache Möglichkeit, plattformübergreifende GUI-Anwendungen zu erstellen, und das klang perfekt für mein Projekt.

Ich stellte mir eine Anwendung vor, die nicht nur funktional, sondern auch optisch ansprechend ist – etwas, das Fyne zu bieten schien.

Ich begann mit dem Entwurf der Benutzeroberfläche. Es sollte klar und intuitiv sein, mit separaten Tabs für Gold- und Silberpreise, die die aktuellen Marktdaten anzeigen. Mit ein paar Zeilen Go-Code und Fyne's Container-System war das Grundgerüst schnell erstellt:

func (app *Config) goldPricesTab() *fyne.Container {
	chart := app.getChart()
	chartContainer := container.NewVBox(chart)
	app.PriceChartContainer = chartContainer
	return chartContainer

Die nächste Herausforderung war, die Echtzeit-Preisdaten in die Anwendung zu integrieren. Ich schrieb eine Funktion, die die neuesten Preise von einer API abruft und sie in der Anwendung darstellt. Dies war ein entscheidender Teil des Puzzles, da ich als Investor immer auf dem neuesten Stand sein wollte:

func (g *Gold) GetPrices() (*Price, error) {
	if g.Client == nil {
		g.Client = &http.Client{}
	}

	url := fmt.Sprintf("https://data-asg.goldprice.org/dbXRates/%s", currency)
	req, _ := http.NewRequest("GET", url, nil)

	resp, err := g.Client.Do(req)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}

	var gold Gold
	err = json.Unmarshal(body, &gold)
	if err != nil {
		return nil, err
	}

	return &gold.Prices[0], nil

Ich wollte sicherstellen, dass die Anwendung auch dann nützlich ist, wenn keine Internetverbindung besteht. Also fügte ich eine Fallback-Option hinzu, die Standardbilder anzeigt, falls die Diagramme nicht heruntergeladen werden können.

Dies gab mir die Gewissheit, dass ich immer Zugriff auf meine Daten habe, online oder offline.

Nachdem ich Monate mit der Entwicklung verbracht hatte, war es endlich soweit:

Mein "Gold & Silber Portfolio Manager" war bereit für den Einsatz. Ich war begeistert, als ich sah, wie meine Vision Wirklichkeit wurde. Die Anwendung funktionierte einwandfrei und sah auf jeder Plattform großartig aus, dank Fyne und Go.

Die Entwicklung des "Gold & Silber Portfolio Managers" war eine lohnende Reise, die mir zeigte, wie mächtig die Kombination aus einem klaren Ziel und den richtigen Werkzeugen sein kann. Mit Fyne und Go konnte ich ein Tool schaffen, das nicht nur meinen Bedürfnissen entsprach, sondern auch das Potenzial hatte, die Art und Weise, wie Menschen ihre Edelmetallinvestitionen verwalten, zu verändern.

Den komplette Code und die Applikation könnt ihr auf meinem Github finden:

https://github.com/dome385/goGoldWatch/

Follow Along
#buildInPublic

All rights Reserved 2023

All rights Reserved 2023

All rights Reserved 2023