Solisluna records the practice you log so it can show it back to you. Your data is tied to your account, is never sold, and carries no advertising.
Two features send data to an AI provider to generate written text. The Mirror sends what you have written — up to thirty days of your journal entries. The Weekly Transmission sends figures only, never anything you wrote. Both are described precisely below, and neither runs unless you use it.
Your runs' 3D cards and replays are drawn on rented graphics machines from RunPod, which may be outside Canada. Your route and heart rate are sent there for the drawing only.
Routes are private unless you publish one to The Node. A published run is shown to everyone, in full, without your name.
You can delete your account and its data at any time, from inside the app.
Solisluna ("the app", "we", "us") is a practice-tracking application operated by an independent developer. This policy explains what the app collects, where it goes, and the choices you have. By using Solisluna you agree to the practices described here.
Who is responsible
Solisluna is operated by an individual developer, not a registered company. For any privacy question or request, contact [email protected].
What we collect
Account information
Your email address, when you create an account. Authentication is handled by Supabase; passwords are stored by them in hashed form and we never see them in plain text.
Your profile photo — kept on your phone
If you add a profile photo, you choose it with your phone's own photo picker, which gives the app only the picture you pick, and crop it to a square. The photo stays on your phone. It is never uploaded, never stored with your account and never shown to anyone else. The app does not use your camera or microphone. Signing out leaves it on that phone for your account alone; deleting your account, or the app, erases it.
Signing in with Google
If you choose "Continue with Google", Google shares your name, email address and a Google account identifier with Solisluna. We use these only to create your account and sign you in; your name and email address are kept with your account. We do not receive your Google password, contacts or any other Google data, and we never share what Google sends us. You can remove Solisluna's access at any time at myaccount.google.com/permissions; your Solisluna account and its data remain until you delete them in the app.
Practice and journal data
What you log in the app: daily practice marks, sleep, training, fasting windows, nutrition entries, meditation and breathwork minutes, cold exposure, and the written reflections you choose to enter. This is the core data the app exists to record.
Health figures kept with your journal
Heart-rate variability, heart rate, daily step count, sleep hours and a sleep rating, and the workouts you sync from Health Connect or HealthKit (with a reference to the health record each came from) are stored alongside your journal entries so your history persists across devices.
Health and fitness data — only if you connect it
If you grant permission, the app reads from Health Connect (Android) or HealthKit (iOS): heart rate, resting heart rate, heart-rate variability, sleep sessions, steps, exercise sessions, distance, elevation gained and body weight. This populates your journal; body weight is copied to your profile only if your profile has none. The app reads from your health records; it never writes to them. You can revoke this at any time in your device settings.
A session's heart rate, as a series
For a session that has a heart-rate reading, from Health Connect or from an imported FIT file, the app keeps the heart rate as a series: one value for every five seconds of the session. For a file with real timestamps it also keeps the pace in the same way. The series is stored with your account so the session's pictures, including its 3D card, can be drawn from your effort on any device. It is private: only you can read it. It is never published, never shown to another user, and never put on The Node. Part of it goes to RunPod to draw a 3D card, as described below.
A session's stream, for your best efforts
When you save a recorded session, import a FIT or GPX file, or read a route from Health Connect, the app also keeps a stream of that session: the time, the distance covered, your height (from the phone's barometer, its GPS or the file, and from the map's terrain at the same moments) and, where the source has it, your heart rate, one value every two seconds (every five or ten for a very long session). From it the app works out your best efforts and climbs, on your phone, and keeps them with it. The stream holds no location: where you went stays in the route. It is stored with your account so your records follow you to a new phone. It is private: only you can read it. It is never published, never shown to another user, never put on The Node, and not sent to RunPod or to the AI provider.
Routes from Health Connect
Some watches, COROS among them, write the route of a workout to Health Connect. If a workout you synced has one, the app can read it, so the session gets its map and 3D card without a file to import. Health Connect asks you first, on its own screen: for each workout, or once for all of them if you choose to allow routes always in Health Connect's settings. Nothing is read if you decline; the app does not ask about that workout again, though you can still add its map from the session's page. A route is read only while the app is open, never in the background. Once read, it is treated exactly like a route you recorded: simplified, stored with your account, private by default, and deleted in the same ways.
Location and routes — only while you record an activity
If you start a run, walk or ride with the app's own recorder, the app uses your phone's precise location only while that recording is running, shown by a notification for as long as it lasts. It never reads your location in the background or when you are not recording. If you only allow approximate location, the recorder keeps time only.
When you save, the app keeps a simplified route (a reduced set of points along the line you took) together with the distance, climb and time. The full set of raw location points stays on your phone only until that day is saved, and is then discarded; it is never uploaded. The simplified route is stored with your account so it can be shown on the session's map and restored on a new phone. Routes are private by default: only you can see them.
If you import a run's file (FIT or GPX) from another app, the file is read on your phone. Only a simplified route, the figures (time, distance, climb), the start and end times, and the maker of the device named in the file (for example "COROS") are kept with that session. The file itself is deleted from the app when you leave the import screen.
3D cards and replays of your runs
For a run with a route, the app can make a 3D card: a picture of the run drawn over the terrain it crossed, with its elevation profile, and a short replay video that flies along it. A card is made when you open the run; a replay is made automatically for a recent run, or when you ask for one, up to a set number each month.
To draw them, our server queues a job holding the run's simplified route, its start time, distance and climb, the session's name as the app shows it, and, if the session has one, its heart rate by distance (one value for every 50 metres, with no times attached). The heart rate sets how bright the drawing is along the line.
The drawing is done on rented graphics machines from RunPod, which processes this data on our behalf. RunPod's machines may be outside Canada, for example in the United States or Europe, so your route and that heart-rate series are processed there while the job runs. The machine signs in with a restricted account that can read only the render jobs and the route lines they need; it cannot read your journal or anything else in your account. Its working files are deleted when each job ends, and its logs carry no coordinates.
The finished card, the replay and a small file of the profile's figures are stored with Supabase in a private folder that only you can open. Nobody else can see them unless you save or send them yourself. We also keep a count of the replays made for you each month, to apply the monthly limit. "Remove route" deletes the run's card and replay with the route; erasing your journal or deleting your account deletes them all. The monthly count is deleted with your account.
The Node — only the runs you publish
The Node is the app's shared map, in its own tab: the paths runners take, drawn as glowing lines that grow brighter as more people run them, with nodes where they meet. Nothing goes on The Node unless you choose "Publish to The Node" for that run. Every other run stays private.
A published run is shown in full, including where it starts and ends. It is not trimmed, and the app tells you so before you publish. Choose with that in mind, especially for a run that starts or ends at your home.
When you publish, our server keeps a copy of the run's line simplified to about 5 metres, with its date (not the time of day), its sport and its distance. It is then drawn into the shared map on a 20-metre grid. What others see is anonymous: lines and nodes with counts of how many different runners used them, never your name, your account, the date, the time, your heart rate or your pace. Your own published runs are highlighted only on your own phone. Where you are the only runner on a path, your line is still visible as a line of its own.
"Post this evening, not now" is on by default: the run then appears no earlier than 19:00 your time and at least two hours after it ended, so nobody sees where you are while you are there. If you turn it off, it appears straight away.
The map is published as public map tiles in Supabase storage, so anyone who has their address, including people without the app, can load them. The tiles hold only the combined lines, nodes and counts, plus terrain contour lines.
"Unpublish" takes your run off The Node. Your copy is deleted at once and your line leaves the map within about six minutes, as the tiles are rebuilt and cached copies expire. Removing the run's route, erasing your journal or deleting your account unpublishes too. We cannot recall a copy that someone else made of the map while your run was on it.
Maps
To draw the map, the app downloads map tiles from OpenFreeMap, built on OpenStreetMap data. Like any web request, the tile server sees your device's IP address and which area of the map is being viewed, including when you preview an imported file. No account identifier or route is sent with those requests.
To shade the terrain on a route's map, the app also downloads elevation tiles from Amazon Web Services. The same applies: the server sees your IP address and the area being drawn, and nothing else.
Map data credits
The maps, 3D cards and The Node are drawn from open data, used under these licences:
- Map data © OpenStreetMap contributors, available under the Open Database Licence (ODbL)
- Map tiles by OpenFreeMap, in the OpenMapTiles schema © OpenMapTiles
- Elevation: Mapzen Terrain Tiles (Terrarium), from the Registry of Open Data on Amazon Web Services, made from SRTM, Natural Resources Canada's CDEM (Open Government Licence – Canada), GMTED and ETOPO1, among other sources
Subscription status
Subscriptions are processed by Google Play and managed through RevenueCat. We receive your entitlement status only. RevenueCat receives your account identifier so your subscription follows you between devices, and our server asks RevenueCat whether your subscription is active before it generates AI text. We never receive or store payment-card details — those are handled entirely by Google Play.
Technical data
Basic operational data needed to run the app and keep your account in sync. When the app starts, it checks Expo's update service for a newer version; that request carries the app's version and a random installation identifier, not your account. The app contains no third-party advertising, analytics or ad-tracking software.
What is sent to an AI provider
Two features generate written text using Anthropic's Claude API. Both are optional and require a subscription. What is sent differs between them, and the difference matters:
The Mirror
This one sends what you have written. Up to thirty days of your journal entries are included: your daily intention, your notes on the day's work, your written reflection, what you were glad of, your intention for tomorrow, and your answer to the day's prompt together with the prompt itself. Each entry's date is included. Each piece of writing is shortened to 280 characters. This is the feature that reads your own words back to you, so your own words are what it sends.
The Weekly Transmission
This one sends figures only. No text you have written is included. A summary of the past week is sent: your stage and streak, how many days you logged, a score for each part of your practice, your average sleep hours and sleep score, your average heart-rate variability and resting heart rate, how many training sessions and active minutes you logged, your fasting days, longest fast and average window, up to three nutrient shortfalls, and, for each habit you are leaving behind, how many days it has been and the name of the tier you have reached (never the name you gave the habit). No dates are sent. Your written reflections, seed-force notes, what-helped notes and food notes are never sent by this feature.
Anthropic processes this data to generate the text returned to you. Anthropic does not receive your name, email or account identifier, only the content described above. The generated text is stored in your account so the app does not regenerate it each time you open it, together with a count of how many times you used these features that day.
The Codex
The Codex is the app's insights page. Its readings (your patterns, correlations and the state of each discipline) are worked out on your device from the journal you keep; producing them sends nothing anywhere. The one exception is the Weekly Transmission card shown there, which is generated by Anthropic from figures only, as described above. The Codex itself is not a separate AI feature and sends no text you have written.
If you would rather send nothing to an AI provider, do not use these two features. Every other part of the app works without them.
Food search
If you search for a food, the food name you typed is sent to the U.S. Department of Agriculture's FoodData Central database to retrieve nutrition figures. No account identifier, email or personal information travels with that request.
How your data is stored and shared
Your data is stored with Supabase and associated with your account. We share it only with the providers needed to operate the app:
- Supabase — authentication, database and storage, including the public tiles of The Node
- RunPod — drawing 3D cards and replays: your run's simplified route and figures, its name and its heart rate by distance, processed on machines that may be outside Canada
- Anthropic — generation of the Mirror and Weekly Transmission text, as described above
- RevenueCat and Google Play — subscription processing
- U.S. Department of Agriculture — food-name lookups only, with no identifier attached
- Google — sign-in, only if you choose "Continue with Google"
- Resend — delivery of account emails
- Cloudflare — domain, network and email routing
- OpenFreeMap — map tiles, with no identifier attached
- Amazon Web Services — terrain (elevation) tiles for route maps, with no identifier attached
- Expo — delivery of app updates
These providers process data on our behalf under their own terms. We do not otherwise disclose your data except where required by law. We do not sell your data and we do not use it for advertising.
Solisluna is run from British Columbia, Canada. Several of these providers, RunPod among them, process data in other countries, including the United States, where it is subject to the laws of those countries.
The only data other people can see is what you publish to The Node yourself, as described above.
Health data
Health and fitness data is sensitive and is treated as such. It is used to populate your own journal inside the app and is shown back to you there.
Some of it is sent to the AI provider. Specifically, the Weekly Transmission includes your average heart-rate variability, resting heart rate and sleep figures, how many training sessions and active minutes you logged, and the day counts of the habits you are leaving behind, as described above. A session's heart rate by distance goes to RunPod while its 3D card and replay are drawn, as described above. Nothing else is disclosed: health data is not sold, not shared for advertising, never published to The Node, and not passed to any third party beyond the storage provider holding your account, the AI provider and the rendering provider named above.
You can disconnect Health Connect or HealthKit at any time in your device or app settings, and you can delete this data along with your account.
Retention
We keep your data for as long as your account exists, so the app can show you your own history. When you delete your account it is removed as described below.
Deleting your account and data
You can delete your account from inside the app, under Settings. This does two things:
- Every piece of data held on your device is erased — your journal, your profile, your cached history and your preferences
- Your account is removed from our systems, along with your profile, all journal entries, all routes and shared routes, your heart-rate series and session streams, every 3D card and replay with the count of replays made, everything you published to The Node, and all generated Mirror and Transmission text. If you connected Strava in an earlier version of the app, that connection is revoked and deleted too
RevenueCat keeps the record of your subscription, linked to your account identifier, after your account is deleted; a later update will remove that record too. Google Play keeps its own record of your purchases.
Deletion is permanent and cannot be undone. Full instructions are on our data deletion page, or you can email [email protected] to request it.
Children
Solisluna is intended for adults aged 18 and over and is not directed at children. We do not knowingly collect data from anyone under 18.
Your rights
Depending on where you live, you may have rights to access, correct, export or delete your personal data. To exercise any of these, contact [email protected].
Changes to this policy
We may update this policy. Material changes will be reflected by the date at the top of this page.
Contact
Questions about this policy or your data: [email protected].