Draft prepared October 24, 2026
Privacy notice
This notice describes the current preview build, but the owner must complete the jurisdiction, legal bases, and retention decisions before publication. The current app does not provide cloud-copy deletion or account deletion.
Who is responsible
The operator and data controller is John M. Fredericks. Privacy questions and requests should go to jfredericks4@gmail.com.
Mailing address for privacy correspondence only:
John Fredericks
1235 Pennsylvania Ave SE
Unit #1357
Washington, DC 20003
This mailing address is not represented as a physical business location or registered-agent address. It was supplied by the operator; this draft does not assert that any address-provider subscription or contract has been independently verified.
Adults only
The Outfit Path is intended only for people age 18 and over. Before any wardrobe, account, or cloud scripts load, the app asks the visitor to confirm that they are at least 18. It does not ask for a birth date or identity document. The confirmation is a self-attestation, not verified proof of age, and is stored only as a value in that browser tab's session storage. It is not included in the cloud backup.
If a visitor selects “I am under 18,” the wardrobe, account, and cloud scripts do not load and no age response is saved. The hosting provider still receives ordinary request data needed to deliver the initial page. A visitor can bypass a browser-only gate, so this control cannot guarantee age or eliminate legal risk.
Invite-only beta
There is no public account signup in the app. John M. Fredericks chooses whom to invite and uses Supabase's administrative invitation flow. Prospective testers should be invited only after they state that they are age 18 or older. That operator check and the in-app gate are self-attestations, not verified age assurance. Supabase's live “Allow new users to sign up” setting was disabled by John M. Fredericks and verified off after reload on October 24, 2026; anonymous sign-ins were off and email confirmation was on.
After the 18+ gate, signed-out visitors must sign in before wardrobe access. A valid invitation or recovery callback requires password setup before continuing. Password-reset requests return a generic response that does not confirm whether an account exists. An account that optionally enrolls an authenticator app must also complete its second factor. Signed-out, expired, or second-factor-pending sessions see an account gate; the separate guest copy remains stored locally but hidden.
Supabase receives the invited email address and sends the invitation email. The invitation link should not be shared. The app never contains an administrator or service-role credential. Invite administration, public-signup configuration, and user management remain in the protected Supabase dashboard.
What the app handles
| Data | Where it goes | When |
|---|---|---|
| Clothing names, categories, colors, style, season, availability, and notes | Browser localStorage, separated into a guest copy and a copy for each signed-in account on that browser. If the user manually uploads, a JSON copy goes to that account's Supabase database row. | When pieces are saved; cloud transfer only after “Upload this account copy.” |
| Saved looks and outfit ratings | Account-scoped browser localStorage; optional manual Supabase JSON backup. | When a look or rating is saved; cloud transfer only after manual upload. |
| Wardrobe photos | Browser IndexedDB, separated into guest and signed-in-account namespaces, plus user-created JSON backup files. Photos and photo identifiers are removed from Supabase uploads. | When the user selects or photographs an item. |
| Invited email address, password submission, and authentication session | The operator sends the invited email address to Supabase from its Dashboard. Passwords are submitted directly to Supabase Auth over HTTPS; the app does not store them. The Supabase browser client persists the session in browser storage. | When the operator sends an invitation, and when the invited adult finishes password setup or signs in. |
| Password-recovery email and optional authenticator-app factor | Supabase Auth processes the recovery email, temporary recovery session, TOTP enrollment QR secret, and six-digit verification codes. The app does not write passwords, TOTP secrets, or verification codes to wardrobe storage or logs. | Only when the user explicitly requests recovery or chooses to enroll/verify/remove an authenticator factor. |
| 18+ confirmation | A yes-only flag in this browser tab's sessionStorage; not sent to Supabase or included in exports. | Only after the visitor selects “I am 18 or older.” No value is saved on decline. |
| Export/import backup files | Exported to or selected from the user's device. Full exports can include photos as base64 data. | Only when the user chooses Export or Import. |
| Ordinary request data such as IP address, user agent, timestamps, and requested URLs | May be received by the hosting provider and service providers involved in a request. | When the site, Supabase, or optional recognition resources are accessed. |
How data is used
- Provide the closet, outfit suggestions, saved looks, local preference learning, backup, and authentication features.
- Protect accounts and isolate each signed-in user's cloud document through database access policies.
- Diagnose failures and maintain the service where provider logs are available.
The preview contains no app analytics, advertising trackers, or behavioral advertising. It does not use a hosted AI inference API. The optional recognition model runs in the browser.
Service providers and external requests
- Supabase: invitation email, authentication, and the optional wardrobe JSON backup.
- GitHub Pages or the eventual hosting provider: site delivery and ordinary request logs.
- jsDelivr: pinned browser libraries and optional recognition runtime files.
- Hugging Face and its delivery infrastructure: the optional recognition model, pinned to a specific revision.
The user's image pixels are processed in the browser and are not intentionally uploaded to those recognition-resource providers. Download requests still disclose ordinary network metadata. Provider retention and international-transfer terms have not been verified for this draft; review their current policies before launch.
Storage, retention, and deletion
- Local wardrobe data remains until the user resets the app, clears site data, or the browser evicts it.
- Signing out removes this app's session from the current browser but does not delete the Supabase account or cloud row.
- A manual cloud upload overwrites that user's previous cloud document. The current preview has no self-service cloud-copy or account deletion control.
- Signing into a different account switches the visible local wardrobe to that account's separate browser namespace. A preserved guest wardrobe is not assigned or uploaded automatically; copying it into an account requires a separate confirmation and leaves the guest copy intact.
- Exported backup files remain wherever the user stores or shares them and are not encrypted by the app.
- [CLOUD ACCOUNT/DOCUMENT RETENTION PERIOD — REQUIRED]
- [PROVIDER LOG RETENTION DECISIONS — REQUIRED]
Security
The app uses HTTPS service endpoints, a publishable browser key, row-level database policies, input validation, output escaping, a restrictive content policy, and pinned dependencies. The privileged service key and database password are not used in frontend code. No system can be guaranteed secure; the security review still requires live two-account isolation testing and an approved deletion process before launch.
User choices and requests
Users can export a full local backup, reset local data, pause local preference learning, and sign out of the current browser. Rights such as access, correction, deletion, restriction, objection, or portability depend on the user's jurisdiction. Requests can be sent to jfredericks4@gmail.com. This contact route still needs an approved identity-verification and request-handling process before launch.
Legal basis, age eligibility, and international transfers
[APPLICABLE JURISDICTIONS AND LEGAL BASES — REQUIRED]
The service is for adults age 18 and over and is not directed to children. Under-18 visitors must not use the wardrobe, account, or cloud features or submit personal information. The current self-attestation gate is a product restriction, not a verified age-assurance service and not a guarantee that a minor cannot gain access. The operator must obtain jurisdiction-specific legal advice before launch.
[INTERNATIONAL TRANSFER MECHANISM, IF REQUIRED — REQUIRED]
Changes
Material changes should be reflected here with a new date and, where required, notice or consent. This draft has no effective date because it is not approved for publication.