This privacy policy is applicable to the Nighttune website (hereinafter referred to as "Application") for browser-capable devices, which was developed by houthacker (hereinafter referred to as "Service Provider") as a an Open Source service. This service is provided "AS IS".
This privacy policy is effective as of 2026-07-01
The Application acquires the information you supply when you use the Application. Nighttune will only contact you to send your autotune report, if you provide an email address. will only be used to send you your autotune report.
Important information and notices are sent through the #general Discord channel listed in README.md.
The Application collects certain information. This information is limited to the tables below. Information that is not retained is used only when executing the Application and discarded immediately afterwards.
| Data element | Retained | Use |
|---|---|---|
| Nightscout URL | ✓ | Retrieving profile and treatments |
| Nightscout Access Token | ❌ | Accessing the Nightscout instance |
| User email address | ✓ | Sending the autotune report |
| Nightscout profiles | ✓ | Running autotune, showing reports |
| Nightscout treatments | ✓ | Running autotune, showing reports |
| Autotune recommendations | ✓ | Running autotune, showing reports |
The table below contains data elements collected for performance monitoring and debugging and is not relatable to you. Therefore, this data cannot be retrieved nor deleted using a GDPR request. The retention periods shown in this table may change without notice.
| Data elements | Retention period | Use |
|---|---|---|
| Meta data about requests to Nighttune backend | 2 months | Performance monitoring, debugging |
| Application logging | 6 months | Performance monitoring, debugging |
| Metrics | 12 months | Performance monitoring, debugging |
Below are some examples of the data that is retained for monitoring and debugging purposes. These examples not need to be complete and only serve to provide an impression of what it looks like.
Captcha challenge example
{
"resourceSpans": [
{
"resource": {
"attributes": [
{
"key": "deployment.environment",
"value": {
"stringValue": "development"
}
},
{
"key": "service.name",
"value": {
"stringValue": "nighttune-frontend"
}
}
],
"droppedAttributesCount": 0
},
"scopeSpans": [
{
"scope": {
"name": "@opentelemetry/instrumentation-fetch",
"version": "0.211.0"
},
"spans": [
{
"attributes": [
{
"key": "component",
"value": {
"stringValue": "fetch"
}
},
{
"key": "http.method",
"value": {
"stringValue": "POST"
}
},
{
"key": "http.url",
"value": {
"stringValue": "https://captcha.nighttune.app/abcdef0123/challenge"
}
},
{
"key": "http.status_code",
"value": {
"intValue": 200
}
},
{
"key": "http.status_text",
"value": {
"stringValue": "OK"
}
},
{
"key": "http.host",
"value": {
"stringValue": "captcha.nighttune.app"
}
},
{
"key": "http.scheme",
"value": {
"stringValue": "https"
}
},
{
"key": "http.user_agent",
"value": {
"stringValue": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:147.0) Gecko/20100101 Firefox/147.0"
}
},
{
"key": "http.response_content_length",
"value": {
"intValue": 120
}
}
],
"droppedAttributesCount": 0,
"droppedEventsCount": 0,
"droppedLinksCount": 0,
"endTimeUnixNano": "1769769401712000000",
"events": [
{
"attributes": [],
"droppedAttributesCount": 0,
"name": "fetchStart",
"timeUnixNano": "1769769401612000000"
},
{
"attributes": [],
"droppedAttributesCount": 0,
"name": "responseEnd",
"timeUnixNano": "1769769401685000000"
}
],
"flags": 257,
"kind": 3,
"links": [],
"name": "HTTP POST",
"spanId": "2d4e7b9e84fb6b26",
"startTimeUnixNano": "1769769401612000000",
"status": {
"code": 0
},
"traceId": "94a9e0d12877266af7c81c455070a7ae"
}
]
}
]
}
]
}Application log example
{
"resourceLogs": [
{
"resource": {
"attributes": [
{
"key": "deployment.environment",
"value": {
"stringValue": "development"
}
},
{
"key": "service.name",
"value": {
"stringValue": "nighttune-frontend"
}
}
],
"droppedAttributesCount": 0
},
"scopeLogs": [
{
"logRecords": [
{
"attributes": [],
"body": {
"stringValue": "Retrieving migrations from 1.5.0 to 2.2.0-dev.0"
},
"droppedAttributesCount": 0,
"observedTimeUnixNano": "1769769402648000000",
"severityNumber": 5,
"severityText": "DEBUG",
"timeUnixNano": "1769769402648000000"
}
],
"scope": {
"name": "frontend-logger"
}
}
]
}
]
}Backend logging example
{
"body": "[https://my.nightscout.host] Autotune successful.",
"date": "2026-02-01T15:07:18.885Z",
"id": "0jPzj8ZkwvV9nU8oDPLqNu7lUeu",
"timestamp": "2026-02-01T15:07:18.885Z",
"attributes": {
"span_id": "e1a8f3be2a9f79d5",
"timestamp": "2026-02-01 16:07:18 +01:00",
"trace_flags": "01",
"trace_id": "7d2b248ec58b093c4ebf3a4b297982c3"
},
"resources": {
"host.arch": "amd64",
"host.id": "39312AD0-E362-5538-9BC7-65508ECD5268",
"host.name": "nighttune.app",
"os.type": "linux",
"os.version": "6.8.0-90-generic",
"process.command": "/app/main.js",
"process.command_args": "[\"/.nvm/versions/node/v25.2.1/bin/node\",\"/app/main.js\"]",
"process.executable.name": "/.nvm/versions/node/v25.2.1/bin/node",
"process.executable.path": "/.nvm/versions/node/v25.2.1/bin/node",
"process.owner": "nighttune",
"process.pid": "68089",
"process.runtime.description": "Node.js",
"process.runtime.name": "nodejs",
"process.runtime.version": "25.2.1",
"service.instance.id": "121d696b-ebf3-474b-8366-b4b1dcd7a311",
"service.name": "nighttune-backend"
},
"scope": {},
"severity_text": "debug",
"severity_number": 5,
"scope_name": "@opentelemetry/winston-transport",
"scope_version": "0.21.0",
"span_id": "e1a8f3be2a9f79d5",
"trace_flags": 1,
"trace_id": "7d2b248ec58b093c4ebf3a4b297982c3"
}For those wanting to know the technical details of the retained data, the Nighttune database schema is located at https://github.com/houthacker/nighttune-backend/blob/main/src/config/db.sql.
No.
No.
No.
Under the GDPR there are a number of rights you can exercise. For Nighttune, the "Right of data portability" and the "Right to reassure" are fully automated so that you can exercise them at will.
To do so, go to Nighttune and click on the My Data step for further instructions.
Additionally, you can exercise the "Right of Access" by visiting the Application and inspect your data there.
If you want to exercise another right under the GDPR, please contact Nighttune at help@nighttune.app and explain your situation. We will then help you within a reasonable amount of time.
The Service Provider will retain User Provided data for as long as you use the Application and for a reasonable time thereafter. The Service Provider will retain Automatically Collected information for up to 24 months and thereafter may store it in aggregate, unrelateable to you or another individual.
The Service Provider are concerned about safeguarding the confidentiality of your information. The Service Provider provide physical, electronic, and procedural safeguards to protect information we process and maintain. For example, access to this information is limited to the Service Provider only, in order to operate, develop or improve the Application. Please be aware that, although we endeavor provide reasonable security for information we process and maintain, no security system can prevent all potential security breaches.
This Privacy Policy may be updated from time to time for any reason. The Service Provider will notify you of any changes to the Privacy Policy by updating this page with the new Privacy Policy. You are advised to consult this Privacy Policy regularly for any changes, as continued use is deemed approval of all changes.
By providing your Nightscout details to the Application, you are giving your consent to the Service Provider processing your information as set forth in this Privacy Policy now and as amended by us. "Processing,” means using cookies on a computer/hand held device or using or touching information in any way, including, but not limited to, collecting, storing, deleting, using, combining and disclosing information.
If you have any questions regarding privacy policy while using the Application, or have questions about the practices, please contact the Service Provider via email at help@nighttune.app.
This privacy policy page was largely inspired by App Privacy Policy Generator