Final Gravity.

Integritetspolicy

Senast uppdaterad: 20 oktober 2026

Denna integritetspolicy beskriver hur Final Gravity (“tjänsten”, “appen”) behandlar personuppgifter. Policyn är utformad med hänsyn till EU:s dataskyddsförordning (GDPR) och svensk rätt. Detta är information till dig som användare; den utgör inte juridisk rådgivning.

1. Personuppgiftsansvarig

Personuppgiftsansvarig för behandlingen är skaparna av Final Gravity. Frågor om personuppgifter kan ställas via tjänsten.

2. Vilka uppgifter vi behandlar

Beroende på hur du använder tjänsten kan vi behandla:

  • Kontouppgifter: e-post lagras som envägshash (HMAC) för inloggning/koppling — inte i klartext i databasen. Visningsnamn, användarnamn, roll, avatar-URL och tidpunkter för skapande/uppdatering.
  • Inloggning lokalt: lösenord lagras endast som kryptografisk hash (inte i klartext).
  • OAuth (Google): leverantör och leverantörens användar-id; e-post från leverantören hashas på samma sätt och lagras inte i klartext.
  • Användarinnehåll: recept, mappar, inventarie, stilar, brygginställningar och liknande data du sparar i appen. Data lagras i en lokal SQLite-databas på app-servern (inte i en delad molndatabas hos tredje part).
  • Delningslänkar: publika delningstoken för recept som du väljer att dela.
  • Feedback/buggrapporter: om du skickar feedback som inloggad användare lagras meddelandet tillsammans med konto-id och visningsnamn (inte klartext-e-post).
  • Tekniska uppgifter: session via HttpOnly-cookie fg_session (JWT); Bearer-token från inloggnings-JSON används främst av MCP-klienter; webbläsaren rensar äldre JWT från localStorage. Dessutom OAuth-state-cookie, gästkvot-cookie fg_guest_id, samt språk-/tema- och andra preferenser lokalt i webbläsaren.
  • AI-funktion: den fritextprompt du skickar för receptgenerering eller AI-chatt.
  • Egen Replicate-nyckel (BYOK): om du anger en API-nyckel lagras den krypterad (AES) i databasen och används endast för dina AI-anrop mot Replicate. Klartextnyckeln returneras aldrig till klienten.

3. Ändamål och rättslig grund

Personuppgifter används endast för att tillhandahålla och säkra kontot samt den begärda tjänsten:

  • Tillhandahålla tjänsten (konto, inloggning, recept, inventarie, delning) — avtal / berättigat intresse att leverera den begärda tjänsten.
  • Säkerhet och missbruksskydd — berättigat intresse.
  • AI-generering av recept — avtal / ditt begärda utförande av tjänsten.
  • Kommunikation om kontot (vid behov) — avtal eller berättigat intresse.

Vi säljer inte dina personuppgifter och använder dem inte för marknadsföring, profilering, tredjepartsannonsering eller andra sekundära ändamål. Plattformsinnehåll du sparar (t.ex. recept) kan användas enligt våra användarvillkor; personuppgifter används inte för sådana ändamål.

4. Mottagare och underbiträden

  • Google: vid OAuth-inloggning behandlas uppgifter enligt Googles villkor och privacy-policy.
  • Replicate: när du använder AI-receptgenerering eller AI-chatt skickas din prompt (och systeminstruktion) till Replicate för modellkörning, autentiserad med serverns nyckel eller din egen BYOK-nyckel. E-post eller användar-id ingår inte i den payload som appen skickar till Replicate.
  • Hosting / infrastruktur: tjänsten körs på en VPS bakom Caddy (TLS); appen lyssnar lokalt på servern. Leverantören av servern kan tekniskt behandla data som infrastruktur. Användardata ligger i SQLite på samma server.
  • CDN för vissa klientbibliotek: t.ex. HTMX kan laddas från tredjeparts-CDN (unpkg).

Överföring utanför EU/EES kan förekomma via ovanstående leverantörer. Där så krävs ska lämpliga skyddsåtgärder (t.ex. standardavtalsklausuler) finnas hos leverantören.

5. Cookies och lagring i webbläsaren

Vi använder nödvändig teknik för inloggning, kvotering och preferenser:

  • HttpOnly-cookie fg_session (JWT) för webbläsarsession,
  • kortlivad cookie för OAuth-state,
  • HttpOnly-cookie fg_guest_id för gäst-AI-kvot (överlever utloggning),
  • lokala inställningar i webbläsaren (språk, tema, gästpreferenser m.m.).

Bearer-token i inloggnings-svaret är avsedd för MCP och liknande klienter; den sparas inte som primär webbläsarsession. Vi använder inte reklam- eller spårningscookies i den mening som typiskt kräver samtycke för marknadsföring. Om cookie-användningen utökas uppdateras denna policy.

6. Lagringstid

Kontouppgifter och användarinnehåll sparas så länge kontot är aktivt eller tills du raderar kontot i appen (Inställningar → Radera konto), om inte lag kräver längre lagring. Session-cookie och lokala preferenser finns tills du loggar ut, rensar dem i webbläsaren eller tills cookien går ut.

7. Dina rättigheter

Enligt GDPR har du rätt att begära tillgång, rättelse, radering, begränsning, dataportabilitet (där tillämpligt) och att invända mot behandling som bygger på berättigat intresse. Du kan också lämna klagomål till Integritetsskyddsmyndigheten (IMY), imy.se.

Du kan radera ditt konto själv under Inställningar (med bekräftelse). Kontakta oss via tjänsten för övriga rättigheter.

8. Säkerhet

Vi vidtar rimliga tekniska och organisatoriska åtgärder, bland annat HTTPS via Caddy, HttpOnly-sessioncookie, lösenordshashning, e-post som envägshash (HMAC) och kryptering av BYOK-nycklar med en serverhemlighet (ENCRYPTION_KEY), samt åtkomstkontroll via JWT. Ingen metod är helt riskfri; du ansvarar för att skydda dina inloggningsuppgifter och enheter.

9. Barn och ålder

Tjänsten riktar sig till personer som är myndiga (18 år i Sverige) och är inte lämplig för barn. Vi avser inte att medvetet samla in personuppgifter från personer under 18 år. Om du tror att vi behandlar sådana uppgifter, kontakta oss via tjänsten så att vi kan radera dem.

10. Ändringar

Vi kan uppdatera denna policy. Den aktuella versionen publiceras på denna sida med uppdaterat datum. Vid väsentliga ändringar strävar vi efter att informera på lämpligt sätt i tjänsten.

Last updated: 20 October 2026

This privacy policy describes how Final Gravity (the “service”, the “app”) processes personal data. It is drafted with regard to the EU GDPR and Swedish law. This is information for users; it is not legal advice.

1. Controller

The controller of the processing is the creators of Final Gravity. Questions about personal data may be raised through the service.

2. Data we process

Depending on how you use the service, we may process:

  • Account data: email stored as a one-way HMAC hash for sign-in/linking — not in clear text in the database. Display name, username, role, avatar URL, and created/updated timestamps.
  • Local login: passwords stored only as a cryptographic hash (never in clear text). Optional recovery passwords are stored the same way (HMAC hash only).
  • OAuth (Google): provider and provider user id; email from the provider is hashed the same way and not stored in clear text.
  • User content: recipes, folders, inventory, styles, brewing settings and similar data you save in the app. Data is stored in a local SQLite database on the app server (not in a shared third-party cloud database).
  • Share links: public share tokens for recipes you choose to share.
  • Feedback / bug reports: if you submit feedback while signed in, the message is stored with account id and display name (not clear-text email).
  • Technical data: session via HttpOnly cookie fg_session (JWT); Bearer token from the login JSON is mainly for MCP clients; the browser clears legacy JWTs from localStorage. Also an OAuth state cookie, guest-quota cookie fg_guest_id, and language/theme and other preferences stored locally in your browser.
  • AI feature: the free-text prompt you submit for recipe generation or AI chat.
  • Your Replicate key (BYOK): if you provide an API key, it is stored encrypted (AES) in the database and used only for your AI calls to Replicate. The plaintext key is never returned to the client.

3. Purposes and legal bases

Personal data is used only to provide and secure the account and the requested service:

  • Providing the service (account, login, recipes, inventory, sharing) — contract / legitimate interest in delivering the requested service.
  • Security and abuse prevention — legitimate interest.
  • AI recipe generation — contract / performance of the service you request.
  • Account-related communication (when needed) — contract or legitimate interest.

We do not sell your personal data and do not use it for marketing, profiling, third-party advertising or other secondary purposes. Platform content you save (e.g. recipes) may be used under our terms of use; personal data is not used for those purposes.

4. Recipients and processors

  • Google: for OAuth sign-in, data is processed under Google’s terms and privacy policy.
  • Replicate: when you use AI recipe generation or AI chat, your prompt (and system instruction) is sent to Replicate for model execution, authenticated with the server key or your own BYOK key. Email or user id is not included in the payload the app sends to Replicate.
  • Hosting / infrastructure: the service runs on a VPS behind Caddy (TLS); the app listens locally on the server. The server provider may process data as infrastructure. User data is in SQLite on the same server.
  • CDN for certain client libraries: e.g. HTMX may be loaded from a third-party CDN (unpkg).

Transfers outside the EU/EEA may occur via the providers above. Where required, appropriate safeguards (e.g. standard contractual clauses) should be in place with the provider.

5. Cookies and browser storage

We use necessary technology for sign-in, quotas and preferences:

  • HttpOnly cookie fg_session (JWT) for the browser session,
  • a short-lived cookie for OAuth state,
  • HttpOnly cookie fg_guest_id for guest AI quota (survives sign-out),
  • local browser preferences (language, theme, guest prefs, etc.).

The Bearer token in the login response is intended for MCP and similar clients; it is not the primary browser session. We do not use advertising or tracking cookies of the kind that typically requires consent for marketing. If cookie use expands, this policy will be updated.

6. Retention

Account data and user content are kept while the account is active or until you delete the account in the app (Settings → Delete account), unless law requires longer retention. The session cookie and local preferences remain until you sign out, clear them in the browser, or the cookie expires.

7. Your rights

Under the GDPR you may request access, rectification, erasure, restriction, data portability (where applicable), and object to processing based on legitimate interest. You may also lodge a complaint with the Swedish Authority for Privacy Protection (IMY), imy.se.

You can delete your account yourself under Settings (with confirmation). Contact us through the service for other rights.

8. Security

We take reasonable technical and organisational measures, including HTTPS via Caddy, an HttpOnly session cookie, password hashing, one-way email hashing (HMAC), encryption of BYOK keys with a server secret (ENCRYPTION_KEY), and JWT access control. No method is completely risk-free; you are responsible for protecting your credentials and devices.

9. Children and age

The service is directed at persons who are adults of legal age (18 years in Sweden) and is not suitable for children. We do not knowingly collect personal data from persons under 18. If you believe we process such data, contact us through the service so we can delete it.

10. Changes

We may update this policy. The current version is published on this page with an updated date. For material changes we aim to inform you appropriately in the service.

Integritetspolicy · Användarvillkor · Tillbaka till inloggning