Last updated: 6 October 2026
This is an English translation for convenience. The German version is the legally binding one.
1. At a glance
reefnotes is a free aquarium logbook and a private hobby project. Everything runs on a single, self-operated server in Germany: website, database, email and visitor statistics. We set no cookies, embed no third-party services (no font, video or map services, no ads, no trackers) and never sell data.
This policy explains which personal data this involves, why, on what legal basis and for how long we keep it.
2. Controller
Rafael Fuchs
Dachauer Str. 312
80993 Munich, Germany
Email: webmaster@foxigit.com
Contact form: reefnotes.com/en/contact
No data protection officer has been appointed, as there is no legal obligation to do so.
3. Hosting
The site runs on a server rented from Hetzner Online GmbH, Industriestr. 25, 91710 Gunzenhausen, Germany, in their Nuremberg data centre. We operate every part of reefnotes on that server ourselves: web server, application, database, mail server and visitor statistics. Hetzner only provides the hardware and network; a data processing agreement under Art. 28 GDPR is in place. Legal basis: our legitimate interest in secure and reliable operation (Art. 6(1)(f) GDPR).
We back up the database daily on the same server. Backups are deleted automatically after 14 days, so deleted data disappears from the backups no later than 14 days after deletion.
4. When you visit the site
Server log files
For every page or file request, our web server records: IP address, date and time, the requested address, HTTP status code, bytes transferred, the referring page and the browser identifier (user agent). We use this to find errors, fend off attacks (automatic blocking of IP addresses after repeated failed attempts) and produce a weekly, purely numerical traffic report that contains no IP addresses.
Log files are rotated weekly and deleted after four weeks. Legal basis: our legitimate interest in secure, error-free operation (Art. 6(1)(f) GDPR).
Application logs
The application logs requests to its interface (time, method, address, status code, response time, IP address and user agent) as well as errors. Credentials, passwords and login tokens are not logged; for emails we only record the recipient's domain. These logs are deleted automatically after 30 days. Legal basis: Art. 6(1)(f) GDPR (debugging and security).
Storage in your browser
We set no cookies. The site keeps a few settings in your browser's local storage (localStorage) so they are still there next time. This data does not leave your device — except the login token, which is sent with each request to our server:
- Login (
reefnotes.token): a signed login token (JSON Web Token) containing your user ID, email address, name and role. It is removed when you sign out. - Language and display (
reefnotes.locale,reefnotes.prefs.*): chosen language, pro mode, dimmed view, 12- or 24-hour clock. - Dismissed hints (
reefnotes.tour.*,reefnotes.sidekick.v1,reefnotes.session.*,reefnotes.advice.*,reefnotes.detail.lastSeen.*): whether you have already seen or dismissed an introduction or hint, and when you last looked at a tank, so the app only shows you what's new. - Update guard (
reefnotes.chunkReload): stops the page from getting stuck in a reload loop after an update.
In addition, a service worker keeps the site's program files (scripts, stylesheets, fonts, images) in the browser cache so they load faster and updates arrive reliably. It contains no personal data.
All of this is strictly necessary for the features you use and therefore permitted without consent under § 25(2) no. 2 TDDDG. You can clear this storage in your browser settings at any time; you will then need to sign in again.
Visitor statistics with Umami
To understand which pages and features are used, we run the open-source software Umami — self-hosted on our own server. The script is loaded from our own domain and data goes to nobody else. Umami sets no cookies and stores nothing on your device.
For each page view we process: the page visited (with access or confirmation codes removed from the address), the referring page, browser, operating system, device type, screen size, language, and approximate location (country, region, city), derived from the IP address at the time of the request. We also count individual actions, such as button clicks, steps in setting up a tank, or error messages. These counts only carry coarse attributes: whether someone is signed in, the chosen experience level, the number of tanks (0, 1 or more) and the language. Names, email addresses, user or tank IDs and anything you type are never sent; visits are not linked to your account.
The IP address is not stored. Umami combines it with the user agent and a random value that changes every month into an identifier that groups the page views of one visit. Once the month changes, not even we can recreate that identifier. We only look at the data in aggregate.
Legal basis: our legitimate interest in improving the service based on how it is actually used (Art. 6(1)(f) GDPR). Browsers sending "Do Not Track" are not counted. You can also object at any time by switching measurement off for your browser at the bottom of this page.
5. Your account
Registration
An account requires your email address and a password; a name is optional. We also store the language you registered in (for emails) and the time of registration. reefnotes is meant for people aged 16 and over; younger users need a parent's or guardian's consent (Art. 8 GDPR). Age is not verified. Legal basis: performance of the user agreement (Art. 6(1)(b) GDPR); see the terms of use.
Abuse protection: as soon as you start filling in the form, it fetches a check token bound to your IP address; it is not stored and expires after an hour. A field invisible to people helps spot automated sign-ups. We also limit the number of requests per IP address; these counters live only in memory and expire within an hour. For every new registration the operator receives an email with the email address, name, language, IP address and user agent, so abusive sign-ups (for example with someone else's email address) are spotted quickly. Accounts created abusively may be blocked. Legal basis: our legitimate interest in a secure service and in protecting third parties (Art. 6(1)(f) GDPR).
Email confirmation
After registration we send you a confirmation link that is valid for 24 hours. You can use reefnotes for seven days without confirming; after that, confirmation is required to keep signing in. Accounts that were never confirmed and contain no tank are deleted automatically after 30 days.
Sign-in and sessions
We never store your password in plain text, only as a cryptographic hash (PBKDF2 with HMAC-SHA-512 and an individual salt). When you sign in we create a session: a random session ID, issue and expiry time, IP address and user agent. This lets you sign out of all devices and lets us revoke compromised sessions. A session lasts one hour, or 30 days with "stay signed in". Expired or ended sessions are deleted after seven days.
We log every sign-in attempt with time, the email address entered, success or failure, IP address and user agent to detect attacks on accounts. These entries are deleted after 90 days. Password reset links are valid for 30 minutes; a reset ends all existing sessions.
Legal basis: Art. 6(1)(b) GDPR; for the sign-in log, our legitimate interest in account security (Art. 6(1)(f) GDPR).
Last activity and milestones
We store when you last used the app (updated at most once an hour). This tells us how many accounts are active and decides whether someone receives the one-time follow-up described in section 6. Milestones you reach (such as "100 tests") are stored with the date you reached them. Legal basis: Art. 6(1)(b) and (f) GDPR.
Profile and public pages
Optionally you can add a profile picture, a short bio, a location, a time zone, an experience level and a public username (handle). Profile pictures are resized to 512×512 pixels and stored as WebP.
Your account and every tank are private by default. Only once you choose a handle does your profile become public at reefnotes.com/{language}/u/{handle}, showing handle, display name, profile picture, bio, location, experience level and your public tanks. You share a tank individually via "Share"; its name, volume, water type, photos, latest readings, the history of one key parameter, water changes and fertiliser doses of the last 18 months and a summary computed from them then become public. The tank's location, tap-water profile, equipment, livestock list and notes stay private. For sharing on social networks, our server renders a preview image from the same public information.
Public pages can be opened by anyone without signing in and can be found by search engines if they are linked anywhere; we do not include them in our sitemap. Legal basis: your consent, given by choosing a handle or switching on sharing (Art. 6(1)(a) GDPR). You can withdraw either at any time; the pages then stop being reachable immediately.
6. Emails
All emails are sent through our own mail server on the same machine; no external email service is involved. The mail server's logs (sender, recipient, time, delivery status) are deleted after four weeks.
- Account emails: confirmation link, password reset, security notices. Legal basis: Art. 6(1)(b) GDPR.
- Sunday issue: once a week, a summary of your own aquarium data — the week's entries, how your readings moved, the outlook, upcoming tasks and milestones reached. It contains no advertising. The Sunday issue is part of the service (Art. 6(1)(b) GDPR), which we point out at registration. You can unsubscribe at any time: via the link in every issue (also as one-click unsubscribe in your mail app) or in your profile. If you log nothing for eight weeks, the Sunday issue pauses until you log something again. Issues are also archived in the app, even if you no longer receive emails.
- One-time follow-up: if you haven't used the app for 14 days, we send you a single short email asking what was missing. If you answer with a click, we store the reason you chose and an optional comment. Legal basis: our legitimate interest in improving reefnotes (Art. 6(1)(f) GDPR). Anyone who has unsubscribed from the Sunday issue does not get this email; it also contains an unsubscribe link.
7. Contact
Contact form
The contact form lets you reach us without an account. We process your email address, your name (optional) and your message. As with registration, the form fetches a short-lived check token bound to your IP address, and the number of messages per IP address is limited; neither is stored. The message is not stored in our database; it is forwarded to the operator by email.
In-app feedback and email
When signed in you can write to us through the feedback form. Along with your message (and an optional category: bug, idea, question, other) we send the page you had open, your user agent, your name, email address and user ID so we can reply and trace the problem. These messages, too, only go to the operator by email. If you voluntarily give a reason when deleting your account, it is forwarded the same way with your name and email address. The same applies if you email us directly.
We keep enquiries until they are resolved and then delete them, unless a legal retention duty applies. Legal basis: Art. 6(1)(b) GDPR if the enquiry concerns your account, otherwise our legitimate interest in answering (Art. 6(1)(f) GDPR).
8. Your aquarium data
In your account you record tanks (name, volume, water type, optionally location, tap-water profile and volume calculation), readings, water changes, fertiliser doses, recurring tasks, equipment, livestock and notes. We use this data only to show it to you and to compute trends, forecasts, hints and the Sunday issue from it (Art. 6(1)(b) GDPR). It stays private unless you explicitly share a tank (section 5).
Photos: per tank you can upload a cover image and up to 365 dated album photos with captions. We resize them to at most 1920×1080 pixels, convert them to WebP and strip all metadata (in particular GPS coordinates, camera model and capture time). Album photos also get a small thumbnail. Deleted or replaced photos are removed from the server immediately.
9. Public content and calculators
Guides, parameter pages and calculators can be used without an account. Calculator inputs are computed entirely in your browser and are not sent to our server. To help search engines find new or changed editorial pages faster, we submit their addresses via the IndexNow protocol after each release; only page addresses are sent — no visitor data, and no profile or tank pages.
10. Deleting your account and data export
Deleting your account
You can delete your account at any time under "Profile → Delete account" (Art. 17 GDPR). By default we delete everything: profile data, sessions, sign-in log, all tanks with readings, events, tasks, equipment, livestock and notes, all photos, milestones, follow-up answers and all Sunday issues.
Optional consent: keep anonymised readings
At registration or later under "Profile → Privacy" you can voluntarily agree that your readings are kept in anonymised form after account deletion, to improve trends and forecasts and to build realistic example tanks (Art. 6(1)(a) GDPR). With this consent, only the following remain after deletion:
- the readings and events of your tanks (parameter, value, time, type and amount of water changes and doses),
- the structure of the tanks (volume, water type, tap-water profile, task rhythms, equipment and livestock without notes),
- a reason you may have chosen in the follow-up (without comment).
Deleted in this case too: email address, name, handle, profile details, profile picture, tank names, tank locations, all notes and comments, all photos, milestones, Sunday issues, sessions and the sign-in log; public pages are switched off. The remaining data can no longer be attributed to a person. It is not shared and not sold. You can withdraw your consent in your profile at any time; if you then delete your account, everything is removed.
Data export
Under "Profile → Privacy → Download my data" you can get a complete copy of your data as a JSON file at any time (Art. 15 and 20 GDPR): profile, consents, tanks with all entries and photo details, milestones, follow-up answers, Sunday issues, sessions and sign-in log. We are happy to send you the image files themselves on request.
11. Instagram
We run the Instagram account @reef.notes. The provider is Meta Platforms Ireland Limited, Merrion Road, Dublin 4, D04 X2K5, Ireland. When you visit our profile, follow it or interact with posts, Meta processes your data under its own rules, including in the USA (Meta is certified under the EU-US Data Privacy Framework). For the statistics Meta provides us about the profile's use (Insights), we are joint controllers with Meta (Art. 26 GDPR); Meta has published an agreement on this and is the first point of contact for your rights. We only receive aggregated statistics, no data about individual visitors. If you message us on Instagram, we process the message there in order to reply. Legal basis: our legitimate interest in making reefnotes known and being reachable (Art. 6(1)(f) GDPR). See Instagram's privacy policy.
12. Links to other providers
In some places we link to other providers. These are plain links: only when you click one is a connection made to that provider, whose privacy policy then applies.
- Donations via PayPal: the home page has a voluntary donation link to PayPal (PayPal (Europe) S.à r.l. et Cie, S.C.A., 22–24 Boulevard Royal, L-2449 Luxembourg; privacy policy). We only learn about a donation what PayPal tells us (usually name, email address and amount) and use it only to say thank you and to record the donation.
- Sharing on X and Facebook: the share buttons on the home page are ordinary links to X and Facebook.
- Instagram and foxigit.com (the operator's private website).
13. Your rights
You have the right of access (Art. 15 GDPR), rectification (Art. 16), erasure (Art. 17), restriction of processing (Art. 18) and data portability (Art. 20). You can withdraw consent at any time with effect for the future (Art. 7(3)). You can exercise most of these rights directly in your profile; for anything else, a message to us is enough.
Right to object (Art. 21 GDPR): where we process data on the basis of our legitimate interest (Art. 6(1)(f) GDPR), you may object at any time on grounds relating to your particular situation. We will then stop processing the data unless we can demonstrate compelling legitimate grounds that override your interests, or the processing serves the establishment, exercise or defence of legal claims.
You can also lodge a complaint with a data protection supervisory authority (Art. 77 GDPR). The authority responsible for us is the Bavarian Data Protection Authority (BayLDA), Promenade 18, 91522 Ansbach, Germany, www.lda.bayern.de.
14. Security and changes
All connections to reefnotes are encrypted with TLS. When reefnotes changes, we update this policy; the date at the top shows the current version.
