Άνοιγμα εφαρμογής

Πολιτική Απορρήτου

Η live.tips δεν έχει cookies, δεν έχει analytics και δεν σε παρακολουθεί, και λειτουργεί χωρίς κανέναν απολύτως λογαριασμό. Αν επιλέξεις να συνδεθείς, εδώ είναι ακριβώς τι αποθηκεύεται, πού, από ποιον και για πόσο.

Η live.tips είναι ένα open-source βάζο φιλοδωρημάτων για καλλιτέχνες. Το τρέχει ο Nikita Rabykin, ένας μεμονωμένος προγραμματιστής, όχι εταιρεία. Αν κάτι από τα παρακάτω σε απασχολεί, γράψε στο [email protected] — σε αυτή τη διεύθυνση απαντά άνθρωπος.

Αυτή η πολιτική είναι ειλικρινής ακόμη και στα βαρετά σημεία. Προτιμούμε να πούμε «κρατάμε το όνομά σου για όσο κρατάς το συγκρότημα» παρά να ισχυριστούμε ότι δεν κρατάμε τίποτα και να πέσουμε έξω.

Η σύντομη εκδοχή

  • Ο λογαριασμός είναι προαιρετικός. Η εφαρμογή λειτουργεί χωρίς κανέναν απολύτως λογαριασμό, και αυτό εξακολουθεί να είναι η προεπιλογή. Αν θέλεις τα συγκροτήματά σου και το ιστορικό σου σε μια δεύτερη συσκευή, μπορείς να συνδεθείς — και τότε ένα μέρος τους αποθηκεύεται σε διακομιστή, και περισσότερα από πριν. Ποιο είναι ποιο, το εξηγούμε παρακάτω.
  • Χωρίς cookies. Ούτε ένα, πουθενά.
  • Χωρίς analytics, χωρίς ιχνηλάτηση, χωρίς διαφημίσεις, χωρίς scripts τρίτων σε αυτόν τον ιστότοπο.
  • Δεν αγγίζουμε ποτέ τα χρήματά σου. Τα φιλοδωρήματα πάνε κατευθείαν από τον θαυμαστή στον προσωπικό λογαριασμό Stripe, Revolut, MobilePay ή Monzo του καλλιτέχνη. Δεν υπάρχει ποτέ υπόλοιπο live.tips.
  • Χωρίς λογαριασμό, η εφαρμογή επικοινωνεί μόνο με το Stripe — με κανέναν διακομιστή live.tips. Αν συνδεθείς, αυτό αλλάζει: το κλειδί σου στο Stripe μετακινείται στον διακομιστή μας και το Stripe αναφέρει τα φιλοδωρήματά σου σε εμάς, ώστε να μπορούμε να τα βάλουμε στις άλλες σου συσκευές. Αυτό είναι το τίμημα της σύνδεσης, ειπωμένο ειλικρινά, και το εξηγούμε πλήρως παρακάτω.
  • Οι push ειδοποιήσεις είναι κάτι νέο, προαιρετικό, και μόνο για συνδεδεμένους λογαριασμούς. Τίποτα δεν στέλνεται σε μια συσκευή που δεν τις ενεργοποίησε ποτέ, και σε μια συσκευή χωρίς λογαριασμό δεν στέλνεται ποτέ καμία.
  • Οι διακομιστές που τρέχουμε βρίσκονται στο Firebase της Google. Υπάρχουν αν ένας καλλιτέχνης ενεργοποιήσει το Revolut, το MobilePay ή το Monzo — ή αν συνδεθεί.

Αυτός ο ιστότοπος

Ο ιστότοπος είναι στατικός και φιλοξενείται στο GitHub Pages. Ως πάροχος φιλοξενίας, το GitHub λαμβάνει τη διεύθυνση IP και το user-agent του browser όποιου φορτώνει μια σελίδα — πρόκειται για συνηθισμένη καταγραφή διακομιστή, συμβαίνει προτού τρέξει οποιοσδήποτε δικός μας κώδικας, και δεν μπορούμε να την απενεργοποιήσουμε. Το GitHub τα επεξεργάζεται βάσει της δικής του δήλωσης απορρήτου. Εμείς δεν διαβάζουμε αυτά τα αρχεία καταγραφής και το GitHub δεν μας τα δείχνει.

Πέρα από αυτό, οι σελίδες που διαβάζεις δεν φορτώνουν τίποτα από κανέναν άλλο: οι γραμματοσειρές, τα εικονίδια και οι εικόνες σερβίρονται από την ίδια τη live.tips. Δεν υπάρχει Google Analytics, δεν υπάρχει tag manager, δεν υπάρχει pixel, δεν υπάρχει ενσωματωμένο widget.

Ο ιστότοπος αποθηκεύει δύο τιμές στο localStorage του browser σου, και τις δύο τις ορίζεις εσύ, και οι δύο είναι αναγνώσιμες μόνο από αυτόν τον ιστότοπο, και καμία δεν στέλνεται ποτέ πουθενά:

Κλειδί Τι θυμάται
lt-landing-theme αν διάλεξες φωτεινά, σκοτεινά ή αυτόματα χρώματα
lt-langbar-dismissed ότι έκλεισες το banner «διαθέσιμο και στη γλώσσα σου»

Καθαρίζοντας την αποθήκευση του browser σου, διαγράφονται. Δεν είναι cookies, δεν μοιράζονται με κανέναν και δεν ταυτοποιούν κανέναν.

Η εφαρμογή έχει δύο λειτουργίες, και η διαφορά τους είναι όλη η ιστορία

Όλα τα παρακάτω κρέμονται από ένα ερώτημα: έχεις συνδεθεί;

Λειτουργία πρώτη — χωρίς λογαριασμό. Ακόμη η προεπιλογή, ακόμη αμετάβλητη.

Η εφαρμογή τρέχει στη συσκευή του ίδιου του καλλιτέχνη, και ό,τι γνωρίζει ζει εκεί:

  • Το περιορισμένο κλειδί Stripe αποθηκεύεται στο keychain της συσκευής (iOS/macOS Keychain, Android Keystore) και στέλνεται αποκλειστικά στο api.stripe.com.
  • Το ιστορικό φιλοδωρημάτων, το ιστορικό συνεδριών, ο στόχος, η λίστα αιτημάτων τραγουδιών και οι ρυθμίσεις της εφαρμογής αποθηκεύονται στον τοπικό αποθηκευτικό χώρο της συσκευής. Αυτό περιλαμβάνει τα ονόματα και τα μηνύματα που επισυνάπτουν οι θαυμαστές στα φιλοδωρήματά τους.
  • Η απεγκατάσταση της εφαρμογής τα διαγράφει όλα. Δεν υπάρχει αντίγραφο ασφαλείας στο cloud από τη δική μας πλευρά, γιατί σε αυτή τη λειτουργία δεν υπάρχει cloud από τη δική μας πλευρά.

Εμείς δεν λαμβάνουμε τίποτα από αυτά. Η εφαρμογή δεν περιλαμβάνει κανένα SDK analytics, κανέναν αναφορέα crash και κανέναν διαφημιστικό κώδικα — κανένα, ούτε καν απενεργοποιημένο. (Οι push ειδοποιήσεις υπάρχουν, αλλά είναι λειτουργία για συνδεδεμένους και απενεργοποιημένες μέχρι να τις ενεργοποιήσεις — δες Λειτουργία δεύτερη. Σε μια συσκευή χωρίς λογαριασμό δεν στέλνεται ποτέ καμία.)

Δύο διευκρινίσεις, ώστε ο ισχυρισμός «δεν μιλάει σε κανέναν» να παραμείνει ακριβώς αληθής:

  • Η εφαρμογή κατεβάζει ισοτιμίες συναλλάγματος μία φορά την ημέρα από δημόσια API ισοτιμιών (frankfurter.dev, open.er-api.com, currency-api.pages.dev). Πρόκειται για απλά αιτήματα για μια δημόσια λίστα ισοτιμιών. Δεν μεταφέρουν καμία πληροφορία για εσένα, τον καλλιτέχνη ή κάποιο φιλοδώρημα — αλλά, όπως κάθε αίτημα στο web, αποκαλύπτουν τη διεύθυνση IP σου σε αυτές τις υπηρεσίες.
  • Αν χρησιμοποιείς την έκδοση για browser της εφαρμογής, ο browser σου την κατεβάζει από τον στατικό μας πάροχο φιλοξενίας (δες Αυτός ο ιστότοπος παραπάνω).

Λειτουργία δεύτερη — συνδέθηκες. Τότε κάποια δεδομένα φεύγουν από τη συσκευή, επίτηδες.

Η σύνδεση είναι μια συνειδητή πράξη. Τίποτα δεν σε συνδέει στη θέση σου, και τίποτα στην εφαρμογή δεν παύει να λειτουργεί αν δεν συνδεθείς ποτέ. Συνδέεσαι επειδή θέλεις μια δεύτερη συσκευή: το τηλέφωνο στην τσέπη σου και το tablet πάνω στη σκηνή να δείχνουν την ίδια βραδιά, τα ίδια συγκροτήματα, το ίδιο ιστορικό.

Αυτό δουλεύει μόνο αν τα κρατά ένας διακομιστής. Άρα τα κρατά, και αυτό είναι το τίμημα της δεύτερης συσκευής, ειπωμένο ειλικρινά.

Ο διακομιστής είναι το Firebase, δηλαδή η Google. Υπάρχουν τρεις τρόποι να έχεις λογαριασμό:

  • Σύνδεση με Apple ή Σύνδεση με Google — το Firebase Auth λαμβάνει ό,τι παραδίδει ο πάροχος: ένα αναγνωριστικό χρήστη (uid) και, συνήθως, μια διεύθυνση email και ένα όνομα. (Με την Apple μπορείς να κρύψεις το email σου· τότε η Apple μάς δίνει μια διεύθυνση αναμετάδοσης στη θέση του, και παραδίδει το όνομά σου μόνο την πρώτη κιόλας φορά που συνδέεσαι.)
  • Λογαριασμός επισκέπτη — ένας ανώνυμος λογαριασμός χωρίς email και χωρίς όνομα. Συγχρονίζει και μπορεί να ανακληθεί, αλλά δεν υπάρχει τίποτα με το οποίο να τον ανακτήσεις αν χάσεις τη συσκευή. Είναι ένα uid και τίποτα άλλο. Ένας λογαριασμός επισκέπτη δεν μπορεί να χρησιμοποιήσει τη φύλαξη του κλειδιού Stripe στην πλευρά του διακομιστή ούτε τις push ειδοποιήσεις που περιγράφονται παρακάτω, γιατί και τα δύο χρειάζονται έναν λογαριασμό που μπορούμε να σου παραδώσουμε πίσω.

Μόλις συνδεθείς, ο λογαριασμός αποκτά τη δική του ιδιωτική γωνιά στη βάση δεδομένων Cloud Firestore της Google, στο users/<your uid>/. Οι κανόνες ασφαλείας παραχωρούν αυτή τη γωνιά σε αυτό το uid και σε κανέναν άλλον — κανένας άλλος λογαριασμός δεν μπορεί να τη διαβάσει, ούτε μαντεύοντας URL. Μέσα της:

Τι Γιατί βρίσκεται εκεί
Τα συγκροτήματά σου — ονόματα, ρυθμίσεις για το βάζο φιλοδωρημάτων και τις μεθόδους πληρωμής, κείμενο αφίσας, στόχοι, και η λίστα αιτημάτων τραγουδιών σου για να υπάρχει ένα συγκρότημα σε κάθε συσκευή στην οποία συνδέεσαι
Οι ρυθμίσεις της εφαρμογής, συμπεριλαμβανομένων των προτιμήσεών σου για τις ειδοποιήσεις ώστε μια συσκευή που προσθέτεις να είναι ήδη ρυθμισμένη
Εγγραφές συνεδριών και ιστορικό φιλοδωρημάτων — συμπεριλαμβανομένων των ονομάτων και των μηνυμάτων που επισυνάπτουν οι θαυμαστές στα φιλοδωρήματά τους, και όποιου τραγουδιού ζήτησε ένας θαυμαστής γιατί αυτό ακριβώς το ιστορικό ζήτησες να βλέπεις στην άλλη συσκευή
Η ζωντανή συνεδρία που τρέχει αυτή τη στιγμή ώστε μια δεύτερη οθόνη να μπορεί να μπει στο αποψινό σετ
Οι συσκευές σου — το όνομα που δίνει η καθεμιά στον εαυτό της («iPhone του Nikita»), η πλατφόρμα και το μοντέλο της, η γλώσσα διεπαφής της, πότε εμφανίστηκε πρώτη και τελευταία φορά, και (αν ενεργοποίησες τις ειδοποιήσεις) ένα push token ώστε οι Ρυθμίσεις → Ασφάλεια να μπορούν να τις απαριθμήσουν, ώστε μια ειδοποίηση να φτάνει στη σωστή συσκευή στη σωστή γλώσσα, και να μπορείς να ανακαλέσεις κάποια
Ένα μικρό έγγραφο προφίλ — το όνομα λογαριασμού που διάλεξες και τον πάροχο που χρησιμοποίησες ώστε ο εναλλάκτης λογαριασμών να μπορεί να το επισημάνει
Μια ροή καμπάνας — μια λίστα με όριο από πρόσφατα φιλοδωρήματα και αιτήματα τραγουδιών που έφτασαν όσο δεν έτρεχε κανένα σετ ώστε να προλαβαίνεις ό,τι έχασες

Και τώρα το σημαντικό, χωρίς περιστροφές: χωρίς λογαριασμό, το όνομα και το μήνυμα ενός θαυμαστή δεν φεύγουν ποτέ από τη συσκευή του καλλιτέχνη. Με λογαριασμό, αποθηκεύονται στους διακομιστές της Google κάτω από το uid του καλλιτέχνη, ως μέρος του δικού του συγχρονισμένου ιστορικού, και — όπως εξηγούν οι επόμενες δύο ενότητες — είναι πλέον ο διακομιστής μας που τα γράφει εκεί. Κανένας άλλος λογαριασμός δεν μπορεί να τα διαβάσει, εμείς δεν τα κοιτάμε, και τίποτα δεν εξάγεται από αυτά — αλλά είναι εκεί, και μένουν εκεί για όσο υπάρχει το συγκρότημα, και καλό είναι να το ξέρεις πριν συνδεθείς.

Η αποσύνδεση επαναφέρει τη συσκευή στην τοπική λειτουργία. Δεν διαγράφει τα δεδομένα του λογαριασμού — δες Πώς διαγράφονται τα πράγματα, παρακάτω.

Το κλειδί σου στο Stripe, όταν συνδέεσαι, μετακινείται στον διακομιστή μας

Αυτή είναι η μεγαλύτερη αλλαγή, και αυτή που αξίζει περισσότερο να διαβάσεις.

Χωρίς λογαριασμό, το περιορισμένο κλειδί σου στο Stripe δεν φεύγει ποτέ από τη συσκευή σου. Αυτή είναι η Λειτουργία πρώτη, και παραμένει αμετάβλητη.

Όταν συνδέεσαι, όντως φεύγει — σε εμάς. Το κλειδί κρυπτογραφείται (ένα κλειδί AES-256 ανά μυστικό, τυλιγμένο με τη σειρά του από το Google Cloud KMS) και αποθηκεύεται στην πλευρά του διακομιστή, σε ένα σημείο που κανείς δεν μπορεί να το διαβάσει ξανά — ούτε άλλος λογαριασμός, ούτε καν εσύ. Ξεσφραγίζεται μόνο μέσα στις Cloud Functions μας, χρησιμοποιείται για να μιλήσουμε στο Stripe για λογαριασμό σου, και δεν παραδίδεται ποτέ ξανά σε συσκευή.

Επειδή το κλειδί ζει τώρα σε εμάς, το Stripe αναφέρει τα φιλοδωρήματά σου απευθείας στον διακομιστή μας: καταχωρούμε ένα webhook στον δικό σου λογαριασμό Stripe, και το Stripe ειδοποιεί αυτό το webhook κάθε φορά που πληρώνεται ένα φιλοδώρημα. Η συνάρτησή μας γράφει το φιλοδώρημα στο ιστορικό του λογαριασμού σου (δες παρακάτω). Η εφαρμογή σου δεν ρωτάει πλέον επανειλημμένα το Stripe για έναν συνδεδεμένο λογαριασμό· φτάνει στο Stripe μόνο μέσα από μια στενή, καθορισμένη λίστα λειτουργιών στον διακομιστή μας (δημιουργία του συνδέσμου φιλοδωρήματός σου, δημιουργία ενός συνδέσμου αιτήματος τραγουδιού, και ανάγνωση των δικών σου φιλοδωρημάτων για συμφωνία).

Άρα, ειπωμένο χωρίς ευφημισμούς: για έναν συνδεδεμένο λογαριασμό υπάρχει πλέον ένας διακομιστής live.tips στη διαδρομή ανάμεσα στο Stripe και το ιστορικό σου. Εξακολουθούμε να μην αγγίζουμε ποτέ τα χρήματα — ένα φιλοδώρημα με κάρτα δημιουργείται στον λογαριασμό σου Stripe, κάθεται στο υπόλοιπό σου Stripe και εξοφλείται με το πρόγραμμά σου Stripe, ακριβώς όπως πριν. Αυτό που άλλαξε είναι η διαδρομή των δεδομένων, όχι η διαδρομή των χρημάτων. Αν δεν συνδεθείς ποτέ, τίποτα από αυτά δεν ισχύει και η εφαρμογή εξακολουθεί να επικοινωνεί κατευθείαν με το api.stripe.com και με κανέναν άλλον.

Προσθήκη συσκευής με QR code

Για να προσθέσεις μια συσκευή, δείχνεις ένα QR code από μια συσκευή που είναι ήδη συνδεδεμένη. Ο κωδικός είναι τυχαίος, μίας χρήσης, και λήγει σε δύο λεπτά, και η νέα συσκευή δεν παίρνει τίποτα μέχρι να πατήσεις επιβεβαίωση στην παλιά. Όσο αυτή η χειραψία είναι ανοιχτή, κρατάμε τον κωδικό, το όνομα που έδωσε η νέα συσκευή στον εαυτό της και την πλατφόρμα της — και η εγγραφή διαγράφεται όταν λήξει. Ένα φωτογραφημένο QR code είναι άχρηστο χωρίς το δικό σου πάτημα επιβεβαίωσης.

Αιτήματα τραγουδιών

Ένα συγκρότημα μπορεί να ενεργοποιήσει τα αιτήματα τραγουδιών: οι θαυμαστές τότε διαλέγουν ένα τραγούδι από τη λίστα του καλλιτέχνη και, προαιρετικά, πληρώνουν για να το ανεβάσουν στην ουρά. Ένα αίτημα είναι απλώς ένα φιλοδώρημα που κουβαλά επιπλέον ποιο τραγούδι ζητήθηκε — οπότε το ίδιο όνομα και μήνυμα που μπορεί να επισυνάψει ένας θαυμαστής σε ένα φιλοδώρημα ισχύουν και εδώ, και αποθηκεύεται και διατηρείται ακριβώς όπως κάθε άλλο φιλοδώρημα (παρακάτω). Η δημόσια ουρά που βλέπει ένας θαυμαστής δείχνει μόνο σύνολα ανά τραγούδι — πόσα έχει συγκεντρώσει ένα τραγούδι και πού βρίσκεται — και δεν φέρει κανένα όνομα θαυμαστή. Χωρίς λογαριασμό, ολόκληρη η λίστα αιτημάτων τραγουδιών και το ιστορικό της ζουν μόνο στη συσκευή.

Push ειδοποιήσεις

Όταν είσαι συνδεδεμένος, η εφαρμογή μπορεί να σου στείλει μια push ειδοποίηση — αλλά μόνο αν την ενεργοποιήσεις, ανά συσκευή, και μόνο αφού το λειτουργικό σύστημα της συσκευής σου δώσει άδεια. Υπάρχει για ένα πράγμα: ένα φιλοδώρημα ή ένα αίτημα τραγουδιού που φτάνει όσο δεν τρέχεις κάποιο σετ, ώστε να μάθεις για το φιλοδώρημα που αλλιώς θα σου ξέφευγε. Ένα φιλοδώρημα που φτάνει όσο η σκηνή σου είναι ζωντανή δεν στέλνει τίποτα — το βλέπεις ήδη.

  • Για να παραδώσει μια push, το Firebase Cloud Messaging (FCM) της Google χρειάζεται ένα push token για τη συσκευή. Αποθηκεύουμε αυτό το token, και τη γλώσσα διεπαφής της συσκευής, στην ίδια την εγγραφή της συσκευής κάτω από τον λογαριασμό σου, και διαγράφεται τη στιγμή που απενεργοποιείς τις ειδοποιήσεις, ανακαλείς τη συσκευή ή αποσυνδέεσαι. Τα νεκρά tokens κλαδεύονται αυτόματα.
  • Η ίδια η ειδοποίηση λέει τι έφτασε — ένα ποσό, και το όνομα ενός θαυμαστή ή τον τίτλο ενός τραγουδιού, αν άφησε κάποιο. Η ίδια σύντομη λίστα κρατιέται στη ροή καμπάνας του λογαριασμού σου, με όριο τις πιο πρόσφατες εκατό καταχωρίσεις, ώστε να μπορείς να ξαναδείς όσα ήρθαν όσο έλειπες.
  • Στο web, η παράδοση μιας push απαιτεί ένα μικρό service worker στη ρίζα του ιστότοπου και το SDK μηνυμάτων του Firebase, που ο browser σου κατεβάζει από την Google (gstatic.com) την πρώτη φορά. Η web push μεταφέρεται έπειτα από την ίδια την υπηρεσία push του browser σου (για το Chrome, αυτή είναι της Google). Τίποτα από αυτά δεν φορτώνει αν δεν ενεργοποίησες τις ειδοποιήσεις.
  • Ένας λογαριασμός επισκέπτη και μια συσκευή χωρίς λογαριασμό δεν παίρνουν καμία push, γιατί μια push χρειάζεται έναν λογαριασμό στον οποίο μπορούμε να παραδώσουμε και ένα token που επέλεξες να δώσεις.

Πού ζουν όλα αυτά, στην πράξη

Το Firebase Auth, η Cloud Firestore, οι Cloud Functions μας και το κλειδί Cloud KMS που τυλίγει το μυστικό σου Stripe τρέχουν όλα στην Ευρωπαϊκή Ένωση — η βάση δεδομένων στην πολυπεριφέρεια eur3 της Google, οι συναρτήσεις και το key ring στο europe-west1. Η Google ενεργεί ως εκτελών την επεξεργασία για λογαριασμό μας, βάσει των όρων απορρήτου και ασφάλειας του Firebase και της δικής της πολιτικής απορρήτου. Όπως κάθε μεγάλος πάροχος, η Google ενδέχεται να εμπλέξει υποδομή εκτός ΕΕ για υποστήριξη και ασφάλεια· αυτό διέπεται από εκείνους τους όρους, όχι από εμάς. Οι push ειδοποιήσεις, μόλις παραδοθούν στο Firebase Cloud Messaging και στην υπηρεσία push του browser ή του τηλεφώνου σου, ταξιδεύουν μέσω της υποδομής εκείνων των εταιρειών για να φτάσουν στη συσκευή σου.

Stripe

Όταν ένας θαυμαστής πληρώνει με κάρτα, βρίσκεται στη σελίδα πληρωμής της Stripe, όχι στη δική μας. Η Stripe συλλέγει και επεξεργάζεται τα δεδομένα πληρωμής του ως ανεξάρτητος υπεύθυνος επεξεργασίας, βάσει της Πολιτικής Απορρήτου της Stripe. Εμείς δεν βλέπουμε ποτέ αριθμούς καρτών.

Το πώς φτάνουν σε εσένα τα φιλοδωρήματά σου εξαρτάται από τη λειτουργία:

  • Χωρίς λογαριασμό, η εφαρμογή του καλλιτέχνη διαβάζει τα δικά του φιλοδωρήματα από τη Stripe με το δικό του περιορισμένο κλειδί — κατευθείαν από τη συσκευή στο api.stripe.com. Δεν υπάρχει διακομιστής live.tips σε αυτή τη διαδρομή.
  • Όταν είσαι συνδεδεμένος, το κλειδί ζει στον διακομιστή μας (κρυπτογραφημένο, όπως παραπάνω), και το Stripe αναφέρει κάθε φιλοδώρημα στο webhook μας, το οποίο το γράφει στο δικό του ιστορικό του καλλιτέχνη στο Firestore. Σε αυτή τη λειτουργία υπάρχει διακομιστής live.tips στη διαδρομή — για τα δεδομένα του φιλοδωρήματος, ποτέ για τα χρήματα. Το όνομα και το μήνυμα ενός θαυμαστή, αν άφησε κάποιο, ταξιδεύουν μαζί με το φιλοδώρημα στο δικό του ιστορικό του καλλιτέχνη και σταματούν εκεί.

Ο αναμεταδότης — μόνο αν είναι ενεργοποιημένα Revolut, MobilePay ή Monzo

Οι ρυθμίσεις που χρησιμοποιούν μόνο Stripe δεν τον αγγίζουν ποτέ.

Το Revolut, το MobilePay και το Monzo δεν προσφέρουν κανέναν τρόπο ώστε μια εφαρμογή να επιβεβαιώσει ότι μια πληρωμή έγινε, οπότε αυτά τα φιλοδωρήματα δρομολογούνται μέσω ενός μικρού open-source αναμεταδότη που τρέχουμε στο Firebase — Cloud Functions και Firestore στο europe-west1, με τη σελίδα φιλοδωρημάτων του θαυμαστή να σερβίρεται από το tip.live.tips/t/<id>. Δεν αγγίζει ποτέ χρήματα. Να τι ακριβώς διαχειρίζεται.

Τι αποθηκεύει ο καλλιτέχνης

Η δημιουργία μιας σελίδας φιλοδωρημάτων αποθηκεύει το εμφανιζόμενο όνομα του καλλιτέχνη, το δημόσιο μήνυμά του, το νόμισμά του και τα στοιχεία πληρωμής που επέλεξε να δημοσιεύσει (τον σύνδεσμο πληρωμής Stripe, το όνομα χρήστη Revolut, το MobilePay Box ID, το όνομα χρήστη Monzo) και, αν είναι ενεργοποιημένα τα αιτήματα τραγουδιών, τη δημόσια λίστα τραγουδιών του και τις τιμές ανά τραγούδι. Όλα αυτά είναι πληροφορίες που ο καλλιτέχνης δημοσιεύει έτσι κι αλλιώς σκόπιμα προς τους θαυμαστές του.

  • Διατήρηση: μια σελίδα φιλοδωρημάτων χωρίς λογαριασμό από πίσω της διαγράφεται αυτόματα μετά από 90 ημέρες αδράνειας. Μια σελίδα φιλοδωρημάτων που ανήκει σε συνδεδεμένο λογαριασμό ζει όσο ζει το συγκρότημα στο οποίο ανήκει.
  • Ο καλλιτέχνης μπορεί να τη διαγράψει αμέσως από την εφαρμογή, οποιαδήποτε στιγμή.
  • Δεν συλλέγεται εδώ διεύθυνση email, κωδικός πρόσβασης, νόμιμο όνομα ή τραπεζικά στοιχεία.
  • Το μυστικό της σελίδας αποθηκεύεται μόνο ως hash. Δεν θα μπορούσαμε να σου πούμε το μυστικό ούτε αν το ζητούσες· μπορούμε μόνο να ελέγξουμε ένα.

Τι στέλνει ένας θαυμαστής

Η φόρμα φιλοδωρήματος ζητά ένα ποσό και, προαιρετικά, ένα όνομα και ένα μήνυμα — και, για ένα αίτημα τραγουδιού, ποιο τραγούδι. Αυτή είναι όλη η φόρμα. Χωρίς email, χωρίς τηλέφωνο, χωρίς λογαριασμό.

Το πού πηγαίνει αυτό το κείμενο που γράφει ο θαυμαστής, και για πόσο, εξαρτάται από το αν ο καλλιτέχνης είναι συνδεδεμένος:

  • Αν η σελίδα φιλοδωρημάτων δεν έχει λογαριασμό από πίσω της, το φιλοδώρημα γράφεται σε μια ουρά παράδοσης — ένα μόνο έγγραφο που υπάρχει για να παραδοθεί στην οθόνη του καλλιτέχνη. Όταν η οθόνη δείξει το φιλοδώρημα, η συσκευή του καλλιτέχνη διαγράφει αυτό το έγγραφο. Η διαγραφή είναι η επιβεβαίωση παραλαβής. Αν η οθόνη του καλλιτέχνη είναι εκτός σύνδεσης — κλειδωμένο τηλέφωνο, χωρίς σήμα — το φιλοδώρημα περιμένει σε αυτή την ουρά για μία ώρα το πολύ, ώστε να μη χαθεί απλώς, και παραδίδεται τη στιγμή που η οθόνη επανασυνδέεται. Αν δεν επανασυνδεθεί κανείς, διαγράφεται χωρίς να το δει κανείς, σαρωμένο σε προγραμματισμένη βάση. Για έναν καλλιτέχνη χωρίς λογαριασμό, αυτή η ουρά είναι το μοναδικό σημείο όπου αποθηκεύεται ποτέ κείμενο γραμμένο από θαυμαστή στον διακομιστή μας, και η μία ώρα είναι το απόλυτο όριό του.
  • Αν η σελίδα φιλοδωρημάτων ανήκει σε συνδεδεμένο λογαριασμό, δεν υπάρχει ουρά. Ο διακομιστής μας γράφει το φιλοδώρημα κατευθείαν στο δικό του ιστορικό του καλλιτέχνη κάτω από το uid του — στην αποψινή συνεδρία αν τρέχει κάποιο σετ, ή στο ίδιο το αρχείο του συγκροτήματος αν όχι. Εκεί μένει για όσο υπάρχει το συγκρότημα· είναι το δικό του ιστορικό του καλλιτέχνη, και αυτό ακριβώς είναι που ζήτησε συνδεόμενος. Είναι το ίδιο ιστορικό στο οποίο γράφει το webhook του Stripe, παραπάνω.
  • Το όνομα και το μήνυμά σου τοποθετούνται επίσης στη σημείωση πληρωμής που ανοίγει στο Revolut, το MobilePay ή το Monzo — έτσι ξέρει ο καλλιτέχνης ποιος άφησε φιλοδώρημα. Στη συνέχεια, αυτές οι εταιρείες τα επεξεργάζονται βάσει των δικών τους πολιτικών απορρήτου.
  • Ο αναμεταδότης δεν κρατά κανένα διακαλλιτεχνικό καθολικό φιλοδωρημάτων. Δεν μπορεί να δείξει σε εσένα, σε εμάς ή σε οποιονδήποτε άλλον μια λίστα με το ποιος έδωσε φιλοδώρημα σε ποιον, ανάμεσα σε καλλιτέχνες.

Διευθύνσεις IP και προστασία από κατάχρηση

Μια ανοιχτή φόρμα στην οποία μπορεί να υποβάλει ο καθένας χρειάζεται κάποια προστασία από bots, γι' αυτό:

  • Η διεύθυνση IP σου στέλνεται στο Cloudflare Turnstile — έναν έλεγχο κατά των bots που τρέχει στη σελίδα φιλοδωρημάτων — ώστε να επαληθευτεί ότι δεν είσαι bot. Το Turnstile είναι προϊόν της Cloudflare και χρησιμοποιείται αντί για ένα CAPTCHA που θα σε προφίλαρε. Το Turnstile και το DNS μας είναι τα μόνα πράγματα που κάνει πλέον για εμάς η Cloudflare· ο ίδιος ο αναμεταδότης τρέχει τώρα στο Firebase. Δες την Πολιτική Απορρήτου της Cloudflare.
  • Η IP σου χρησιμοποιείται επίσης για τον περιορισμό ρυθμού των αιτημάτων — υποβολή φιλοδωρήματος, δημιουργία σελίδας φιλοδωρημάτων, εξαργύρωση κωδικού προσθήκης συσκευής. Αυτό που αποθηκεύουμε γι' αυτό είναι ένα κρυπτογραφικό hash της IP με salt, ποτέ η ίδια η IP, για περίπου δύο ώρες, και έπειτα διαγράφεται. Το salt είναι ένα μυστικό του διακομιστή: χωρίς αυτό, ο κώδικας αρνείται να αποθηκεύσει οτιδήποτε, αντί να κρατήσει ένα hash που θα μπορούσε να αντιστραφεί.
  • Τα λειτουργικά αρχεία καταγραφής της Google καταγράφουν τις τεχνικές λεπτομέρειες των αιτημάτων προς τον αναμεταδότη — URL, χρονισμό, κατάσταση — για λίγες ημέρες. Ο κώδικάς μας σκόπιμα δεν καταγράφει ονόματα, μηνύματα, μυστικά ή headers. Η Google ενεργεί ως εκτελών την επεξεργασία για λογαριασμό μας.

Μετρητές

Ο αναμεταδότης μετρά πόσα φιλοδωρήματα έχει αναμεταδώσει μια δεδομένη σελίδα φιλοδωρημάτων, ώστε να εντοπίζουμε καταχρήσεις και να ξέρουμε αν το πράγμα χρησιμοποιείται καθόλου. Είναι ένας αριθμός. Δεν περιέχει κανένα δεδομένο θαυμαστή.

Ποιος επεξεργάζεται τι

Ποιος Τι λαμβάνει Γιατί
Google (Firebase) Λογαριασμούς, τα συγχρονισμένα δεδομένα ενός συνδεδεμένου καλλιτέχνη, το κρυπτογραφημένο κλειδί Stripe, τον αναμεταδότη, push tokens και παράδοση, αρχεία καταγραφής διακομιστή Τον προαιρετικό λογαριασμό, τον προαιρετικό αναμεταδότη και τις push ειδοποιήσεις
Google Cloud KMS Το κλειδί που τυλίγει το μυστικό Stripe ενός συνδεδεμένου καλλιτέχνη (ποτέ το μυστικό σε καθαρή μορφή) Να κρατά μη αναγνώσιμο το αποθηκευμένο κλειδί Stripe σε κατάσταση ηρεμίας
Stripe Τα δεδομένα πληρωμής του θαυμαστή, ως ανεξάρτητος υπεύθυνος επεξεργασίας· και, για έναν συνδεδεμένο καλλιτέχνη, συμβάντα φιλοδωρημάτων που στέλνονται στο webhook μας Φιλοδωρήματα με κάρτα
Cloudflare Την IP του θαυμαστή, για τον έλεγχο Turnstile στη σελίδα φιλοδωρημάτων. Και το DNS μας. Να κρατάει τα bots μακριά από τη φόρμα φιλοδωρημάτων
GitHub Την IP και το user-agent όποιου φορτώνει αυτόν τον ιστότοπο Τη φιλοξενία του ιστότοπου
Η υπηρεσία push του browser / τηλεφώνου σου (π.χ. της Google για το Chrome) Ένα push token και το περιεχόμενο της ειδοποίησης, αν ενεργοποίησες τις ειδοποιήσεις Την παράδοση των push ειδοποιήσεων
Revolut / MobilePay / Monzo Ό,τι κάνει ο θαυμαστής μέσα στη δική τους εφαρμογή, συμπεριλαμβανομένης της σημείωσης πληρωμής Αυτές τις μεθόδους πληρωμής

Δεν πουλάμε τίποτα σε κανέναν, και δεν υπάρχει κανένας άλλος σε αυτή τη λίστα.

Νομική βάση, αν χρειάζεσαι μία (GDPR)

  • Η λειτουργία ενός λογαριασμού που ζήτησες, ο συγχρονισμός των δικών σου δεδομένων στις δικές σου συσκευές, η φύλαξη του κλειδιού σου στο Stripe ώστε τα φιλοδωρήματά σου να φτάνουν στο ιστορικό σου, η λειτουργία του αναμεταδότη για έναν καλλιτέχνη που τον ενεργοποίησε, η παράδοση του φιλοδωρήματος ενός θαυμαστή στην οθόνη για την οποία προοριζόταν, και η αποστολή μιας push που ενεργοποίησες: εκτέλεση μιας υπηρεσίας που ζήτησες.
  • Περιορισμός ρυθμού, Turnstile, ποσοστώσεις με hash της IP και ανάκληση συσκευών: έννομο συμφέρον να μην καταστραφεί μια δωρεάν, ανοιχτή υπηρεσία από bots και απάτες, και να παραμείνουν ασφαλείς οι λογαριασμοί των καλλιτεχνών.
  • Αρχεία καταγραφής διακομιστή: έννομο συμφέρον στη λειτουργία και την ασφάλιση της υπηρεσίας.

Πώς διαγράφονται τα πράγματα

Αυτό μετράει περισσότερο από οποιαδήποτε υπόσχεση θα μπορούσαμε να δώσουμε γι' αυτό, οπότε να τι ακριβώς υπάρχει σήμερα — μαζί με ό,τι δεν υπάρχει.

  • Χωρίς λογαριασμό: απεγκατέστησε την εφαρμογή. Αυτό είναι όλο, χάθηκε.
  • Ένα συγκρότημα: η αφαίρεση ενός συγκροτήματος στην εφαρμογή διαγράφει τα δεδομένα του στο cloud — τις ρυθμίσεις του, τα κλειδιά του, τις συνεδρίες του, το ιστορικό φιλοδωρημάτων του — μαζί με το αντίγραφο στη συσκευή.
  • Μια σελίδα φιλοδωρημάτων: διάγραψέ την ή δημιούργησέ την ξανά μέσα από την εφαρμογή και σβήνεται από τον αναμεταδότη αμέσως, μαζί με όσα φιλοδωρήματα εκκρεμούν.
  • Push ειδοποιήσεις: απενεργοποίησέ τες σε μια συσκευή και το push token της διαγράφεται. Η ροή καμπάνας καθαρίζει μαζί με το συγκρότημα ή τον λογαριασμό.
  • Μια συσκευή: οι Ρυθμίσεις → Ασφάλεια απαριθμούν τις συσκευές σου. Μπορείς να ανακαλέσεις μία, ή να αποσυνδεθείς παντού αλλού — πράγμα που τερματίζει τη συνεδρία κάθε άλλης συσκευής αμέσως, όχι κάποια στιγμή.
  • Ολόκληρος ο λογαριασμός σου, με ένα πάτημα: η εφαρμογή δεν έχει ακόμη αυτό το κουμπί. Προτιμούμε να το παραδεχτούμε παρά να προσποιηθούμε το αντίθετο. Μέχρι να υπάρξει, γράψε στο [email protected] και θα διαγράψουμε τον λογαριασμό και ό,τι βρίσκεται κάτω από αυτόν, με το χέρι. Στο μεταξύ, μπορείς ήδη να διαγράψεις κάθε συγκρότημα, πράγμα που αφαιρεί ό,τι έχει ουσία — συμπεριλαμβανομένου του αποθηκευμένου κλειδιού Stripe — και αφήνει πίσω έναν άδειο λογαριασμό.

Τα δικαιώματά σου

Μπορείς να μας ζητήσεις αντίγραφο, διόρθωση ή διαγραφή οτιδήποτε τηρούμε για εσένα, και μπορείς να υποβάλεις καταγγελία στην εθνική σου αρχή προστασίας δεδομένων. Γράψε στο [email protected].

Στην πράξη, τα περισσότερα βρίσκονται ήδη στα χέρια σου: ένας καλλιτέχνης μπορεί να διαγράψει μια σελίδα φιλοδωρημάτων ή ένα συγκρότημα από την εφαρμογή ακαριαία, τα μη παραδοθέντα φιλοδωρήματα των θαυμαστών σε μια σελίδα χωρίς λογαριασμό εξατμίζονται μέσα σε μία ώρα, και αν δεν συνδεθείς ποτέ, τίποτα από αυτά δεν βρέθηκε ποτέ πουθενά αλλού παρά στη δική σου συσκευή.

Παιδιά

Η live.tips δεν απευθύνεται σε παιδιά και δεν επεξεργαζόμαστε εν γνώσει μας δεδομένα τους.

Αλλαγές

Θα ενημερώνουμε αυτή τη σελίδα όταν αλλάζει το λογισμικό. Επειδή όλο το έργο είναι open source, κάθε προηγούμενη έκδοση αυτής της πολιτικής βρίσκεται στο δημόσιο ιστορικό του git — μπορείς να δεις ακριβώς τι άλλαξε και πότε.

Γλώσσα

Αυτή η πολιτική δημοσιεύεται σε κάθε γλώσσα που υποστηρίζει ο ιστότοπος, για διευκόλυνσή σου. Αν μια μετάφραση και η αγγλική έκδοση διαφωνούν, η αγγλική έκδοση είναι αυτή που μετράει.

Όροι χρήσης