Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "libredb-website",
"version": "1.5.0",
"version": "1.5.1",
"private": true,
"type": "module",
"description": "libredb.org — marketing website for LibreDB Studio (Astro static + Outstatic CMS)",
Expand Down
4 changes: 2 additions & 2 deletions src/data/platform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ export const limits: { term: string; detail: string }[] = [
{
term: 'Licence key',
detail:
'Every self-hosted install needs a licence key, and Platform does not start without one. The key sets the admin and user seats and the expiry.',
'Every self-hosted install needs a licence key, and Platform does not start without one. The key names your organization and the one domain Platform runs on, and sets the admin and user seats and the expiry.',
},
{
term: 'Audit',
Expand All @@ -153,7 +153,7 @@ export const offer = {
seats: '1 admin and 3 users',
term: '12 months',
headline: 'Join the waiting list',
lead: 'The licence for 1 admin and 3 users is free for 12 months — no card, nothing to buy. Need more seats? Those are paid, and we will send a price for the number you need. Tell us a little about your team and we will come back with a licence key and the installer.',
lead: 'The licence for 1 admin and 3 users is free for 12 months — no card, nothing to buy. Need more seats? Those are paid, and we will send a price for the number you need. Tell us your organization and the domain Platform will run on, and we will come back with a licence key and the installer.',
choices: [
{ value: 'Free licence — 1 admin + 3 users', label: '1 admin + 3 users', note: 'Free for 12 months' },
{ value: 'Paid licence — more seats', label: 'More than that', note: 'Paid — we send a price' },
Expand Down
38 changes: 36 additions & 2 deletions src/pages/platform.astro
Original file line number Diff line number Diff line change
Expand Up @@ -186,13 +186,38 @@ const mailto = `mailto:${contact.email}?subject=${encodeURIComponent(contact.sub
<input name="Email" type="email" autocomplete="email" required />
</label>
<label class="wl__field">
<span>Company <em aria-hidden="true">*</em></span>
<input name="Company" type="text" autocomplete="organization" required />
<span>Organization, as on the license <em aria-hidden="true">*</em></span>
<input name="Organization" type="text" autocomplete="organization" required />
</label>
<label class="wl__field">
<span>Your role</span>
<input name="Role" type="text" autocomplete="organization-title" placeholder="e.g. Head of Data" />
</label>
<!-- A license is issued for one domain: the host of Platform's own
URL, which Platform compares with AUTH_URL as it starts. A domain
name only — no scheme, no port, no IP address. -->
<div class="wl__field wl__field--wide">
<label for="wl-domain">Platform domain <em aria-hidden="true">*</em></label>
<input
id="wl-domain"
name="Platform domain"
type="text"
inputmode="url"
autocapitalize="none"
spellcheck="false"
placeholder="libredb-platform.example.com"
pattern="([A-Za-z0-9]([A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,63}"
maxlength="253"
title="A domain name such as libredb-platform.example.com, without https:// or a port"
aria-describedby="wl-domain-hint"
required
/>
<p class="wl__hint" id="wl-domain-hint">
The address people will open Platform at. The license runs on this one domain, so give the name you will
set as <code>endpoints.hosts.platform</code> in the installer's <code>libredb.yaml</code>. A domain name
only: no https://, no port, no IP address.
</p>
</div>
<label class="wl__field wl__field--wide">
<span>Databases you would connect</span>
<input name="Databases" type="text" placeholder="e.g. PostgreSQL, Oracle, MongoDB" />
Expand Down Expand Up @@ -482,6 +507,15 @@ const mailto = `mailto:${contact.email}?subject=${encodeURIComponent(contact.sub
font-style: normal;
color: var(--text-tertiary);
}
.wl__hint {
font: var(--weight-regular) var(--body-xs-size) / 1.6 var(--font-ui);
color: var(--text-secondary);
text-wrap: pretty;
}
.wl__hint code {
font: var(--weight-regular) 0.95em / 1 var(--font-mono);
color: var(--text-primary);
}
.wl__field input,
.wl__field textarea {
width: 100%;
Expand Down
13 changes: 9 additions & 4 deletions src/scripts/waitlist.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,15 @@ for (const form of document.querySelectorAll<HTMLFormElement>('[data-waitlist]')
form.addEventListener('submit', (event) => {
event.preventDefault();
const lines = ['Hello LibreDB team,', '', 'I would like to join the LibreDB Platform waiting list.', ''];
for (const [name, value] of new FormData(form)) {
const text = String(value).trim();
if (text) lines.push(`${name}: ${text}`);
}
// What the license is issued from goes first, so whoever issues it reads
// the licence choice, the organization and the domain without scrolling.
const fields = [...new FormData(form)]
.map(([name, value]) => [name, String(value).trim()] as const)
.filter(([, text]) => text)
.map(([name, text]) => [name, name === 'Platform domain' ? text.toLowerCase() : text] as const);
const first = ['Licence', 'Organization', 'Platform domain'];
fields.sort(([a], [b]) => (first.indexOf(a) + 1 || 99) - (first.indexOf(b) + 1 || 99));
for (const [name, text] of fields) lines.push(`${name}: ${text}`);
message = lines.join('\n');
window.location.href = `mailto:${to}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(message)}`;
if (status) status.hidden = false;
Expand Down
Loading