Thorns & Stars ("the App") is an unofficial, fan-made app for readers of A Court of Thorns and Roses, developed by Nigelware ("we", "our", "us"). It sorts you into one of seven fae courts, then offers daily puzzles, trivia and standings between the courts. This policy explains what the App sends to us and to the services it uses, why, and how to delete it.
The first time you open the App it creates an account with no credentials attached — a random identifier and nothing more. It lets our server tell one player's results from another's. There is no sign-up, no password and no email address. The identifier is kept in your iPhone's keychain, so reinstalling the App on the same iPhone keeps the same account.
Your answers to the opening quiz produce a court and a gift. You then take a display name drawn from fixed lists of words; you cannot type one, so a display name never contains personal information. We store your court, your gift, the drawn name, when you were sorted and, if you use your one chance to sort again, your previous court. Your answers to the quiz itself are not sent anywhere; we only count how far players get through it (section 5).
Your drawn name, your court and your points are public. Other players see them in the standings, at the top of each court's week and on each day's trivia leaderboard, and the random identifier of your account is stored alongside them.
When you finish a daily puzzle, or your first trivia run of the day, the App sends which game it was, the day, the points earned, your court and your drawn name. Our server checks each result before it counts, adds it to your court's weekly and all-time totals, and notes that you played, so your court can be ranked by the members who score.
The App can draw a portrait of you, as a fae of your court, from a photo you take or choose. Nothing is sent until you agree, in the App, to your photo going to Google, and you can withdraw that agreement at any time under You → Settings → About and privacy → Photos for portraits → Stop sending photos.
When you ask for a portrait, the photo is reduced in size on your iPhone and sent to our server, which passes it, with the look you chose and a description of your court's colours and your gift, to Google's image-generation service, Gemini, to draw the portrait. Your account, your drawn name and your points are not sent to Google. We do not keep your photo: our server holds it only for the length of the request and writes it nowhere, and the finished portrait goes straight back to your iPhone without being stored on our server. Under the Gemini API terms for paid services, Google does not use your photo or the portrait to improve its products, and keeps requests for a limited period solely to detect and prevent misuse.
We keep a record that a portrait was made — the look, your court, the date, which allowance paid for it and your anonymous account — so that the monthly allowance works. The portrait itself is saved in the App's storage on your iPhone. Like the rest of the App's data there, it is included in your iPhone's own backups, if you make them, and is never uploaded to us. Use a photo of yourself; every portrait is drawn as an adult.
Through Google Analytics for Firebase we record events such as "opened Ink", "finished today's puzzle", "chose a portrait look" or "saw the membership offer", together with your anonymous account id, your court and gift, how many of the books you have told the App you've read, whether reminders are on, whether you started a trial or bought membership, and the general device information that service collects automatically (device model, operating system version, language and country-level region) with an identifier it gives this installation of the App. We use this to see which parts of the App are worth improving and whether the spoiler settings hold the right things back. We do not use the advertising identifier.
If the App crashes, or cannot open a puzzle it should have been able to, a report is sent to us through Firebase Crashlytics: where in the App's code it happened, the device model, the operating system version and how much memory and storage were free. A report is tied to an installation of the App, not to you as a player: we do not attach your account, your drawn name or your court to it. We use these reports only to find and fix faults.
Membership is an optional subscription. Apple takes the payment, and we never see your name, your payment card or your Apple Account details. Apple gives the App a signed record of the subscription, our server checks it with Apple, and keeps these against your anonymous account so that what you paid for works: which plan it is, Apple's reference for the subscription, the date it runs to, and how many member portraits have been used this month.
The membership offer is the App's own screen. No other company is told about your membership or what you do in the App to decide which offer to show.
The App uses Firebase App Check, with Apple's App Attest, to prove to our server that a request comes from the real App on a real device. This exchanges a device-generated token; it carries no personal information.
Your puzzle progress, streaks, your record, the trivia questions you have seen, your reading progress and spoiler choices, your settings and your portraits are kept on your iPhone and are not sent to us, except that the number of books you've read is part of the usage statistics (section 5). Daily reminders, if you turn them on, are scheduled by iOS on your iPhone and are not sent through any server. Share cards are made on your iPhone and go only where you send them.
| Service | What it does |
|---|---|
| Google Firebase Authentication, Cloud Firestore, Cloud Functions, App Check, Analytics, Crashlytics | The anonymous account, the standings, checking results, usage statistics and crash reports. |
| Google Gemini API | Draws a portrait from your photo, when you ask for one. |
| Apple | Payments, subscriptions and refunds, and confirming a subscription is genuine. |
These services act for us, on servers in the United States.
In the App: You → Settings → About and privacy → Delete my data. This deletes your anonymous account and its profile, removes your drawn name from the standings and leaderboards, deletes your portrait records and your membership record on our server, and clears your progress, streak, record, portraits and settings from your iPhone. The next time you open the App, you start again as a new player.
Points you had already earned stay in your court's totals as anonymous numbers: those records keep the court, the game, the day and the score, and nothing that identifies you. Your court also goes on counting you among its members for the weeks you played, as a number only. If you were a member, the subscription's record keeps the plan and that month's portrait count, with no account attached.
Deleting your data does not cancel a subscription: Apple goes on billing it until you cancel it in your Apple Account settings. If it is still running, the App links it to your new account. Usage statistics and crash reports are held under identifiers that no longer lead to any account once you delete it, and they expire on those services' own schedules. Deleting the App from your iPhone removes what is stored on the iPhone; to remove what is stored on our servers, use Delete my data first.
Your profile, your results and your membership record are kept until you delete them in the App.
Thorns & Stars is meant for readers aged 13 and over. It is not directed at children under 13, and we do not knowingly collect personal information from children under 13.
We may update this Privacy Policy from time to time. Changes will be posted on this page with an updated date, and a significant change will also be noted in the App.
Questions, or anything that looks wrong: nigeldbentley@gmail.com