Skip to content
Browse documentation
Decided

Questions and answers

The twenty questions only the product owner could answer, and the answers.

Updated: 30 October 2026

All twenty questions are decided. On 2026-10-30 the product owner confirmed that what is built is the answer: wherever the app already does it, that is the decision. The questions page shows each choice.

Decided

  • Q1 Domain — incico.eu. The website, the account page’s CORS and the e-mail templates use it (A1).
  • Q2 Supabase project — decided 2026-09-12: a new project. incico-staging (ref ugdoylltwhcbegccqlje, eu-west-1) was created in the Sefaja organisation and phase 1 is deployed to it. app-template is not reused: sharing a project would mix two products’ auth users, storage buckets and migration history. The production project follows in phase 7, so there is no idle project holding credentials in the meantime.
  • Q3 Sign-in methods — e-mail and Google; Apple on iOS. E-mail with a six-digit code or a password, and Google once its client is configured. Android does not offer Apple; it comes with iOS when that resumes (A3, A43).
  • Q4 Monetisation — no ads, free. No ads SDK and no purchase in the app; the entitlements hook stays reserved for a supporter purchase later (A4).
  • Q5 Connected services — phone contacts and Google Contacts. Microsoft/Outlook stays behind a flag that is off (A77).
  • Q6 Multiple profiles — kept. Managed profiles and the profile switcher are built (A43).
  • Q7 Family relations — a relation label, no auto-connect (A7).
  • Q8 Languages — English and Dutch for the app, the website and the e-mails, with key parity tested.
  • Q9 Application identifier — decided 2026-09-12: nl.sefaja.incico. The fresh id (assumption A9 confirmed) rather than com.sefaja.incico; v3 gets new store records and v1 installs do not update in place.
  • Q10 Phone verification — not at launch. Phone numbers are unverified; e-mail addresses are verified by Supabase Auth (A43).
  • Q11 Web app — none; the website has only the account page to export data or delete the account (A11, A91).
  • Q12 Analytics — PostHog EU with typed events and the app’s own crash handler, asked at onboarding with No as the default (A89).
  • Q13 Tablets — two panes: the rail, the list and the detail beside it (Tablet).
  • Q14 Repository — the monorepo C:\Source\IncicoV3.
  • Q15 Branching — main, develop and feature branches, as in Saymail.
  • Q16 Mac mini access — decided 2026-09-12: reachable, Apple team 47HUKYRBQZ. The Mac mini is reachable over key-based SSH (Xcode 26.6, iOS 26.5 SDK, iPhone 16 / iPad Pro simulators); it uses the Saymail team 47HUKYRBQZ, already set up there, rather than v2’s U96BHA22RF.
  • Q17 Minimum OS versions — Android 8.1 (API 27) and iOS 17.
  • Q18 Retention — immediate deletion; backups age out within 30 days (Security).
  • Q19 Photos — up to four per profile, 1024 px, EXIF stripped, in a private bucket, with the limit enforced in the database (A18).
  • Q20 Android release builds — shrink and obfuscate. R8 is on; the mapping travels in the bundle for Play and every release build uploads it to PostHog, where crash frames find it by their map_id (A19).
  • Platform order — decided 2026-09-18: Android first, iOS paused. The product owner stopped iOS development after phase 4 so the Android app can be finished first; phases 5, 6 and 7 are delivered on Android only. The iOS phase 5 work stays unmerged on feature/phase-5-ios (tasks 0 to 13 of its plan done; task 14, the background task, telemetry and accessibility pass, and task 15, the smoke UI test and gate, remain). While iOS is paused, mobile/platforms.json marks it paused, and tools/i18n-diff.mjs and tools/ios-resources-check.mjs report iOS drift as a backlog instead of failing (node tools/i18n-diff.mjs --backlog lists it); that backlog is the starting list when iOS resumes. This replaces design principle 4 (“Twin apps, one behaviour”) for v3.0 on Android: the canonical i18n keys, vectors and test tags are still written for both platforms, but only Android implements them for now.

Questions this design answered itself

See the Assumptions log for the full list with reasons.

Actions on the old code, independent of any answer

  1. Revoke the Google service-account key found in C:\Source\IncicoV2\incico2\incico-8b116-e5dec1dab4f3.json (Google Cloud IAM → service accounts → playstore-console@incico-8b116) and delete the file.
  2. Rotate every credential that appears in IncicoV1 appsettings and pipelines (SQL, storage, Service Bus, OAuth client secrets, SMTP, RSA signing keys). Treat the v1 Android keystore as leaked.
  3. Unpublish v1 from both stores until v3 ships — done 2026-10-30. The released MAUI client disables TLS certificate validation. App Store Connect app 6505110736 (“Incico”, only version 1.2, rejected) is removed from sale in every country (0 of 175). On Google Play nothing was public: com.sefaja.incico (“IncicoV2”) only ever had internal testing, and the v3 record nl.sefaja.incico is unpublished; a store search for Incico finds neither.