Free license signup
components/FreeLicense.astro renders a compact Get license prompt above the package catalog in pages/DownloadsPage.astro, including when GitHub downloads are unavailable. The button opens a native modal dialog with keyboard focus containment, Escape/close-button/backdrop dismissal, and scroll locking. Form answers and the success state survive closing and reopening. It submits email, project usage, and optional organization to the DARTWIC Supabase claim-free-license function. The email, trimmed and lowercased, is the license key; no account, payment, or outbound email is involved.
The default function URL targets the existing DARTWIC project. Set PUBLIC_DARTWIC_LICENSE_SIGNUP_URL at Astro build time to use another environment. Never add a service-role key or signing key to this website. The function is intentionally public and has server-side input validation and an atomic database issuance cap.
Only email is required; project usage and organization are optional. Browser email validation requires an address such as you@example.com, and the server independently validates its format. This does not confirm mailbox existence or ownership. The popup explicitly states that email is used only as the license key and no marketing or spam will be sent. Optional answers are used to understand DARTWIC usage. Apply the backend’s 20260909160000_optional_signup_details.sql migration and deploy the updated function to accept omitted/blank usage answers.
Backend source and deployment instructions live in the neighboring DARTWIC repository under supabase/README.md. Deploy its free-signup migration and claim-free-license function before publishing this website build. New licenses have unlimited resources/installations, monthly offline leases, and a server-controlled entitlement end date. Repeated submissions preserve any existing plan, claimed installations, or revocation. The UI only shows success after a confirmed backend response and retains form answers after failures for safe retries.
Run npm run check and npm run build to validate the website. Build output is dist/; publish through the website’s normal hosting process.