pages.html (6408 bytes)
1 {{define "head"}}<!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <title>{{if .Title}}{{.Title}} · {{end}}sbm Sync</title> 7 <meta name="description" content="Sync your sbm bookmarks between the terminal, the browser add-on and Android."> 8 <meta property="og:type" content="website"> 9 <meta property="og:site_name" content="sbm Sync"> 10 <meta property="og:title" content="{{if .Title}}{{.Title}} · {{end}}sbm Sync"> 11 <meta property="og:description" content="Sync your sbm bookmarks between the terminal, the browser add-on and Android."> 12 <meta name="twitter:card" content="summary"> 13 <meta name="theme-color" content="#005577"> 14 <style> 15 body { max-width: 36em; margin: 2em auto; padding: 0 1em; font: 16px/1.5 sans-serif; color: #222; background: #fff; } 16 a { color: #005577; } 17 h1 { font-size: 1.5em; } h2 { font-size: 1.15em; margin-top: 2em; } 18 label { display: block; } 19 input { display: block; width: 100%; box-sizing: border-box; margin: .2em 0 1em; padding: .4em; font: inherit; } 20 button { font: inherit; padding: .4em 1em; margin: .2em .5em .2em 0; } 21 .error { color: #a00; } .note, footer { color: #555; } footer { margin-top: 3em; font-size: .9em; } 22 @media (prefers-color-scheme: dark) { 23 body { background: #111; color: #ddd; } a { color: #4fb3d9; } .note, footer { color: #999; } .error { color: #f77; } 24 } 25 </style> 26 </head> 27 <body> 28 <header><a href="/"><b>sbm Sync</b></a></header> 29 {{end}} 30 31 {{define "foot"}} 32 <footer> 33 <a href="https://github.com/equwal/sbm-sync">Source code</a> · 34 <a href="/privacy">Privacy</a> · 35 <a href="https://ko-fi.com/truex">Support sbm on Ko-fi</a> 36 </footer> 37 </body> 38 </html> 39 {{end}} 40 41 {{define "home"}}{{template "head" .}} 42 <h1>Your bookmarks, the same everywhere</h1> 43 <p><a href="https://github.com/equwal/sbm">sbm</a> keeps your bookmarks in one plain 44 text file. sbm Sync keeps that file the same on each of your devices: bm on 45 your computers, the sbm app for Android, and the sbm add-on for Firefox and 46 Chrome.</p> 47 {{if .Billing}}<p>Free for {{.TrialDays}} days. Then {{.Year}} or {{.Month}}. Cancel at any time.</p>{{end}} 48 <p>{{if .Email}}<a href="/account">Your account</a>{{else}}<a href="/signup">Create an account</a> or <a href="/login">sign in</a>.{{end}}</p> 49 <p class="note">sbm Sync is free software under the AGPL-3.0. You can 50 <a href="https://github.com/equwal/sbm-sync">run your own server</a>.</p> 51 {{template "foot" .}}{{end}} 52 53 {{define "signup"}}{{template "head" .}} 54 <h1>Create an account</h1> 55 {{with .Error}}<p class="error">{{.}}</p>{{end}} 56 <form method="post" action="/signup"> 57 <label>Email <input type="email" name="email" value="{{.Email}}" required autocomplete="email"></label> 58 <label>Password, 8 characters or more <input type="password" name="password" minlength="8" maxlength="72" required autocomplete="new-password"></label> 59 <button>Create account</button> 60 </form> 61 <p class="note">See the <a href="/privacy">privacy policy</a>. You have an account? <a href="/login">Sign in</a>.</p> 62 {{template "foot" .}}{{end}} 63 64 {{define "login"}}{{template "head" .}} 65 <h1>Sign in</h1> 66 {{with .Error}}<p class="error">{{.}}</p>{{end}} 67 <form method="post" action="/login"> 68 <label>Email <input type="email" name="email" value="{{.Email}}" required autocomplete="email"></label> 69 <label>Password <input type="password" name="password" required autocomplete="current-password"></label> 70 <button>Sign in</button> 71 </form> 72 <p class="note">No account yet? <a href="/signup">Create one</a>.</p> 73 {{template "foot" .}}{{end}} 74 75 {{define "account"}}{{template "head" .}} 76 <h1>Your account</h1> 77 <p>Signed in as {{.Email}}.</p> 78 {{with .Error}}<p class="error">{{.}}</p>{{end}} 79 <p><b>{{.State}}</b></p> 80 {{if .CanSubscribe}}<form method="post" action="/account/checkout"> 81 <button name="plan" value="year">Subscribe: {{.Year}}</button> 82 <button name="plan" value="month">Subscribe: {{.Month}}</button> 83 </form>{{end}} 84 {{if .Customer}}<form method="post" action="/account/portal"><button>Manage billing</button></form>{{end}} 85 86 <h2>Connect your devices</h2> 87 <p>Sign in with this email and password on each device:</p> 88 <ul> 89 <li>bm on a computer: run <code>bm-sync login</code></li> 90 <li>the sbm app for Android: menu, Sign in to sync</li> 91 <li>the sbm add-on for Firefox or Chrome: its options page</li> 92 </ul> 93 <p>Server: <code>{{.URL}}</code></p> 94 <form method="post" action="/logout"><button>Sign out</button></form> 95 96 <h2>Delete your account</h2> 97 <form method="post" action="/account/delete"> 98 <p>This deletes your account and the copy of your bookmarks on this server at 99 once.{{if .Customer}} It also ends your subscription.{{end}} Your devices keep 100 their bookmark files.</p> 101 <label>Password <input type="password" name="password" required autocomplete="current-password"></label> 102 <button>Delete my account</button> 103 </form> 104 {{template "foot" .}}{{end}} 105 106 {{define "privacy"}}{{template "head" .}} 107 <h1>Privacy</h1> 108 <p>This policy is for this sbm Sync server, the sbm app for Android and the 109 sbm add-on for Firefox and Chrome.</p> 110 <h2>What the server keeps, and why</h2> 111 <ul> 112 <li>Your email address and a bcrypt hash of your password, never the password itself: to sign you in.</li> 113 <li>Your bookmark file, the last 50 versions that your devices sent: to sync your devices.</li> 114 <li>A hash of the sign-in token of each device: to know your devices.</li> 115 <li>When you subscribe: your Stripe customer ID and the state of your subscription: to bill you.</li> 116 </ul> 117 <p>The server does not sell or share this data, and does not use it for ads. 118 There are no analytics and no trackers. The only cookie keeps you signed in.</p> 119 <p>Data goes to and from the server over HTTPS. On the server it is not 120 encrypted: the operator of the server can read it.</p> 121 <h2>Payments</h2> 122 <p>Stripe takes the payments. This server never sees your card. See the 123 <a href="https://stripe.com/privacy">Stripe privacy policy</a>.</p> 124 <h2 id="delete">Delete your data</h2> 125 <p>Delete your account on the <a href="/account">account page</a>. The 126 server deletes the account and all versions of your bookmark file at once.</p> 127 <h2>The app and the add-on</h2> 128 <p>They keep your bookmarks on your device. They send them only to the sync 129 server that you sign in to, and only after you sign in. Without an account, 130 no data leaves your device.</p> 131 {{with .Contact}}<h2>Contact</h2> 132 <p><a href="mailto:{{.}}">{{.}}</a></p>{{end}} 133 {{template "foot" .}}{{end}}