Privacy & Cookies

Applies to shatteredarchive.dev and its subdomains, and to the Shattered Archive mobile app for Android. Last updated 14 August 2026.

ShatteredArchive is an independent fan project. The services on shatteredarchive.dev are public demonstrations of a stack you are meant to run yourself — they exist to show what the software does, not to build an audience or a profile of you. The Shattered Archive mobile app is a shatteredarchive.dev product in the same sense — see The Shattered Archive mobile app below for what it specifically collects. This page describes exactly what is stored, by whom, and for how long.

Demo data is disposable. These instances are shared and are reset without notice. Do not put anything into them that you would mind losing or that you would mind another visitor seeing.

Advertising and analytics: where they are, and where they are not

Third-party advertising is limited to two pages, and analytics to three, deliberately and specifically:

Site Google AdSense Google Analytics
shatteredarchive.dev (this landing page) Yes — one unit Yes
scrum-poker.shatteredarchive.dev Yes — one unit, landing page only (not room pages) Yes
soulsteel.shatteredarchive.dev No Yes
auth.shatteredarchive.dev No No
game-client.shatteredarchive.dev No No
web-client.shatteredarchive.dev No No
build.shatteredarchive.dev, kingdom-tactics.shatteredarchive.dev No No
shatteredarchive.com and its subdomains see Shattered Archive Privacy / /
The ShatteredArchive software you self-host No No

This table covers the web pages above only. The mobile app has its own SDKs — Firebase Analytics, Firebase Crashlytics, push notifications, and (once enabled) Google AdMob — covered separately under The Shattered Archive mobile app below.

The sign-in hub at auth.shatteredarchive.dev carries no advertising or analytics of any kind, and this is a design decision rather than an oversight: no third-party script runs on the page where you type a password.

The software in the repository ships with no advertising, analytics or telemetry components. A self-hosted deployment sends nothing to us or to Google. The advertising code in the Scrum Poker source is inert unless a publisher id and ad unit id are supplied at build time, which a default build does not do.

Google AdSense

The two pages above each show a single ad unit. Google and its partners may set and read cookies or similar identifiers in order to serve and measure ads, and may use your IP address, the page you are on, and prior browsing to select them. We do not receive this data; we see only aggregate earnings and impression counts. We do not supply Google with your name, email address, or any account information, and we never will — the pages carrying ads have no account data to supply.

You can control or disable personalised advertising at Google My Ad Center, and review how Google uses data from sites that use its services at policies.google.com/technologies/partner-sites.

What the ad unit is not allowed to do

The ad is constrained by the site rather than trusted to behave. Both ad-bearing pages send a policy that:

The creative itself is rendered by Google inside a sandboxed cross-origin frame, which cannot read this page's content, cookies or local storage regardless of the above.

Google Analytics

Analytics is used to count visits and see which demos people actually open. It sets a first-party _ga cookie holding a randomly generated identifier. That cookie is scoped to the exact hostname that set it, rather than to shatteredarchive.dev as a whole — so the identifier is not shared between the landing page, Scrum Poker, Soulsteel, or any other subdomain, and it is never transmitted to the sign-in hub.

You can opt out across all sites with Google's Analytics opt-out browser add-on.

Blocking either one

Both are loaded from third-party origins and both are wrapped so that a failure is silent. A content blocker, a privacy-focused browser, or disabling JavaScript will remove them, and every service will continue to work normally. Nothing on any of these sites is gated behind allowing them.

The Shattered Archive mobile app

The Shattered Archive app for Android is a shatteredarchive.dev product, distributed separately from the shatteredarchive.dev web pages above. It signs you in through the same sign-in hub used everywhere else (auth.shatteredarchive.dev), and — once signed in — talks to shatteredarchive.com's API for the same account and library data the website itself stores, exactly as described in shatteredarchive.com's own privacy notice for that data. That reuse is a backend implementation detail; it does not put analytics, ads, or the app itself onto shatteredarchive.com. What is specific to the app is the set of SDKs it carries: Firebase Analytics, Firebase Crashlytics, push notifications, and — once enabled — Google AdMob.

SDK What it collects Purpose Retention
Firebase Analytics Screens viewed, app opens, coarse device and OS info, and an anonymous per-install identifier. No account identifier is included in analytics events. Understand which parts of the app are actually used. Per Firebase's own analytics data-retention setting (not customised by us) — see Firebase's privacy and security page for specifics.
Firebase Crashlytics Crash and error reports: stack trace, app version, device model, OS version, and free memory/disk at the time of the crash. Diagnose and fix bugs. Per Firebase's own crash-report retention — see the link above.
Push notifications (Firebase Cloud Messaging) A device-specific push token, associated with your account while you are signed in to the app. Deliver announcements sent by ShatteredArchive administrators — for example, advance notice of planned maintenance. Every announcement sent is itself logged (who sent it, when, to how many devices) for accountability; that log is visible only to administrators. Push is never used for advertising. Removed when you sign out of the app or revoke its notification permission.
Google AdMob (planned — not yet enabled in the current release) Once live: an advertising identifier, coarse device info, and ad interaction data, used by Google and its partners to select and measure ads — the same categories of data any AdMob-integrated app collects. Ad serving and measurement, same rationale as the AdSense units above. Governed by Google's own AdMob data policy. This notice will be updated with specifics before ads go live.

We do not receive raw analytics or crash data ourselves — Google/Firebase processes it and surfaces aggregated dashboards to us. We never supply Google with your name, email address, or account credentials from the app.

Your choices, in the app

Cookies and local storage

Everything the sites store in your browser, and why. There is nothing else.

Name Where Purpose Lifetime
__Host-sa_session Cookie, auth.shatteredarchive.dev only Keeps you signed in to the hub. Strictly necessary. Marked HttpOnly, Secure and SameSite=Lax, and scoped to that single hostname — it is not readable by page scripts and is not sent to any other subdomain. The __Host- prefix makes your browser enforce that scoping, so no other subdomain can forge a cookie of this name. Until sign-out
_ga, _ga_* Cookie, landing page, Scrum Poker and Soulsteel Google Analytics visit measurement. Not necessary; blockable. Up to 2 years
Google advertising cookies Set by Google on the two ad-bearing pages Ad serving, frequency capping and fraud prevention. Governed by Google's policies. Varies — see Google
scrum-poker:name Local storage, Scrum Poker Remembers the display name you type so you do not retype it per room. Until cleared
scrum-poker:theme Local storage, Scrum Poker Light or dark preference. Until cleared
__Host-sp_secret_<room id>, __Host-sp_host_<room id> Cookie, one pair per room you join, Scrum Poker only Per-room tokens that let a refresh re-attach you to your own row and keep your vote, and that mark you as the room's organizer. Strictly necessary for the room to work. Marked HttpOnly, Secure and SameSite=Lax — not readable by page scripts at all, unlike the local-storage values these replaced. The __Host- prefix makes your browser enforce that scoping, so no other subdomain can forge a cookie of this name. 30 days, or when the room expires — whichever is first

Clearing site data for a Scrum Poker room removes your ability to re-attach to your existing row and, if you created the room, your organizer controls. Both are stored only in your browser — there is no account to recover them from.

What each service stores on the server

Sign-in hub (auth.shatteredarchive.dev)

Scrum Poker (scrum-poker.shatteredarchive.dev)

Soulsteel (soulsteel.shatteredarchive.dev)

Mobile app push registrations

Game and Web clients

All services — server logs

What is never done

Your choices

Children

These services are not directed at children and no account is knowingly created for anyone under the age at which consent is required in their country.

Changes

This notice may change as the project evolves. The date at the top reflects the latest revision, and the history is public in the repository.

Contact

Questions, corrections, or deletion requests: privacy@shatteredarchive.com.