Eigenes Projekt · Case Study
LithoCanvas Case Study Eine Sammler-App von der Idee bis zum Backend
LithoCanvas ist unsere eigene Android-App für Mineralien- und Kunstsammlungen. Diese Case Study zeigt, wie wir sie gebaut haben: App-Architektur, Backend, Abrechnung und Datenschutz, so wie wir es auch für Kundenprojekte planen.
Die App
Vier Ansichten
Was wir gebaut haben
Die App legt Sammlungen an, erkennt Fotos auf Wunsch und synchronisiert alles mit einem eigenen Backend. Vier Entscheidungen prägen die Architektur.
-
Sammlung zuerst auf dem Gerät
Einträge, Fotos und Notizen liegen pro Konto in einer lokalen SQLite-Datenbank. Änderungen warten in einer dauerhaften Warteschlange auf die Synchronisierung, daher geht ohne Netz nichts verloren.
-
Erkennung über den eigenen Server
Ein Foto verlässt das Gerät erst nach Zustimmung. Ein Worker prüft die Anfrage, zählt Kontingente und spricht den Erkennungsanbieter an. Dessen Schlüssel stecken nie im App-Paket.
-
Abrechnung mit Serverprüfung
Gekauft wird über Google Play. Welcher Plan gilt, entscheidet das Backend nach der Prüfung des Kaufs und nicht die App.
-
Konto, Export und Löschung
Registrierung, Passwort-Wiederherstellung per E-Mail, Datenexport und Kontolöschung gehörten von Anfang an zum Umfang.
Tech Stack
im Detail
-
React Native 0.88
Bare React Native mit React 19 und TypeScript 6. Die Android-Builds laufen lokal über Gradle, ohne Cloud-Build-Dienst.
-
Expo SDK 58 Module
Kamera, Bildauswahl, Dateisystem und Benachrichtigungen kommen als einzelne Module in die App.
-
expo-sqlite + Zustand
Konto-gebundene Datenbank auf dem Gerät, dazu eine Warteschlange für ausstehende Änderungen und Löschungen.
-
Cloudflare Workers
Anmeldung, Zugriffsprüfung, Erkennungs-Proxy, Kontingente, Kaufprüfung, Medien, Export und Kontolöschung.
-
D1 + R2
Versionierte D1-Migrationen für das Schema, private R2-Buckets für die Fotos, beides in der EU.
-
react-native-iap
Google-Play-Käufe in der App, Verifizierung und Plan-Status im Worker.
-
Cloudflare Email Service
Wiederherstellungs-Mails über das send_email-Binding des Workers.
Entscheidungen, die auch bei Kundenprojekten zählen
Migration
Das Backend ist von Supabase auf Cloudflare Workers, D1 und R2 gewechselt. Wir haben die Migration geprüft und danach die alten Ressourcen abgeschaltet.
Ehrliche Ergebnisse
Die App trennt eigene Beobachtungen von maschinellen Schätzungen. Sicherheit, Herkunft und Wert eines Stücks erfindet sie nicht.
Klare Abo-Regeln
Wiederkehrende Kosten, Scan-Limits und der Stand nach einer Kündigung stehen offen in der App. Ein Probeabo, das später abbucht, gibt es nicht.