import type { Route } from "./+types/privacy";
export function meta(_args: Route.MetaArgs) {
return [{ title: "Privacy — trails.cool" }];
}
export default function PrivacyPage() {
return (
Privacy Manifest
trails.cool is committed to privacy by design. This manifest documents
everything we collect, why, and how you can control it.
Planner (planner.trails.cool)
The Planner collects no personal data. Sessions are anonymous —
there are no user accounts, no tracking, and no analytics on your routes.
- No cookies (except ephemeral session state)
- No user accounts or login
- No route data is stored permanently without your action
- Session data is automatically deleted after 7 days of inactivity
Journal (trails.cool)
The Journal stores the data you explicitly provide:
- Account data: email, username, display name, passkey credentials
- Routes: name, description, GPX data, geometry
- Activities: title, description, date, linked routes
All your data is exportable at any time in open formats (GPX, JSON).
You can self-host your own instance and migrate your data completely.
Error Tracking (Sentry)
Both apps use Sentry for
error monitoring. This helps us find and fix bugs quickly.
What Sentry collects:
- Error details: stack traces, error messages, browser/OS info
- Performance traces: page load times, route navigation timing
- Session replays on error: a recording of the session leading up to an error (DOM snapshots, not video)
- User context (Journal only): user ID and username are attached to errors for debugging
- Session ID (Planner only): the anonymous session ID is attached to errors
What Sentry does NOT collect:
- Route or GPX data
- Passwords or passkey credentials
- Form input contents (masked in replays)
Data retention:
Sentry data is retained for 90 days and then automatically deleted.
Sentry's servers are hosted in the EU (Frankfurt).
Email
The Journal sends transactional emails for magic link login and welcome messages
via SMTP. On the official instance, emails are sent through our own mail server.
What is sent via email:
- Magic link: a one-time login link sent to your email address
- Welcome email: a greeting after registration
Self-hosted instances can configure their own SMTP server. No email content
is stored beyond what your mail server retains.
Third Parties
- Sentry (Functional Software Inc.) — error tracking, as described above
- OpenStreetMap — map tiles are loaded from OSM tile servers. OSM's privacy policy applies to tile requests.
- BRouter — routing requests are processed by our self-hosted BRouter instance. No data is sent to third parties for routing.
- SMTP provider — transactional emails (magic link, welcome) are delivered via SMTP. Self-hosters configure their own provider.
What We Don't Do
- We don't sell data
- We don't show ads
- We don't build user profiles
- We don't use tracking pixels or analytics
- We don't share data with anyone except as listed above
Security Practices
- Authentication: Passkey (WebAuthn) and magic link login. No passwords stored.
- Encryption: All traffic over HTTPS with HSTS preload. Cookies are httpOnly and secure.
- Headers: Content-Security-Policy, X-Frame-Options, X-Content-Type-Options on all responses.
- Infrastructure: Docker containers run as non-root. Firewall restricts to HTTP/HTTPS/SSH only.
- CI/CD: Gitleaks secret scanning and dependency auditing on every pull request.
- Vulnerability reporting: See our SECURITY.md for responsible disclosure.
Last updated: March 2026. If this manifest changes, we'll note it here.
);
}