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:
- Disables the Privacy Sandbox advertising APIs — Topics, Protected Audience (interest-group bidding and ad auctions) and Attribution Reporting are all switched off, so the ad frame cannot read from or contribute to a cross-site interest profile for you. This reduces what the ad can earn; it is a deliberate choice.
- Denies the ad frame access to camera, microphone, geolocation and device sensors.
- Restricts where any script on the page may send data, so an ad cannot beacon information to an arbitrary destination.
- Restricts what the page may embed, so an ad cannot inject a frame pointing at a site of its choosing.
- Blocks plugin content outright, and prevents these pages being embedded in other sites.
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
- Revoke the notification permission (Android Settings → Apps → Shattered Archive → Notifications) to stop receiving push announcements — this also stops the app registering a push token for your device.
- Uninstalling the app stops all further collection from that device.
- Once AdMob is enabled, reset or opt out of your Android advertising ID under Settings → Google → Ads, and review Google's Ad Settings.
- Delete your account (as described above) to remove the server-side push-token record tied to it.
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)
- If you create an account: an email address, a hashed password (never the password itself), and any API keys or device credentials you register. Account records are encrypted at rest.
- Failed sign-in attempts are counted per username and IP address in order to lock out password guessing.
- Delete the account to remove the record, or write to the contact address below.
Scrum Poker (scrum-poker.shatteredarchive.dev)
- No accounts exist. A room holds the display names people typed, their estimates, and the room's own settings. Anyone with the room link can see them — the link is the membership.
- A participant is dropped after an hour of inactivity, and a whole room is deleted 30 days after it was last used.
- Do not put confidential ticket details into a shared demo room.
Soulsteel (soulsteel.shatteredarchive.dev)
-
No accounts and no server-side game storage. A game's full state — players, roles, timeline —
lives only in your browser's IndexedDB;
soulsteel-servernever sees it. - The only thing this page sends to a third party is the Google Analytics visit measurement described above.
Mobile app push registrations
- If you sign in to the app and it registers for push notifications, your device's push token is stored alongside your account, so an administrator-sent announcement can reach it. See The Shattered Archive mobile app above for the full detail.
- Removed when you sign out of the app, revoke its notification permission, or delete your account.
Game and Web clients
- Gameplay logs and connection details are processed to provide the client's own features. In the hosted demo these are handled by the demo server; in a self-hosted deployment they never leave your machine.
- Character names and in-game identifiers may appear in those logs, as user-provided input.
All services — server logs
- The web server records ordinary access logs: IP address, timestamp, requested path, response status and user agent. These are used to operate the service, to apply per-IP rate limits, and to investigate abuse and faults. They are not combined with advertising or analytics data.
What is never done
- No selling or renting of personal data.
- No sharing of account data with advertisers or analytics providers — including from the mobile app.
- No advertising or analytics on the sign-in hub, or on any page that handles a password.
- No advertising or analytics anywhere on
shatteredarchive.com, and no mobile app associated with that domain. - No push notifications used for advertising.
- No tracking of any kind in the software you self-host.
Your choices
- Use a content blocker, or disable JavaScript — every service still works.
- Clear cookies and site data from your browser at any time.
- Turn off personalised ads at Google My Ad Center, and opt out of Analytics with Google's add-on.
- In the app: revoke notification permission, or uninstall it — see the mobile app section above for details.
- Ask for an account or room to be deleted using the contact address below.
- Self-host the stack, in which case none of this applies at all.
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.