Política de privacidad de KaTrainer
1. Responsable y alcance
Esta política se aplica a KaTrainer en la web, como aplicación web instalable (PWA) y como aplicación Android. El responsable del tratamiento es Francesco Catania, persona física residente en Italia, que publica KaTrainer bajo la marca SekaiBuilder. Para cualquier consulta de privacidad: support@sekaibuilder.com.
2. Datos que tratamos
- Cuenta y autenticación: nombre de usuario, dirección de correo, estado de verificación, una representación irreversible (hash) de la contraseña, fecha de creación y de último acceso, estado de la cuenta y de Premium, e identificadores de sesión. Nunca almacenamos la contraseña en texto legible.
- Aprendizaje: progreso, aciertos y fallos, tiempos, rachas, tarjetas marcadas como difíciles, actividad de práctica y contadores de quiz. Sin cuenta, estos datos se quedan en tu dispositivo. Con la sesión iniciada, parte de ellos se envía al servidor y queda asociada a tu cuenta.
- Funcionamiento y seguridad: dirección IP, fecha y hora, datos básicos de la petición e identificadores de sesión, para entregar el servicio, aplicar límites de uso y detectar abusos.
- Registro de visitas: guardamos como máximo las 300 visitas más recientes. De cada una se conserva el país aproximado, la IP enmascarada (en IPv4 se pone a cero el último octeto; en IPv6 se conservan sólo los primeros bloques), tu nombre de usuario si había sesión iniciada, y la fecha y hora. Una IP enmascarada sigue siendo un dato personal o seudónimo: no la presentamos como información anónima irreversible.
- País aproximado: la aplicación lo deduce en tu dispositivo a partir de la zona horaria del navegador y sólo envía el código del país. No consultamos ningún servicio de geolocalización ni enviamos tu IP a terceros para ubicarte.
- Ubicación precisa (opcional): el buscador de sedes del JLPT puede pedir permiso de ubicación al navegador. Si lo concedes, las coordenadas se usan únicamente en tu dispositivo para ordenar las sedes por distancia; no se envían a nuestro servidor ni se almacenan. Si lo deniegas, el buscador usa el país aproximado descrito arriba, también calculado en tu dispositivo.
- Soporte: el contenido de los informes de error o comentarios que envías, tu nombre de usuario si había sesión iniciada, y la fecha de envío.
- Compras: identificadores de la sesión de pago y de la transacción, usuario asociado, importe, moneda, fecha, estado y, cuando corresponda, la devolución. Stripe recibe y trata los datos del método de pago; KaTrainer no almacena el número de tarjeta.
3. Finalidades y bases jurídicas
- Ejecución del contrato (art. 6.1.b RGPD): crear y mantener tu cuenta, guardar el aprendizaje asociado a ella, prestar las funciones Premium, procesar los pagos, enviarte los correos de verificación y recuperación, y atender tus solicitudes, incluido el borrado.
- Interés legítimo (art. 6.1.f RGPD): proteger el servicio, aplicar límites de uso, prevenir abusos y conocer de forma agregada cuántas visitas recibe y desde qué países.
- Consentimiento (art. 6.1.a RGPD): la ubicación precisa del buscador de sedes del JLPT. Puedes retirarlo en cualquier momento desde los permisos del navegador o de Android.
- Obligación legal (art. 6.1.c RGPD): conservar los registros de pagos y devoluciones que exija la normativa fiscal y contable.
4. Proveedores y destinatarios
No vendemos datos personales ni los usamos para publicidad comportamental. Comunicamos los datos mínimos necesarios a estos proveedores:
- Hetzner Online GmbH (Alemania): alojamiento, con contrato de encargo del tratamiento conforme al art. 28 del RGPD. El servidor que almacena cuentas, progreso, sesiones y registros técnicos está en un centro de datos de Hetzner en Estados Unidos.
- Resend: recibe tu dirección de correo y los metadatos del mensaje para enviar verificaciones, recuperación de contraseña y otros correos operativos.
- Stripe: procesa los pagos y la prevención de fraude. Puede tratar datos de contacto, del método de pago y de la transacción conforme a sus propias condiciones.
- jsDelivr: tu navegador le pide directamente los datos de orden de trazos de algunos kana y las imágenes de emoji (Twemoji) del modo de escritura. Al hacerlo, jsDelivr recibe datos normales de red: tu IP, cabeceras técnicas y la ruta del recurso pedido.
- Google Play y el sistema operativo: si instalas la versión Android, Google y el fabricante del dispositivo pueden tratar de forma independiente datos de instalación, diagnóstico, cuenta o compra según sus propias políticas.
Estos destinatarios pueden actuar como encargados del tratamiento o, para algunas funciones, como responsables independientes según sus condiciones. No autorizamos a nuestros encargados a usar los datos para fines ajenos al servicio contratado.
5. Cookies y almacenamiento en tu dispositivo
Usamos una cookie de sesión propia, marcada como httpOnly, secure y sameSite=strict, para mantener la autenticación. No usamos cookies publicitarias ni de terceros.
También usamos almacenamiento del navegador para que la app funcione:
localStorageysessionStorage: idioma, preferencias, progreso local, tarjetas difíciles, aviso de cookies y datos de sesión.- Una copia local del estado de tu acceso Premium, que caduca a los 14 días y sirve para que la app siga funcionando sin conexión. El servidor sigue siendo la fuente de verdad: en cuanto hay red, el estado se vuelve a comprobar.
- Un service worker y la Cache API, para guardar el contenido ya visitado y mostrar una página de recuperación cuando no hay conexión. Las llamadas a la API nunca se guardan en esa caché.
Puedes borrar todo esto desde los ajustes del navegador o de Android. Si lo haces, se cerrará la sesión y se perderá el progreso que todavía no se hubiera enviado al servidor.
6. Conservación
- Los enlaces y registros de verificación pendientes caducan a las 24 horas.
- Las sesiones iniciadas caducan a los 30 días, salvo que cierres sesión antes o se revoquen por seguridad.
- El registro de visitas conserva únicamente las 300 visitas más recientes; las anteriores se descartan automáticamente.
- El buzón de soporte, con los informes de error y los avisos internos, conserva cada entrada un máximo de 12 meses y nunca más de 200 entradas.
- La cuenta y el progreso guardado en el servidor se conservan mientras la cuenta esté activa. Las cuentas que llevan 24 meses sin actividad se eliminan en una revisión periódica, que se realiza al menos una vez al año.
- Las solicitudes de borrado se completan en un plazo máximo de 30 días; desde la propia aplicación el borrado es inmediato.
- Los registros de pagos y devoluciones se conservan durante el plazo que exija la normativa fiscal y contable aplicable.
- Las estadísticas agregadas que ya no permiten identificar a una persona pueden conservarse.
- Las copias de respaldo del servidor son diarias y automáticas, y se conservan las 7 más recientes: un dato borrado puede permanecer en ellas hasta 7 días. Sólo se usan para recuperar el servicio tras un fallo.
7. Seguridad
Aplicamos medidas técnicas y organizativas razonables: hash de contraseñas, cookies de sesión con atributos de seguridad, límites de frecuencia por endpoint, control de acceso administrativo validado en el servidor y cifrado en tránsito mediante HTTPS. Ningún sistema es completamente seguro; si se produce una incidencia, actuaremos conforme a la ley aplicable.
8. Tus derechos y la eliminación de la cuenta
Puedes solicitar acceso, rectificación, eliminación, limitación, oposición y portabilidad de tus datos, y retirar en cualquier momento el consentimiento que hayas dado. Para ejercer un derecho, escribe desde la dirección de correo registrada a support@sekaibuilder.com; podemos pedir información razonable para verificar tu identidad. También puedes presentar una reclamación ante el Garante per la protezione dei dati personali (Italia) o ante la autoridad de protección de datos del país de la UE en el que residas.
Eliminar tu cuenta: el procedimiento, los datos afectados y las excepciones están en la página de eliminación de cuenta. Puedes hacerlo desde la propia aplicación o por correo.
9. Menores
KaTrainer no está dirigido a menores que no puedan consentir el tratamiento de sus datos según la ley de su país. Si no tienes la edad aplicable, usa el servicio sólo con la autorización de tu madre, padre o tutor. Si crees que hemos recibido datos de un menor sin autorización válida, escríbenos para revisarlos y eliminarlos cuando corresponda.
10. Transferencias internacionales, cambios y contacto
Tus datos se alojan en servidores de Hetzner en Estados Unidos, bajo el contrato de encargo del tratamiento descrito arriba, y algunos proveedores (Stripe, Resend, jsDelivr) pueden tratarlos fuera del Espacio Económico Europeo. Puedes pedir información sobre las garantías que se aplican a estas transferencias, y una copia de ellas, escribiendo a support@sekaibuilder.com.
Publicaremos los cambios relevantes de esta política y actualizaremos la fecha de arriba. Contacto: support@sekaibuilder.com.
KaTrainer privacy policy
1. Controller and scope
This policy applies to KaTrainer on the web, as an installable web app (PWA) and as an Android application. The data controller is Francesco Catania, a private individual resident in Italy, who publishes KaTrainer under the SekaiBuilder brand. For any privacy enquiry: support@sekaibuilder.com.
2. Data we process
- Account and authentication: username, email address, verification status, a hashed representation of the password, creation and last-seen dates, account and Premium status, and session identifiers. We never store the password in readable text.
- Learning: progress, correct and incorrect answers, times, streaks, cards marked as difficult, practice activity and quiz counters. Without an account this data stays on your device. Once you sign in, some of it is sent to the server and associated with your account.
- Operation and security: IP address, date and time, basic request data and session identifiers, used to deliver the service, apply usage limits and detect abuse.
- Visit log: we keep at most the 300 most recent visits. Each entry stores the approximate country, the masked IP (in IPv4 the last octet is zeroed; in IPv6 only the leading blocks are kept), your username if you were signed in, and the date and time. A masked IP is still personal or pseudonymous data: we do not present it as irreversibly anonymous information.
- Approximate country: the app works it out on your device from your browser's time zone and sends only the country code. We use no geolocation service and never send your IP address to third parties to locate you.
- Precise location (optional): the JLPT venue finder may ask the browser for location permission. If you grant it, the coordinates are used on your device only, to sort venues by distance; they are not sent to our server and are not stored. If you deny it, the finder uses the approximate country described above, also worked out on your device.
- Support: the content of bug reports or feedback you send, your username if you were signed in, and the submission date.
- Purchases: payment-session and transaction identifiers, associated user, amount, currency, date, status and, where applicable, refund. Stripe receives and processes payment-method data; KaTrainer does not store the card number.
3. Purposes and legal bases
- Performance of a contract (Art. 6(1)(b) GDPR): creating and keeping your account, storing the learning associated with it, providing Premium features, processing payments, sending verification and recovery emails, and handling your requests, including deletion.
- Legitimate interests (Art. 6(1)(f) GDPR): protecting the service, applying usage limits, preventing abuse, and knowing in aggregate how many visits it receives and from which countries.
- Consent (Art. 6(1)(a) GDPR): precise location for the JLPT venue finder. You can withdraw it at any time in your browser or Android permissions.
- Legal obligation (Art. 6(1)(c) GDPR): keeping the payment and refund records that tax and accounting rules require.
4. Providers and recipients
We do not sell personal data and do not use it for behavioural advertising. We disclose the minimum data needed to these providers:
- Hetzner Online GmbH (Germany): hosting, under a data processing agreement pursuant to Art. 28 GDPR. The server that stores accounts, progress, sessions and technical logs is in a Hetzner data centre in the United States.
- Resend: receives your email address and message metadata to deliver verification, password-recovery and other operational emails.
- Stripe: processes payments and fraud prevention. It may process contact, payment-method and transaction data under its own terms.
- jsDelivr: your browser requests stroke-order data for some kana and the emoji images (Twemoji) used in writing mode directly from it. In doing so, jsDelivr receives standard network data: your IP address, technical headers and the requested resource path.
- Google Play and the operating system: if you install the Android version, Google and your device manufacturer may independently process installation, diagnostics, account or purchase data under their own policies.
These recipients may act as processors or, for some functions, as independent controllers under their terms. We do not authorise our processors to use the data for purposes unrelated to the contracted service.
5. Cookies and storage on your device
We use a first-party session cookie, flagged httpOnly, secure and sameSite=strict, to maintain authentication. We use no advertising or third-party cookies.
We also use browser storage so the app can work:
localStorageandsessionStorage: language, preferences, local progress, difficult cards, the cookie notice and session data.- A local copy of your Premium access status, which expires after 14 days and exists so the app keeps working offline. The server remains the source of truth: as soon as there is a connection, the status is checked again.
- A service worker and the Cache API, to keep already-visited content and show a recovery page when there is no connection. API calls are never stored in that cache.
You can clear all of this from your browser or Android settings. Doing so signs you out and discards progress that had not yet been sent to the server.
6. Retention
- Pending verification links and records expire after 24 hours.
- Signed-in sessions expire after 30 days, unless you sign out earlier or they are revoked for security reasons.
- The visit log keeps only the 300 most recent visits; older ones are discarded automatically.
- The support inbox, holding bug reports and internal notices, keeps each entry for at most 12 months and never more than 200 entries.
- The account and the progress stored on the server are kept while the account is active. Accounts with 24 months without activity are deleted in a periodic review carried out at least once a year.
- Deletion requests are completed within 30 days at most; from within the app, deletion is immediate.
- Payment and refund records are kept for the period required by the applicable tax and accounting rules.
- Aggregated statistics that can no longer identify a person may be retained.
- Server backups are daily and automatic, and the 7 most recent are kept: deleted data may remain in them for up to 7 days. They are used only to restore the service after a failure.
7. Security
We apply reasonable technical and organisational measures: password hashing, session cookies with security attributes, per-endpoint rate limits, administrative access validated on the server, and encryption in transit over HTTPS. No system is completely secure; if an incident occurs, we will act as required by applicable law.
8. Your rights and account deletion
You may request access to, rectification, erasure, restriction and portability of your data, object to its processing, and withdraw any consent you gave at any time. To exercise a right, write from your registered email address to support@sekaibuilder.com; we may request reasonable information to verify your identity. You may also lodge a complaint with the Garante per la protezione dei dati personali (Italy) or with the data-protection authority of the EU country where you live.
Deleting your account: the procedure, the data affected and the exceptions are on the account deletion page. You can do it from within the app or by email.
9. Children
KaTrainer is not directed to children who cannot consent to the processing of their data under the law of their country. If you are below the applicable age, use the service only with authorisation from a parent or guardian. If you believe we received a child's data without valid permission, contact us so we can review and delete it where appropriate.
10. International transfers, changes and contact
Your data is hosted on Hetzner servers in the United States, under the data processing agreement described above, and some providers (Stripe, Resend, jsDelivr) may process it outside the European Economic Area. You can request information about the safeguards that apply to these transfers, and a copy of them, by writing to support@sekaibuilder.com.
We will publish material changes to this policy and update the date above. Contact: support@sekaibuilder.com.
Informativa sulla privacy di KaTrainer
1. Titolare e ambito
Questa informativa si applica a KaTrainer sul web, come applicazione web installabile (PWA) e come applicazione Android. Il titolare del trattamento è Francesco Catania, persona fisica residente in Italia, che pubblica KaTrainer con il marchio SekaiBuilder. Per qualsiasi domanda sulla privacy: support@sekaibuilder.com.
2. Dati trattati
- Account e autenticazione: nome utente, indirizzo email, stato della verifica, una rappresentazione irreversibile (hash) della password, date di creazione e ultimo accesso, stato dell'account e di Premium e identificatori di sessione. Non conserviamo mai la password in testo leggibile.
- Apprendimento: progressi, risposte corrette ed errate, tempi, serie, schede segnate come difficili, attività di pratica e contatori dei quiz. Senza account questi dati restano sul tuo dispositivo. Dopo l'accesso, una parte viene inviata al server e associata al tuo account.
- Funzionamento e sicurezza: indirizzo IP, data e ora, dati essenziali della richiesta e identificatori di sessione, per erogare il servizio, applicare limiti d'uso e rilevare abusi.
- Registro delle visite: conserviamo al massimo le 300 visite più recenti. Di ciascuna restano il paese approssimativo, l'IP mascherato (in IPv4 l'ultimo ottetto è azzerato; in IPv6 restano solo i primi blocchi), il tuo nome utente se avevi effettuato l'accesso, e data e ora. Un IP mascherato resta un dato personale o pseudonimo: non lo presentiamo come informazione irreversibilmente anonima.
- Paese approssimativo: l'app lo ricava sul tuo dispositivo dal fuso orario del browser e invia soltanto il codice del paese. Non usiamo alcun servizio di geolocalizzazione e non inviamo il tuo IP a terzi per localizzarti.
- Posizione precisa (facoltativa): il ricerca-sedi JLPT può chiedere al browser il permesso di posizione. Se lo concedi, le coordinate sono usate solo sul tuo dispositivo per ordinare le sedi per distanza; non vengono inviate al nostro server né conservate. Se lo neghi, il ricerca-sedi usa il paese approssimativo descritto sopra, anch'esso calcolato sul tuo dispositivo.
- Assistenza: il contenuto delle segnalazioni di errore o dei commenti che invii, il tuo nome utente se avevi effettuato l'accesso, e la data di invio.
- Acquisti: identificatori della sessione di pagamento e della transazione, utente associato, importo, valuta, data, stato e, quando applicabile, il rimborso. Stripe riceve e tratta i dati del metodo di pagamento; KaTrainer non conserva il numero della carta.
3. Finalità e basi giuridiche
- Esecuzione di un contratto (art. 6.1.b GDPR): creare e mantenere il tuo account, conservare l'apprendimento associato, fornire le funzioni Premium, elaborare i pagamenti, inviarti le email di verifica e di recupero e gestire le tue richieste, compresa la cancellazione.
- Legittimo interesse (art. 6.1.f GDPR): proteggere il servizio, applicare limiti d'uso, prevenire abusi e conoscere in forma aggregata quante visite riceve e da quali paesi.
- Consenso (art. 6.1.a GDPR): la posizione precisa del ricerca-sedi JLPT. Puoi revocarlo in qualsiasi momento dai permessi del browser o di Android.
- Obbligo legale (art. 6.1.c GDPR): conservare i registri di pagamenti e rimborsi richiesti dalla normativa fiscale e contabile.
4. Fornitori e destinatari
Non vendiamo dati personali e non li usiamo per pubblicità comportamentale. Comunichiamo i dati minimi necessari a questi fornitori:
- Hetzner Online GmbH (Germania): hosting, con contratto di trattamento ai sensi dell'art. 28 GDPR. Il server che conserva account, progressi, sessioni e registri tecnici si trova in un data center di Hetzner negli Stati Uniti.
- Resend: riceve il tuo indirizzo email e i metadati del messaggio per inviare verifiche, recupero della password e altre email operative.
- Stripe: elabora i pagamenti e la prevenzione delle frodi. Può trattare dati di contatto, del metodo di pagamento e della transazione secondo le proprie condizioni.
- jsDelivr: il tuo browser richiede direttamente a jsDelivr i dati sull'ordine dei tratti di alcuni kana e le immagini emoji (Twemoji) usate nella modalità di scrittura. Così facendo, jsDelivr riceve normali dati di rete: il tuo indirizzo IP, le intestazioni tecniche e il percorso della risorsa richiesta.
- Google Play e sistema operativo: se installi la versione Android, Google e il produttore del dispositivo possono trattare autonomamente dati di installazione, diagnostica, account o acquisto secondo le proprie informative.
Questi destinatari possono agire come responsabili del trattamento o, per alcune funzioni, come titolari autonomi secondo le loro condizioni. Non autorizziamo i nostri responsabili a usare i dati per finalità estranee al servizio contrattato.
5. Cookie e archiviazione sul dispositivo
Usiamo un cookie di sessione di prima parte, con gli attributi httpOnly, secure e sameSite=strict, per mantenere l'autenticazione. Non usiamo cookie pubblicitari né di terze parti.
Usiamo inoltre l'archiviazione del browser perché l'app funzioni:
localStorageesessionStorage: lingua, preferenze, progressi locali, schede difficili, avviso cookie e dati di sessione.- Una copia locale dello stato del tuo accesso Premium, che scade dopo 14 giorni e serve a far funzionare l'app anche offline. Il server resta la fonte di verità: appena c'è connessione, lo stato viene verificato di nuovo.
- Un service worker e la Cache API, per conservare i contenuti già visitati e mostrare una pagina di recupero quando manca la connessione. Le chiamate all'API non vengono mai salvate in quella cache.
Puoi cancellare tutto questo dalle impostazioni del browser o di Android. Così facendo verrai disconnesso e andranno persi i progressi non ancora inviati al server.
6. Conservazione
- I link e i record di verifica in sospeso scadono dopo 24 ore.
- Le sessioni attive scadono dopo 30 giorni, salvo disconnessione anticipata o revoca per motivi di sicurezza.
- Il registro delle visite conserva solo le 300 visite più recenti; le precedenti vengono scartate automaticamente.
- La casella dell'assistenza, con le segnalazioni di errore e gli avvisi interni, conserva ogni voce per al massimo 12 mesi e mai più di 200 voci.
- L'account e i progressi conservati sul server restano finché l'account è attivo. Gli account con 24 mesi di inattività vengono eliminati in una revisione periodica, effettuata almeno una volta all'anno.
- Le richieste di cancellazione vengono completate entro 30 giorni al massimo; dall'app la cancellazione è immediata.
- I registri di pagamenti e rimborsi sono conservati per il periodo richiesto dalla normativa fiscale e contabile applicabile.
- Le statistiche aggregate che non consentono più di identificare una persona possono essere conservate.
- I backup del server sono giornalieri e automatici, e vengono conservati i 7 più recenti: un dato cancellato può restarvi fino a 7 giorni. Si usano solo per ripristinare il servizio dopo un guasto.
7. Sicurezza
Applichiamo misure tecniche e organizzative ragionevoli: hash delle password, cookie di sessione con attributi di sicurezza, limiti di frequenza per endpoint, accesso amministrativo validato sul server e cifratura in transito tramite HTTPS. Nessun sistema è completamente sicuro; in caso di incidente agiremo come richiesto dalla legge applicabile.
8. Diritti e cancellazione dell'account
Puoi chiedere l'accesso, la rettifica, la cancellazione, la limitazione e la portabilità dei tuoi dati, opporti al trattamento e revocare in qualsiasi momento il consenso prestato. Per esercitare un diritto, scrivi dal tuo indirizzo email registrato a support@sekaibuilder.com; potremmo chiedere informazioni ragionevoli per verificare la tua identità. Puoi anche proporre reclamo al Garante per la protezione dei dati personali o all'autorità di controllo del paese dell'UE in cui risiedi.
Cancellare l'account: procedura, dati interessati ed eccezioni sono nella pagina di cancellazione dell'account. Puoi farlo dall'app o per email.
9. Minori
KaTrainer non è rivolto a minori che non possono prestare il consenso al trattamento dei propri dati secondo la legge del loro paese. Se non hai l'età applicabile, usa il servizio solo con l'autorizzazione di un genitore o tutore. Se ritieni che abbiamo ricevuto dati di un minore senza autorizzazione valida, contattaci affinché possiamo esaminarli ed eliminarli quando opportuno.
10. Trasferimenti internazionali, modifiche e contatti
I tuoi dati sono ospitati su server di Hetzner negli Stati Uniti, in base al contratto di trattamento descritto sopra, e alcuni fornitori (Stripe, Resend, jsDelivr) possono trattarli al di fuori dello Spazio economico europeo. Puoi chiedere informazioni sulle garanzie applicate a questi trasferimenti, e una copia delle stesse, scrivendo a support@sekaibuilder.com.
Pubblicheremo le modifiche sostanziali di questa informativa e aggiorneremo la data in alto. Contatto: support@sekaibuilder.com.