Quarry welcome
A database's welcome, dark, with a terminal session, three steps and the free tier.
quarry_ (https://quarry.example) north-ledger · eu-central Welcome, Priya. YOUR FIRST DATABASE IS RUNNING. It’s called north-ledger, it lives in Frankfurt, and it’s yours to break. Four commands take you from an empty schema to a shell. $ curl -fsSL quarry.example/i | sh $ quarry login $ quarry link north-ledger $ quarry shell north-ledger=> select 'hello' as world; 01 Connect from your laptop Run quarry link in any project, and your shell gets credentials that expire in an hour. Nothing to paste into a .env file. 02 Load a sample Fill it with two million real journeys from London’s bike hire scheme, so your first queries have something to say. 03 Ask it something Open the console and run the query we left in it. It finds the busiest docking station before 9am, in about forty milliseconds. Open the console (https://quarry.example/console/north-ledger) Or read the quickstart (https://quarry.example/docs/quickstart) WHAT THE FREE TIER HOLDS 10 GB of storage 1 bn row reads a month 3 branches to try ideas on If anything gets in your way, reply to this email. It comes to the four of us who answer support, and one of us will write back today. Tomás, for the Quarry team Quarry Data GmbH, Rosenthaler Straße 40, 10178 Berlin Email settings (https://quarry.example/settings/email) · Unsubscribe (https://quarry.example/unsubscribe)
Email 600px: background #0e0f10
Section 600px
Row 504px: 2 side by side
Column 120px
Text 120px "quarry_ (https://quarry.example)"
Column 384px
Text 384px "north-ledger · eu-central"
Column 504px
Text 504px "Welcome, Priya."
Heading h1 504px "Your first database / is running."
Text 470px "It’s called north-ledger, it lives in Frankfurt, and it’s yours to break. Four …"
Column 504px: background #17191b
Text 454px "$curl -fsSL quarry.example/i | sh / $quarry login / $quarry link north-ledger /…"
Column 504px
Row 504px: 2 side by side
Column 32px
Text 32px "01"
Column 452px
Heading h3 452px "Connect from your laptop"
Text 452px "Run quarry link in any project, and your shell gets credentials that expire in …"
Row 504px: 2 side by side
Column 32px
Text 32px "02"
Column 452px
Heading h3 452px "Load a sample"
Text 452px "Fill it with two million real journeys from London’s bike hire scheme, so your …"
Row 504px: 2 side by side
Column 32px
Text 32px "03"
Column 452px
Heading h3 452px "Ask it something"
Text 452px "Open the console and run the query we left in it. It finds the busiest docking …"
Row 504px: 2 side by side, stacked on phones
Button 200px: background #d4f25a "Open the console" → https://quarry.example/console/north-ledger
Text 280px "Or read the quickstart (https://quarry.example/docs/quickstart)"
Column 504px
Text 504px "WHAT THE FREE TIER HOLDS"
Column 504px
Row 504px: 3 side by side
Column 152px
Column 152px
Text 152px "10GB"
Text 152px "of storage"
Column 152px
Column 152px
Text 152px "1bn"
Text 152px "row reads a month"
Column 152px
Column 152px
Text 152px "3"
Text 152px "branches to try ideas on"
Column 504px
Text 504px "If anything gets in your way, reply to this email. It comes to the four of us w…"
Text 504px "Tomás, for the Quarry team"
Text 504px "Quarry Data GmbH, Rosenthaler Straße 40, 10178 Berlin / Email settings (https:/…"- infoemail/degraded
fonts on this Email in email: Apple Mail and iOS Mail load web fonts; Gmail and classic Outlook don't, and show the next font in each stack
root.props.fonts - infoemail/outlook-degraded
letterSpacing on this Text in classic Outlook: normal spacing: Word keeps letter spacing but doesn't draw it
root.children[0].children[0].children[0].children[0].style.letterSpacing - infoemail/outlook-degraded
letterSpacing on this Heading in classic Outlook: normal spacing: Word keeps letter spacing but doesn't draw it
root.children[0].children[1].children[1].style.letterSpacing - infoemail/outlook-degraded
borderRadius on this Column in classic Outlook: square corners
root.children[0].children[2].style.borderRadius - infoemail/outlook-degraded
letterSpacing on this Text in classic Outlook: normal spacing: Word keeps letter spacing but doesn't draw it
root.children[0].children[5].children[0].style.letterSpacing - infoemail/outlook-degraded
letterSpacing on this Text in classic Outlook: normal spacing: Word keeps letter spacing but doesn't draw it
root.children[0].children[5].children[1].children[0].children[0].style.letterSpacing - infoemail/outlook-degraded
letterSpacing on this Text in classic Outlook: normal spacing: Word keeps letter spacing but doesn't draw it
root.children[0].children[5].children[1].children[1].children[0].style.letterSpacing - infoemail/outlook-degraded
letterSpacing on this Text in classic Outlook: normal spacing: Word keeps letter spacing but doesn't draw it
root.children[0].children[5].children[1].children[2].children[0].style.letterSpacing
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="x-apple-disable-message-reformatting"><!--[if !mso]><!--><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta name="format-detection" content="telephone=no,address=no,email=no,date=no,url=no"><meta name="color-scheme" content="light"><meta name="supported-color-schemes" content="light"><!--[if mso]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]--><title>Welcome to Quarry</title><!--[if !mso]><!--><style>@font-face{font-family:"IBM Plex Sans";src:url("https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxeKYbSB4Zh.woff2") format("woff2");font-weight:100 700}@font-face{font-family:"IBM Plex Mono";src:url("https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1i8q131nj-o.woff2") format("woff2");font-weight:400}@font-face{font-family:"IBM Plex Mono";src:url("https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwlBFgsAXHNk.woff2") format("woff2");font-weight:500}</style><!--<![endif]--><style>table,td{mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse}img{-ms-interpolation-mode:bicubic}a[x-apple-data-detectors]{color:inherit!important;text-decoration:none!important}.eeev5y:hover{background-color:#c2e040!important}@media (max-width: 620px){.eezu4q>div{width:100%!important;max-width:100%!important}.ej8cul{width:auto!important}.euft5g{padding-bottom:36px!important}.e7utzv{font-size:31px!important;letter-spacing:-0.9px!important;line-height:33.48px!important}.e4h62s{font-size:16px!important;line-height:24.8px!important}.eusz60{font-size:12px!important;line-height:20.4px!important}.eyb6fk{padding:16px!important}.e7t3zz{width:14px!important}.eav895{width:100%!important;max-width:none!important}.ednwsa{height:16px!important}.e7yqht{font-size:22px!important;line-height:24.2px!important}.euvcqx{width:33.33%!important;padding-right:8px!important;box-sizing:border-box!important}.eco186{width:33.33%!important;padding-left:4px!important;padding-right:4px!important;box-sizing:border-box!important}.e7y04q{width:33.33%!important;padding-left:8px!important;box-sizing:border-box!important}.ep23qz{padding-left:24px!important;padding-right:24px!important}.elu03s{padding-top:28px!important;padding-bottom:40px!important}}@media (max-width: 620px){.eippbt{display:none!important}}</style></head><body style="margin:0;padding:0;-webkit-text-size-adjust:100%;background-color:#0e0f10"><div style="display:none;max-height:0;overflow:hidden;mso-hide:all" aria-hidden="true" data-skip-in-text="true">north-ledger is running in Frankfurt. Three steps from an empty schema to your first answer.͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ </div><div role="article" aria-roledescription="email" aria-label="Welcome to Quarry" lang="en" style="background-color:#0e0f10;overflow-wrap:break-word;word-break:break-word"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" bgcolor="#0e0f10" style="background-color:#0e0f10"><tr><td align="center" class="elu03s" style="padding-top:40px;padding-bottom:56px"><!--[if mso]><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="600" align="center"><tr><td><![endif]--><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="max-width:600px"><tr><td class="ep23qz" style="padding:0 48px 0 48px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td class="euft5g" style="padding-bottom:48px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td width="120" valign="middle" style="width:120px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><p style="margin:0;color:#eceae4;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:18px;font-weight:500;line-height:28.8px;mso-line-height-rule:exactly;letter-spacing:-0.3px;text-align:left"><a href="https://quarry.example" style="color:#eceae4;text-decoration:none">quarry<span style="color:#d4f25a">_</span></a></p></td></tr></table></td><td width="384" valign="middle" class="ej8cul" style="width:384px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><p style="margin:0;color:#9c9a92;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:12px;line-height:20.4px;mso-line-height-rule:exactly;text-align:right">north-ledger · eu-central</p></td></tr></table></td></tr></table></td></tr></table></td></tr><tr><td class="euft5g" style="padding-bottom:48px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td style="padding-bottom:20px"><p style="margin:0;color:#9c9a92;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:13px;line-height:22.1px;mso-line-height-rule:exactly;text-align:left">Welcome, Priya.</p></td></tr><tr><td style="padding-bottom:20px"><h1 class="e7utzv" style="margin:0;color:#eceae4;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:44px;font-weight:500;line-height:47.52px;mso-line-height-rule:exactly;letter-spacing:-1.4px;text-align:left">Your first database<br>is running.</h1></td></tr><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="max-width:470px"><tr><td><p class="e4h62s" style="margin:0;color:#9c9a92;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:18px;line-height:27.9px;mso-line-height-rule:exactly;text-align:left">It’s called <span style="color:#eceae4">north-ledger</span>, it lives in Frankfurt, and it’s yours to break. Four commands take you from an empty schema to a shell.</p></td></tr></table></td></tr></table></td></tr><tr><td class="euft5g" style="padding-bottom:48px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="border-collapse:separate"><tr><td class="eyb6fk" bgcolor="#17191b" style="padding:20px 24px;background-color:#17191b;border:1px solid #2b2d30;border-radius:6px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><p class="eusz60" style="margin:0;color:#eceae4;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:13px;line-height:22.1px;mso-line-height-rule:exactly;text-align:left"><span style="color:#d4f25a">$ </span>curl -fsSL quarry.example/i | sh<br><span style="color:#d4f25a">$ </span>quarry login<br><span style="color:#d4f25a">$ </span>quarry link north-ledger<br><span style="color:#d4f25a">$ </span>quarry shell<br><span style="color:#9c9a92">north-ledger=> </span>select 'hello' as world;</p></td></tr></table></td></tr></table></td></tr><tr><td class="euft5g" style="padding-bottom:48px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="border-collapse:separate"><tr><td style="padding:20px 0;border-top:1px solid #2b2d30"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td width="32" valign="top" style="width:32px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><p style="margin:0;color:#d4f25a;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:14px;line-height:24px;mso-line-height-rule:exactly;text-align:left">01</p></td></tr></table></td><td width="20" class="e7t3zz" style="width:20px"></td><td width="452" valign="top" class="ej8cul" style="width:452px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td style="padding-bottom:4px"><h3 style="margin:0;color:#eceae4;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:17px;font-weight:600;line-height:24px;mso-line-height-rule:exactly;text-align:left">Connect from your laptop</h3></td></tr><tr><td><p style="margin:0;color:#9c9a92;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:15px;line-height:24px;mso-line-height-rule:exactly;text-align:left">Run <span style="color:#eceae4;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:14px;line-height:22.4px">quarry link</span> in any project, and your shell gets credentials that expire in an hour. Nothing to paste into a .env file.</p></td></tr></table></td></tr></table></td></tr></table></td></tr><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="border-collapse:separate"><tr><td style="padding:20px 0;border-top:1px solid #2b2d30"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td width="32" valign="top" style="width:32px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><p style="margin:0;color:#d4f25a;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:14px;line-height:24px;mso-line-height-rule:exactly;text-align:left">02</p></td></tr></table></td><td width="20" class="e7t3zz" style="width:20px"></td><td width="452" valign="top" class="ej8cul" style="width:452px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td style="padding-bottom:4px"><h3 style="margin:0;color:#eceae4;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:17px;font-weight:600;line-height:24px;mso-line-height-rule:exactly;text-align:left">Load a sample</h3></td></tr><tr><td><p style="margin:0;color:#9c9a92;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:15px;line-height:24px;mso-line-height-rule:exactly;text-align:left">Fill it with two million real journeys from London’s bike hire scheme, so your first queries have something to say.</p></td></tr></table></td></tr></table></td></tr></table></td></tr><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="border-collapse:separate"><tr><td style="padding:20px 0;border-top:1px solid #2b2d30"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td width="32" valign="top" style="width:32px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><p style="margin:0;color:#d4f25a;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:14px;line-height:24px;mso-line-height-rule:exactly;text-align:left">03</p></td></tr></table></td><td width="20" class="e7t3zz" style="width:20px"></td><td width="452" valign="top" class="ej8cul" style="width:452px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td style="padding-bottom:4px"><h3 style="margin:0;color:#eceae4;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:17px;font-weight:600;line-height:24px;mso-line-height-rule:exactly;text-align:left">Ask it something</h3></td></tr><tr><td><p style="margin:0;color:#9c9a92;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:15px;line-height:24px;mso-line-height-rule:exactly;text-align:left">Open the console and run the query we left in it. It finds the busiest docking station before 9am, in about forty milliseconds.</p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr><tr><td class="euft5g" style="padding-bottom:48px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td class="eezu4q" style="font-size:0"><!--[if mso]><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td width="200" valign="middle" style="width:200px"><![endif]--><div style="display:inline-block;vertical-align:middle;width:100%;max-width:200px;font-size:16px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" class="eav895" width="100%" style="border-collapse:separate"><tr><td align="center" bgcolor="#d4f25a" class="eeev5y" style="background-color:#d4f25a;border-radius:4px;mso-padding-alt:15px 0"><a href="https://quarry.example/console/north-ledger" style="display:block;padding:15px 0;color:#0e0f10;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:15px;font-weight:600;line-height:18px;mso-line-height-rule:exactly;text-align:center;text-decoration:none;border-radius:4px">Open the console</a></td></tr></table></div><!--[if mso]></td><td width="24" style="width:24px"></td><![endif]--><!--[if !mso]><!--><div class="ednwsa" style="display:inline-block;width:24px"></div><!--<![endif]--><!--[if mso]><td width="280" valign="middle" style="width:280px"><![endif]--><div style="display:inline-block;vertical-align:middle;width:100%;max-width:280px;font-size:16px"><p style="margin:0;color:#eceae4;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:15px;line-height:24px;mso-line-height-rule:exactly;text-align:left"><a href="https://quarry.example/docs/quickstart" style="color:#eceae4;text-decoration:underline">Or read the quickstart</a></p></div><!--[if mso]></td></tr></table><![endif]--></td></tr></table></td></tr><tr><td class="euft5g" style="padding-bottom:48px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="border-collapse:separate"><tr><td style="padding:28px 0 0 0;border-top:1px solid #2b2d30"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td style="padding-bottom:20px"><p style="margin:0;color:#9c9a92;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:12px;line-height:20.4px;mso-line-height-rule:exactly;letter-spacing:0.5px;text-align:left">WHAT THE FREE TIER HOLDS</p></td></tr><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td width="152" valign="top" class="euvcqx" style="width:152px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td style="padding-bottom:4px"><p class="e7yqht" style="margin:0;color:#eceae4;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:28px;font-weight:500;line-height:30.8px;mso-line-height-rule:exactly;letter-spacing:-0.5px;text-align:left">10<span style="color:#9c9a92;font-size:15px;line-height:16.5px"> GB</span></p></td></tr><tr><td><p style="margin:0;color:#9c9a92;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;line-height:18.85px;mso-line-height-rule:exactly;text-align:left">of storage</p></td></tr></table></td></tr></table></td><td class="eippbt" width="24" style="width:24px"></td><td width="152" valign="top" class="eco186" style="width:152px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td style="padding-bottom:4px"><p class="e7yqht" style="margin:0;color:#eceae4;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:28px;font-weight:500;line-height:30.8px;mso-line-height-rule:exactly;letter-spacing:-0.5px;text-align:left">1<span style="color:#9c9a92;font-size:15px;line-height:16.5px"> bn</span></p></td></tr><tr><td><p style="margin:0;color:#9c9a92;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;line-height:18.85px;mso-line-height-rule:exactly;text-align:left">row reads a month</p></td></tr></table></td></tr></table></td><td class="eippbt" width="24" style="width:24px"></td><td width="152" valign="top" class="e7y04q" style="width:152px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td style="padding-bottom:4px"><p class="e7yqht" style="margin:0;color:#eceae4;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:28px;font-weight:500;line-height:30.8px;mso-line-height-rule:exactly;letter-spacing:-0.5px;text-align:left">3<span style="color:#9c9a92;font-size:15px;line-height:16.5px"> </span></p></td></tr><tr><td><p style="margin:0;color:#9c9a92;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;line-height:18.85px;mso-line-height-rule:exactly;text-align:left">branches to try ideas on</p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr><tr><td class="euft5g" style="padding-bottom:48px"><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td style="padding-bottom:6px"><p style="margin:0;color:#eceae4;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:16px;line-height:25.6px;mso-line-height-rule:exactly;text-align:left">If anything gets in your way, reply to this email. It comes to the four of us who answer support, and one of us will write back today.</p></td></tr><tr><td><p style="margin:0;color:#9c9a92;font-family:'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:16px;line-height:25.6px;mso-line-height-rule:exactly;text-align:left">Tomás, for the Quarry team</p></td></tr></table></td></tr><tr><td><table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="border-collapse:separate"><tr><td style="padding:24px 0 0 0;border-top:1px solid #2b2d30"><p style="margin:0;color:#9c9a92;font-family:'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace;font-size:12px;line-height:20.4px;mso-line-height-rule:exactly;text-align:left">Quarry Data GmbH, Rosenthaler Straße 40, 10178 Berlin<br><a href="https://quarry.example/settings/email" style="color:#9c9a92;text-decoration:underline">Email settings</a> · <a href="https://quarry.example/unsubscribe" style="color:#9c9a92;text-decoration:underline">Unsubscribe</a></p></td></tr></table></td></tr></table></td></tr></table><!--[if mso]></td></tr></table><![endif]--></td></tr></table></div></body></html>/**
* Quarry (a fictional hosted database) welcomes someone who has just made their first database.
*
* Dark, because its users live in terminals: charcoal, warm off-white text and one acid lime,
* kept for what to do next (the step numbers, the button, the prompt). IBM Plex Sans for words,
* IBM Plex Mono for anything you could type. The welcome is a short terminal session, then three
* numbered steps, then what the free tier holds.
*/
import type { ReactNode } from "react";
import { Button, Column, Email, Grid, Heading, LineBreak, Link, Text, Row, Section, Span } from "@hyper-elements/react";
const NIGHT = "#0E0F10";
const PANEL = "#17191B";
const TEXT = "#ECEAE4";
const QUIET = "#9C9A92";
const RULE = "#2B2D30";
const LIME = "#D4F25A";
const LIME_DOWN = "#C2E040";
const SANS = "'IBM Plex Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif";
const MONO = "'IBM Plex Mono', SFMono-Regular, Menlo, Consolas, monospace";
const SITE = "https://quarry.example";
const mono = { fontFamily: MONO, fontSize: 13, lineHeight: 1.7 } as const;
/** A line typed at the prompt, and what came back. */
const typed = (command: string) => (
<>
<Span style={{ color: LIME }}>$ </Span>
{command}
<LineBreak />
</>
);
/** One of the three steps: its number, what to do, and why. */
const step = (n: string, title: string, body: ReactNode) => (
<Row stackOnMobile={false} style={{ gap: 20, padding: [20, 0], border: { top: `1px solid ${RULE}` } }} mobile={{ gap: 14 }}>
<Column style={{ width: 32 }}>
<Text style={{ ...mono, fontSize: 14, color: LIME, lineHeight: "24px" }}>{n}</Text>
</Column>
<Column style={{ gap: 4 }}>
<Heading level={3} style={{ fontSize: 17, fontWeight: 600, lineHeight: "24px" }}>
{title}
</Heading>
<Text style={{ fontSize: 15, lineHeight: 1.6, color: QUIET }}>{body}</Text>
</Column>
</Row>
);
/** Code inside a sentence. */
const code = (text: string) => <Span style={{ fontFamily: MONO, fontSize: 14, color: TEXT }}>{text}</Span>;
/** A figure of the free tier. */
const figure = (value: string, unit: string, what: string) => (
<Column style={{ gap: 4 }}>
<Text style={{ fontFamily: MONO, fontSize: 28, fontWeight: 500, lineHeight: 1.1, letterSpacing: -0.5 }} mobile={{ fontSize: 22 }}>
{value}
<Span style={{ fontSize: 15, color: QUIET }}> {unit}</Span>
</Text>
<Text style={{ fontSize: 13, lineHeight: 1.45, color: QUIET }}>{what}</Text>
</Column>
);
export default function QuarryWelcome() {
return (
<Email
width={600}
lang="en"
title="Welcome to Quarry"
previewText="north-ledger is running in Frankfurt. Three steps from an empty schema to your first answer."
fonts={[
{ family: "IBM Plex Sans", src: "https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxeKYbSB4Zh.woff2", format: "woff2", weight: "100 700" },
{ family: "IBM Plex Mono", src: "https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1i8q131nj-o.woff2", format: "woff2", weight: 400 },
{ family: "IBM Plex Mono", src: "https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwlBFgsAXHNk.woff2", format: "woff2", weight: 500 },
]}
style={{ backgroundColor: NIGHT, color: TEXT, fontFamily: SANS, fontSize: 16, lineHeight: 1.6 }}
>
<Section style={{ padding: [40, 48, 56], gap: 48 }} mobile={{ padding: [28, 24, 40], gap: 36 }}>
<Row stackOnMobile={false} style={{ alignItems: "center" }}>
<Column style={{ width: 120 }}>
<Text style={{ fontFamily: MONO, fontSize: 18, fontWeight: 500, letterSpacing: -0.3 }}>
<Link href={SITE} style={{ color: TEXT, textDecoration: "none" }}>
quarry<Span style={{ color: LIME }}>_</Span>
</Link>
</Text>
</Column>
<Column>
<Text style={{ ...mono, fontSize: 12, color: QUIET, textAlign: "right" }}>north-ledger · eu-central</Text>
</Column>
</Row>
<Column style={{ gap: 20 }}>
<Text style={{ ...mono, color: QUIET }}>Welcome, Priya.</Text>
<Heading level={1} style={{ fontSize: 44, fontWeight: 500, lineHeight: 1.08, letterSpacing: -1.4 }} mobile={{ fontSize: 31, letterSpacing: -0.9 }}>
Your first database
<LineBreak />
is running.
</Heading>
<Text style={{ fontSize: 18, lineHeight: 1.55, color: QUIET, maxWidth: 470 }} mobile={{ fontSize: 16 }}>
It’s called <Span style={{ color: TEXT }}>north-ledger</Span>, it lives in Frankfurt, and it’s yours to break. Four commands take you from an empty schema to a shell.
</Text>
</Column>
<Column style={{ backgroundColor: PANEL, border: `1px solid ${RULE}`, borderRadius: 6, padding: [20, 24] }} mobile={{ padding: [16, 16] }}>
<Text style={{ ...mono, color: TEXT }} mobile={{ fontSize: 12 }}>
{typed("curl -fsSL quarry.example/i | sh")}
{typed("quarry login")}
{typed("quarry link north-ledger")}
{typed("quarry shell")}
<Span style={{ color: QUIET }}>north-ledger=> </Span>
select 'hello' as world;
</Text>
</Column>
<Column>
{step("01", "Connect from your laptop", <>Run {code("quarry link")} in any project, and your shell gets credentials that expire in an hour. Nothing to paste into a .env file.</>)}
{step("02", "Load a sample", <>Fill it with two million real journeys from London’s bike hire scheme, so your first queries have something to say.</>)}
{step("03", "Ask it something", <>Open the console and run the query we left in it. It finds the busiest docking station before 9am, in about forty milliseconds.</>)}
</Column>
<Row style={{ alignItems: "center", gap: 24 }} mobile={{ gap: 16 }}>
<Button
href={`${SITE}/console/north-ledger`}
style={{ width: 200, backgroundColor: LIME, color: NIGHT, fontSize: 15, fontWeight: 600, padding: [15, 0], borderRadius: 4 }}
hover={{ backgroundColor: LIME_DOWN }}
mobile={{ width: "100%" }}
>
Open the console
</Button>
<Text style={{ fontSize: 15 }}>
<Link href={`${SITE}/docs/quickstart`} style={{ color: TEXT }}>
Or read the quickstart
</Link>
</Text>
</Row>
<Column style={{ gap: 20, padding: [28, 0, 0], border: { top: `1px solid ${RULE}` } }}>
<Text style={{ ...mono, fontSize: 12, color: QUIET, letterSpacing: 0.5 }}>WHAT THE FREE TIER HOLDS</Text>
<Grid columns={3} stackOnMobile={false} style={{ gap: 24 }} mobile={{ gap: 12 }}>
{figure("10", "GB", "of storage")}
{figure("1", "bn", "row reads a month")}
{figure("3", "", "branches to try ideas on")}
</Grid>
</Column>
<Column style={{ gap: 6 }}>
<Text style={{ fontSize: 16, lineHeight: 1.6 }}>
If anything gets in your way, reply to this email. It comes to the four of us who answer support, and one of us will write back today.
</Text>
<Text style={{ fontSize: 16, color: QUIET }}>Tomás, for the Quarry team</Text>
</Column>
<Text style={{ ...mono, fontSize: 12, lineHeight: 1.7, color: QUIET, padding: [24, 0, 0], border: { top: `1px solid ${RULE}` } }}>
Quarry Data GmbH, Rosenthaler Straße 40, 10178 Berlin
<LineBreak />
<Link href={`${SITE}/settings/email`} style={{ color: QUIET }}>
Email settings
</Link>
{" · "}
<Link href={`${SITE}/unsubscribe`} style={{ color: QUIET }}>
Unsubscribe
</Link>
</Text>
</Section>
</Email>
);
}import { render } from "@hyper-elements/react";
import QuarryWelcome from "./quarry-welcome";
const { html, text } = await render(<QuarryWelcome />);