Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

Greenhouse Tracker

Web-App für Hypixel Skyblock (Garden / Greenhouse) – läuft komplett auf Val Town.

App öffnen

Was die App macht

  • Alle 3 Greenhouses untereinander, mit Live-Countdown pro Pflanze
  • Grün = „reift in …", Rot = „Verfall in …", Blau = Timer ist abgelaufen und zählt jetzt nach oben (+1h 20m)
  • Unter jedem Countdown steht in Grau die genaue Uhrzeit des Ereignisses (reift am 17.09. 08:14) – auch nach dem Verfall bleibt sie stehen, damit du weißt, wann es passiert ist
  • Oben rechts der Next-Stage-Timer mit Zähler und /+ zum manuellen Korrigieren (der Zähler zählt pro durchgelaufener Wachstumsstufe automatisch eins hoch)
  • Oben unter der Überschrift eine graue Box mit den nächsten Ereignissen und deren exakter Zeit
  • Unten ein Notizen-Feld (speichert automatisch)
  • Cronjob prüft im Hintergrund und schickt Pushes via ntfy.sh
  • Wenn das „12 Unique Crops"-Setup verfällt, rechnet die App automatisch alle laufenden Pflanzungen auf die langsamere Wachstumsgeschwindigkeit um

Dateien

DateiTypZweck
site.http.tsHTTPAPI + liefert das Frontend aus
public/index.htmlDateiMarkup + Styles
public/app.tsDateiClient-Logik (wird als /app.ts ausgeliefert)
db.tsModulSchema/Migration + Timer-Mathematik
ntfy.tsModulPush-Versand an ntfy.sh
reminder.cron.tsIntervalReife/Verfall prüfen + Pushes

ntfy einrichten (wichtig!)

  1. Installier die ntfy App auf dem Handy (Play Store / App Store, kostenlos).
  2. Denk dir einen langen, einzigartigen Topic-Namen aus, z. B. greenhouse-decay-k9x2mQ7p (nicht erratbar, damit niemand sonst mitliest).
  3. In der ntfy-App: Server auf https://ntfy.sh lassennicht die Val-URL eintragen! Diese Web-App ist kein ntfy-Server, sie schickt nur Nachrichten an ntfy.sh. Trägt man hier die Val-URL ein, kommt WebSocketNotSupportedException: Expected HTTP 101 response but was '404'.
  4. + → Topic abonnieren → genau den Topic-Namen eingeben (Groß-/Kleinschreibung zählt).
  5. In der Web-App unter „⚙️ Einstellungen" denselben Topic-Namen eintragen und speichern.
  6. „Test-Push senden" – die Antwort zeigt jetzt direkt, ob ntfy den Push angenommen hat ({"ok":true,"status":200}) oder was schiefging.

Emojis dürfen nicht in HTTP-Headern stehen (ntfy-Titel), sonst bricht fetch() mit not a valid ByteString ab. ntfy.ts filtert Header deshalb auf ASCII und packt Emojis in den Nachrichtentext.

Farming Contests (zweite Seite)

Oben im Header gibt es zwei Tabs: 🌿 Tracker und 🌾 Contests. Man kann auch einfach nach links wischen (rechts von der Tracker-Seite liegt die Contest-Seite) und mit nach rechts wischen wieder zurück.

Die Contest-Seite zeigt die nächsten ~12 Jacob's Farming Contests mit:

  • SkyBlock-Datum (z. B. „Late Autumn 9th, Year 514")
  • genauer Start-/Endzeit in deiner lokalen Zeitzone
  • Countdown („in 1h 12m"), laufende Contests sind grün markiert
  • die 3 Crops des jeweiligen Contests

Datenquelle: jacobs.strassburger.dev – die Liste wird serverseitig 30 Minuten gecacht (/api/contests), damit die fremde API nicht belastet wird. Der Zeitplan wird nur einmal pro SkyBlock-Jahr neu eingetragen; nach dem Year-Event kann die Quelle kurzzeitig leer sein.

Timer korrigieren

Läuft die Web-App dem echten Spiel auseinander: auf die Pflanze tippen → im Sheet „Timer korrigieren" mit −30m / −10m / −5m / −1m / +1m / +5m / +10m / +30m. Bei einer wachsenden Pflanze verschiebt das den Wachstums-Timer, bei einer ausgewachsenen den Verfalls-Timer.

Im gleichen Sheet:

  • Verbleibende Wachstumsstufen neu setzen (Wert wie im Plant Diagnostics Tool)
  • Verfalls-Timer setzen (Tage/Stunden/Minuten)
  • Ausgewachsen / Wieder wachsend umschalten
  • 🗑️ Entfernen = geerntet/verfallen, raus aus der Liste

Next-Stage-Timer

Der Timer oben rechts läuft über die eingestellte Stage-Dauer und zählt bei jeder durchgelaufenen Stufe den Zähler eins hoch. Passt er nicht zum Spiel:

  • / + neben der Zahl = Zähler manuell um 1 korrigieren
  • „Stage-Timer neu starten" in den Einstellungen = Timer auf „jetzt + eine Stage"

Einstellungen (⚙️)

  • Stage-Dauer mit/ohne Bonus: Sekunden pro Wachstumsstufe, wie im Plant Diagnostics Tool angezeigt (Baseline ohne Bonus 4h = 14400s; mit vollem Bonus ca. 1h44m20s = 6260s)
  • Erinnerung X Stunden vorher: Standard 12h

Wichtig zu wissen

  • Alles läuft serverseitig auf Val Town – die Seite muss nicht geöffnet sein, damit Pushes ankommen.
  • Die App kann nicht selbst erkennen, wann im Spiel eine der 12 Unique Crops stirbt – diese Pflanze wie jede andere mit Verfallsdauer eintragen und als „Bonus-Quelle" markieren. Sobald ihr Timer abläuft, übernimmt die App den Rest.