iToverDose/Software· 4 JUNI 2026 · 20:00

Browser-basierter Bookmark-Manager für 9 Dollar ohne Server – so funktioniert Squirrel

Ein Bookmark-Manager, der komplett im Browser läuft, keine Cloud benötigt und nur einmalig 9 Dollar kostet. So spart Squirrel Serverkosten und bietet trotzdem Datenschutz – mit technischer Tiefe und Trade-offs.

DEV Community5 min0 Kommentare

Die Idee klang simpel: Warum sollte ein Bookmark-Manager monatliche Gebühren verlangen, wenn Nutzer nur URLs speichern und später wiederfinden möchten? Ohne Anmeldung, ohne Abos, ohne Server. Das Ergebnis ist Squirrel – ein Tool, das vollständig im Browser läuft und lokal alle Daten speichert. Doch wie lässt sich eine solche Architektur technisch umsetzen? Und welche Herausforderungen bringt ein serverloses Design mit sich?

Kein Backend, keine Kompromisse – nur der Browser

Squirrel verzichtet bewusst auf einen eigenen Server. Das bedeutet: Es gibt keine externe Datenbank, keine API und keine Cloud, die Nutzerdaten verwaltet. Stattdessen nutzt das Tool die lokalen Speichermöglichkeiten des Browsers, konkret IndexedDB – eine dokumentenorientierte Datenbank, die direkt im Browser läuft. Selbst beim Schließen des Tabs bleiben die Bookmarks erhalten, weil sie nicht auf einem Server, sondern im Gerätespeicher liegen.

Die einzige Ausnahme bilden drei minimale externe Anfragen:

  • Der Download der Anwendung selbst über Cloudflare Pages – hier handelt es sich um statische Dateihosting-Dienste, keine serverseitige Logik.
  • Ein analyseloser Cloudflare-Beacon, der Seitenaufrufe zählt, ohne persönliche Daten zu sammeln.
  • Die Lizenzvalidierung über einen Cloudflare Worker, der Premium-Features freischaltet – der einzige serverseitige Prozess im gesamten System.

Jede dieser Anfragen ist streng begrenzt und dient ausschließlich dem Zweck der Anwendung. Alle anderen Funktionen, von der Speicherung bis zur Darstellung, laufen komplett lokal ab.

IndexedDB als Kern der Anwendung

Viele Entwickler greifen bei der Datenspeicherung auf externe Datenbanken zurück. Doch moderne Browser bieten mit IndexedDB eine leistungsstarke Alternative. Im Gegensatz zu lokalen Speicher (localStorage), der nur einfache Schlüssel-Wert-Paare in String-Form zulässt, unterstützt IndexedDB komplexe Datenstrukturen wie Objekte und Arrays – und das vollständig offline.

Squirrel nutzt vier verschiedene Stores in IndexedDB:

  • bookmarks – speichert Abschnitte und Links inklusive Metadaten wie Titel und URL.
  • settings – verwaltet Benutzereinstellungen wie Design oder Sortieroptionen.
  • autoBackups – erstellt alle 30 Minuten automatische Sicherungen.
  • dailyBackups – speichert bis zu sieben tägliche Backups (Premium-Feature).

Die Backups sind besonders wichtig, da sie einen Schutz gegen Datenverlust bieten – etwa bei einem Browser-Crash oder versehentlichen Löschungen. Für Premium-Nutzer steht zudem eine erweiterte Backup-Historie zur Verfügung.

Premium-Features ohne Nutzerkonto – wie funktioniert das?

Ein serverloses Modell wirft die Frage auf: Wie lassen sich kostenpflichtige Funktionen umsetzen, wenn es keine Nutzerkonten gibt? Die Lösung bei Squirrel ist simpel, aber nicht perfekt: Ein Cloudflare Worker dient als zentraler Lizenzmanager.

Der Prozess läuft in drei Schritten ab:

  1. Nach dem Kauf auf Gumroad erhält der Nutzer einen Lizenzschlüssel im Format BM-XXXX-XXXX-XXXX.
  2. Beim Aktivieren sendet Squirrel diesen Schlüssel an den Cloudflare Worker.
  3. Der Worker prüft die Gültigkeit des Schlüssels über die Gumroad-API und gibt eine Rückmeldung an die Anwendung.

Für eine bessere Performance wird das Ergebnis lokal zwischengespeichert – inklusive eines kryptografischen Integritätstokens. Dieser Token besteht aus einem gehashten Wert des Schlüssels und eines Zeitstempels, gesalzen mit einem versteckten Wert im Anwendungscode. Bei jedem Start prüft Squirrel diesen Cache statt einer erneuten Anfrage an den Worker. Wird der Cache manuell manipuliert, stimmt das Hash nicht mehr und der Nutzer wird wieder auf die kostenlose Version zurückgesetzt.

Die Methode ist nicht unknackbar – technisch versierte Nutzer könnten den Code analysieren und umgehen. Doch für ein Tool mit einem Preis von nur neun Dollar ist der Aufwand unverhältnismäßig hoch. Die meisten Nutzer akzeptieren die Einschränkung, zumal die Premium-Features wie tägliche Backups den Preis rechtfertigen.

Sicherheit im browserseitigen Ökosystem

Ohne Server wird der Browser zur zentralen Sicherheitsgrenze. Das erfordert eine andere Herangehensweise als bei traditionellen Webanwendungen, bei denen der Server als erste Verteidigungslinie dient.

Squirrel setzt auf mehrere Schutzmechanismen, um Angriffe zu verhindern:

  • Cross-Site-Scripting (XSS) verhindern: Alle Benutzereingaben – von Titel bis URL – werden vor der Speicherung validiert. Besonders gefährliche Protokolle wie javascript: oder data: werden abgelehnt. Zusätzlich werden Strings vor der Darstellung im DOM HTML-escaped, um Code-Injection zu blockieren.
  • Sicherheit des Cloudflare Workers: Der Worker akzeptiert Anfragen nur vom offiziellen Host squirrel.aditco.in (CORS-Einschränkung) und begrenzt die Rate von Lizenzprüfungen auf maximal 10 Versuche pro Minute pro IP-Adresse. So wird verhindert, dass Angreifer durch Brute-Force-Methoden Schlüssel erraten.
  • Sicherheits-Header in der Bereitstellung: Cloudflare Pages setzt automatisch strenge Header wie HSTS, X-Frame-Options: DENY und X-Content-Type-Options: nosniff. Diese minimieren bekannte Angriffsmuster wie Clickjacking oder MIME-Spoofing.
  • Keine externen Favicon-Dienste: In einer früheren Version wurden Favicons über Googles Dienst abgerufen – was bedeutet hätte, dass Google jede besuchte URL hätte einsehen können. Squirrel holt die Icons nun direkt von der jeweiligen Website über /favicon.ico, um die Privatsphäre der Nutzer zu wahren.

Keines dieser Maßnahmen macht die Anwendung unangreifbar – Client-seitige Sicherheit hat Grenzen. Doch für ein Tool, das mit dem Versprechen von Privatsphäre wirbt, sind diese Details entscheidend.

Minimaler Tech-Stack für maximale Unabhängigkeit

Squirrel besteht aus nur zwei JavaScript-Dateien und einem einzigen HTML-Dokument:

// app.js – Benutzeroberfläche, Logik und Interaktionen
// indexedDB.js – Datenspeicherung und -abfrage

Es gibt kein Framework, keinen komplexen Build-Prozess (außer einer Produktions-Obfuskation) und keine externen Abhängigkeiten. Warum diese radikale Vereinfachung?

  • Einzeldatei-Verteilung: Nutzer können die Anwendung als squirrel.html herunterladen und in jedem Browser öffnen – ohne Installation, ohne Internetverbindung.
  • Funktionale Einfachheit: Ein Bookmark-Manager benötigt keine reaktive Architektur wie React oder Vue. Die DOM-Manipulation ist überschaubar und lässt sich mit Vanilla JavaScript effizient umsetzen.

In der Produktion wird der Quellcode durch javascript-obfuscator verarbeitet, um den Code zu schützen und Reverse-Engineering zu erschweren. Anschließend wird alles in einer einzigen HTML-Datei gebündelt und über Cloudflare Pages bereitgestellt. Die Bereitstellung erfolgt automatisch via GitHub Actions – ein Workflow, der nach jedem Commit die neueste Version ausrollt.

Was ich beim nächsten Mal anders machen würde

Der Launch von Squirrel war ein Erfolg – doch mit etwas Abstand würde ich einige Schritte optimieren:

  • Dokumentation vor dem Produkt: Statt zunächst das Tool zu entwickeln und dann einen Artikel zu schreiben, hätte eine detaillierte technische Beschreibung vor dem Launch mehr Transparenz und Vertrauen geschaffen. Das hätte potenzielle Nutzer früher überzeugt.
  • Mehr Fokus auf Edge-Cases bei der Datenspeicherung: Obwohl IndexedDB robust ist, gibt es Szenarien wie Browser-Updates oder Cache-Löschungen, die zu Datenverlust führen können. Eine bessere Fehlerbehandlung oder eine optionale Exportfunktion hätte hier Abhilfe schaffen können.
  • Offline-first-Testing: Da die Anwendung komplett offline läuft, ist ein gründliches Testen in verschiedenen Umgebungen – etwa bei instabiler Internetverbindung – unerlässlich. Hier hätte ich mehr Zeit investieren sollen.

Squirrel beweist, dass ein serverloses Modell nicht nur möglich, sondern auch praktikabel ist – besonders für Anwendungen mit klaren, begrenzten Funktionen wie einem Bookmark-Manager. Die größten Herausforderungen lagen nicht in der Technik, sondern in der Frage, wie sich Kosten und Premium-Features ohne traditionelle Nutzerverwaltung umsetzen lassen. Für Entwickler, die ähnliche Projekte planen, bietet Squirrel wertvolle Einblicke in Trade-offs zwischen Datenschutz, Benutzerfreundlichkeit und wirtschaftlicher Nachhaltigkeit.

KI-Zusammenfassung

Squirrel, sunucu etkileşimi olmadan geliştirilmiş bir bookmark yöneticisidir. Uygulama, yerel olarak veri depolama ve güvenlik önlemleri alarak kullanıcıların verilerini korur.

Kommentare

00
KOMMENTAR SCHREIBEN
ID #08ZZEV

0 / 1200 ZEICHEN

Menschen-Check

8 + 7 = ?

Erscheint nach redaktioneller Prüfung

Moderation · Spam-Schutz aktiv

Noch keine Kommentare. Sei der erste.