Misc edits for release (#1)

* optimize data for ticker

* rework data model for cleaner be your own section

* wip

* delete deprecated assets

* edit copy; misc small style fixes

* reenable ticker, update nexcloud, edit embassy one name

* rearrange support section

* new graphiccs to info section

* bold personal server iheader in info section

* mobile styling for be your own section

* adjust infographics section

* adjust underline + animmation

* add ui screenshots to powered by section

* fix overflow, sizing, spacing

* renable ticker

* fix marketplace link

* more link updates

* edit team bios and fix apostrophes

* update footer with bdonation link; adjust scss spacing

* copy changes

* add license page

* clean up spacing and uunused files

* Update src/_includes/components/landing/community.njk

* Update src/_includes/components/landing/infographics.njk

* Update src/_includes/components/landing/powered-by.njk

* Update src/_includes/components/landing/support.njk

* connect subscribe api

* implement newsletter subscription

* audit all links and cleanup

* add 404 page and more cleanup

* add sitemap and robots

* fix service links

* small fixes + copy edits

* fix infographics and ticker spacing

* update emails

* update docs links and temp remove team

* update docs link urls

* fix diy link

* typo

* typo and sizing

* Update src/about.njk

Co-authored-by: Matt Hill <matthewonthemoon@gmail.com>
This commit is contained in:
Lucy C
2022-11-01 08:35:02 -06:00
committed by GitHub
parent 322b0e19db
commit e8ae97da1c
90 changed files with 1262 additions and 1120 deletions

View File

@@ -1 +0,0 @@
[{"ff7bff157a8a33917f958b9cab3878":"1"},{"cachedAt":1663537544811,"type":"2"},"json"]

View File

@@ -1 +0,0 @@
[{"login":"BitcoinMechanic","id":45926711,"node_id":"MDQ6VXNlcjQ1OTI2NzEx","avatar_url":"https://avatars.githubusercontent.com/u/45926711?v=4","gravatar_id":"","url":"https://api.github.com/users/BitcoinMechanic","html_url":"https://github.com/BitcoinMechanic","followers_url":"https://api.github.com/users/BitcoinMechanic/followers","following_url":"https://api.github.com/users/BitcoinMechanic/following{/other_user}","gists_url":"https://api.github.com/users/BitcoinMechanic/gists{/gist_id}","starred_url":"https://api.github.com/users/BitcoinMechanic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BitcoinMechanic/subscriptions","organizations_url":"https://api.github.com/users/BitcoinMechanic/orgs","repos_url":"https://api.github.com/users/BitcoinMechanic/repos","events_url":"https://api.github.com/users/BitcoinMechanic/events{/privacy}","received_events_url":"https://api.github.com/users/BitcoinMechanic/received_events","type":"User","site_admin":false},{"login":"MattDHill","id":9935159,"node_id":"MDQ6VXNlcjk5MzUxNTk=","avatar_url":"https://avatars.githubusercontent.com/u/9935159?v=4","gravatar_id":"","url":"https://api.github.com/users/MattDHill","html_url":"https://github.com/MattDHill","followers_url":"https://api.github.com/users/MattDHill/followers","following_url":"https://api.github.com/users/MattDHill/following{/other_user}","gists_url":"https://api.github.com/users/MattDHill/gists{/gist_id}","starred_url":"https://api.github.com/users/MattDHill/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MattDHill/subscriptions","organizations_url":"https://api.github.com/users/MattDHill/orgs","repos_url":"https://api.github.com/users/MattDHill/repos","events_url":"https://api.github.com/users/MattDHill/events{/privacy}","received_events_url":"https://api.github.com/users/MattDHill/received_events","type":"User","site_admin":false}]

View File

@@ -1,6 +1,6 @@
const eleventySass = require("eleventy-sass");
const lazyImagesPlugin = require('eleventy-plugin-lazyimages');
const faviconPlugin = require("eleventy-favicon");
const format = require('date-fns/format')
// https://github.com/artstorm/eleventy-plugin-seo
const pluginSEO = require("eleventy-plugin-seo");
@@ -8,9 +8,6 @@ const pluginSEO = require("eleventy-plugin-seo");
// https://github.com/saneef/eleventy-plugin-img2picture
const img2picture = require("eleventy-plugin-img2picture");
// https://www.npmjs.com/package/@sardine/eleventy-plugin-tinycss
const tinyCSS = require('@sardine/eleventy-plugin-tinycss');
// https://www.npmjs.com/package/@sardine/eleventy-plugin-tinysvg
const tinysvg = require('@sardine/eleventy-plugin-tinysvg');
@@ -51,12 +48,18 @@ module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(eleventySass);
eleventyConfig.addPlugin(faviconPlugin, { destination: './_site' });
eleventyConfig.addPlugin(pluginSEO, require("./src/_data/seo.json"));
//eleventyConfig.addPlugin(tinyCSS); // smartly injects selectors from external css files into style tags. requires some massaging. not ready for prime time.
eleventyConfig.addPlugin(tinyHTML);
eleventyConfig.addPlugin(tinysvg, {
baseUrl: 'src/_includes/svgs/',
});
eleventyConfig.addWatchTarget('./src/assets/styles/**/*')
// add date filter for human readability
eleventyConfig.addFilter('date', function (date, dateFormat) {
return format(date, dateFormat)
})
return {
dir: { input: "src", output: "_site", data: "_data" },
};

6
.gitignore vendored
View File

@@ -5,4 +5,8 @@
/_site
.env
.png~
.png~
**/.DS_Store
deploy_staging.sh
deploy_prod.sh

File diff suppressed because one or more lines are too long

230
package-lock.json generated
View File

@@ -27,6 +27,7 @@
},
"devDependencies": {
"@11ty/eleventy": "^1.0.1",
"date-fns": "^2.29.3",
"eleventy-plugin-lazyimages": "^2.1.2"
}
},
@@ -200,6 +201,58 @@
"integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
"dev": true
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
"dependencies": {
"@jridgewell/set-array": "^1.0.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
"@jridgewell/trace-mapping": "^0.3.9"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
"integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/set-array": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/source-map": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.0",
"@jridgewell/trace-mapping": "^0.3.9"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.14",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.17",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
"integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
"dependencies": {
"@jridgewell/resolve-uri": "3.1.0",
"@jridgewell/sourcemap-codec": "1.4.14"
}
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -1615,6 +1668,19 @@
"node": ">=12"
}
},
"node_modules/date-fns": {
"version": "2.29.3",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
"integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==",
"dev": true,
"engines": {
"node": ">=0.11"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/date-fns"
}
},
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -3937,11 +4003,6 @@
"integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=",
"dev": true
},
"node_modules/lodash.sortby": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
"integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
},
"node_modules/lower-case": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
@@ -5809,9 +5870,9 @@
}
},
"node_modules/socket.io-client/node_modules/socket.io-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.0.tgz",
"integrity": "sha512-tLfmEwcEwnlQTxFB7jibL/q2+q8dlVQzj4JdRLJ/W/G1+Fu9VSxCx1Lo+n1HvXxKnM//dUuD0xgiA7tQf57Vng==",
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz",
"integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==",
"dev": true,
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
@@ -5822,9 +5883,9 @@
}
},
"node_modules/socket.io-parser": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
"integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz",
"integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==",
"dev": true,
"dependencies": {
"@types/component-emitter": "^1.2.10",
@@ -6159,13 +6220,13 @@
}
},
"node_modules/terser": {
"version": "5.13.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz",
"integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==",
"version": "5.15.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
"integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
"dependencies": {
"@jridgewell/source-map": "^0.3.2",
"acorn": "^8.5.0",
"commander": "^2.20.0",
"source-map": "~0.8.0-beta.0",
"source-map-support": "~0.5.20"
},
"bin": {
@@ -6224,17 +6285,6 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
},
"node_modules/terser/node_modules/source-map": {
"version": "0.8.0-beta.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
"integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
"dependencies": {
"whatwg-url": "^7.0.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/tfunk": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz",
@@ -6410,14 +6460,6 @@
"node": ">= 4.0.0"
}
},
"node_modules/tr46": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
"integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
"dependencies": {
"punycode": "^2.1.0"
}
},
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -6639,11 +6681,6 @@
"node": ">=10.13.0"
}
},
"node_modules/webidl-conversions": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
"integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
},
"node_modules/webpack": {
"version": "5.72.1",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz",
@@ -6750,16 +6787,6 @@
"node": ">=12"
}
},
"node_modules/whatwg-url": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
"integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
"dependencies": {
"lodash.sortby": "^4.7.0",
"tr46": "^1.0.1",
"webidl-conversions": "^4.0.2"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -7085,6 +7112,49 @@
"integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
"dev": true
},
"@jridgewell/gen-mapping": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
"requires": {
"@jridgewell/set-array": "^1.0.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
"@jridgewell/trace-mapping": "^0.3.9"
}
},
"@jridgewell/resolve-uri": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
"integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
},
"@jridgewell/set-array": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
},
"@jridgewell/source-map": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
"requires": {
"@jridgewell/gen-mapping": "^0.3.0",
"@jridgewell/trace-mapping": "^0.3.9"
}
},
"@jridgewell/sourcemap-codec": {
"version": "1.4.14",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
},
"@jridgewell/trace-mapping": {
"version": "0.3.17",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
"integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
"requires": {
"@jridgewell/resolve-uri": "3.1.0",
"@jridgewell/sourcemap-codec": "1.4.14"
}
},
"@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -8214,6 +8284,12 @@
}
}
},
"date-fns": {
"version": "2.29.3",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
"integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==",
"dev": true
},
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -9918,11 +9994,6 @@
"integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=",
"dev": true
},
"lodash.sortby": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
"integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
},
"lower-case": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
@@ -11383,9 +11454,9 @@
},
"dependencies": {
"socket.io-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.0.tgz",
"integrity": "sha512-tLfmEwcEwnlQTxFB7jibL/q2+q8dlVQzj4JdRLJ/W/G1+Fu9VSxCx1Lo+n1HvXxKnM//dUuD0xgiA7tQf57Vng==",
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz",
"integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==",
"dev": true,
"requires": {
"@socket.io/component-emitter": "~3.1.0",
@@ -11395,9 +11466,9 @@
}
},
"socket.io-parser": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
"integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz",
"integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==",
"dev": true,
"requires": {
"@types/component-emitter": "^1.2.10",
@@ -11649,13 +11720,13 @@
}
},
"terser": {
"version": "5.13.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz",
"integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==",
"version": "5.15.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
"integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
"requires": {
"@jridgewell/source-map": "^0.3.2",
"acorn": "^8.5.0",
"commander": "^2.20.0",
"source-map": "~0.8.0-beta.0",
"source-map-support": "~0.5.20"
},
"dependencies": {
@@ -11668,14 +11739,6 @@
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
},
"source-map": {
"version": "0.8.0-beta.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
"integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
"requires": {
"whatwg-url": "^7.0.0"
}
}
}
},
@@ -11824,14 +11887,6 @@
}
}
},
"tr46": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
"integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
"requires": {
"punycode": "^2.1.0"
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -11990,11 +12045,6 @@
"graceful-fs": "^4.1.2"
}
},
"webidl-conversions": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
"integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
},
"webpack": {
"version": "5.72.1",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz",
@@ -12070,16 +12120,6 @@
"integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
"dev": true
},
"whatwg-url": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
"integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
"requires": {
"lodash.sortby": "^4.7.0",
"tr46": "^1.0.1",
"webidl-conversions": "^4.0.2"
}
},
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",

View File

@@ -1,11 +1,11 @@
{
"name": "start9-landing",
"version": "1.0.0",
"description": "",
"description": "The Start9 company landing page featuring embassyOS products",
"main": "index.js",
"module": "main.js",
"scripts": {
"start": "eleventy --serve",
"start": "eleventy --watch --serve",
"build": "eleventy"
},
"keywords": [],
@@ -13,6 +13,7 @@
"license": "ISC",
"devDependencies": {
"@11ty/eleventy": "^1.0.1",
"date-fns": "^2.29.3",
"eleventy-plugin-lazyimages": "^2.1.2"
},
"dependencies": {

24
src/404.njk Normal file
View File

@@ -0,0 +1,24 @@
---
title: Not Found | Start9
layout: layouts/peripheral.njk
permalink: 404.html
---
<section id="hero">
<div id="hero-image" class="image-with-shadow">
<img
src="/assets/images/dev-hero.png"
alt="404 page hero image: html tag emerging from an embassy"
title="404 page hero image: html tag emerging from an embassy"/>
<img class="img-shadow" src="/assets/images/dev-hero.png" alt=""/>
</div>
<div id="logo">
<h1>
<span>Not found</span>
</h1>
</div>
</section>
<section id="not-found" class="section--no-image">
The page you are looking for does not exist :(
</section>

View File

@@ -16,12 +16,12 @@
"Good sense of humor",
"Organized",
"Familiarity with various platforms and how to optimize visibility and engagement on them",
"In tune with the cultures and trends of Start9s markets"
"In tune with the cultures and trends of Start9's markets"
],
"benefits": [
"Competitive salary",
"Performance-based bonuses",
"A healthy equity package. Youre still early!",
"A healthy equity package. You're still early!",
"Work from anywhere in the world, including our Denver office",
"Health and dental insurance",
"Budget for new computer",

View File

@@ -11,7 +11,7 @@
{
"title": "Start9 Labs Pitches a Private At-Home Server. And It Works",
"date": "2020-07-08",
"blurb": "Start9 Labs Embassy server sets up its own private internet network and comes with its own operating system. We tried it.",
"blurb": "Start9 Labs' Embassy server sets up its own private internet network and comes with its own operating system. We tried it.",
"url": "https://www.coindesk.com/tech/2020/07/08/start9-labs-pitches-a-private-at-home-server-and-it-works/",
"image-url": "https://static.coindesk.com/wp-content/uploads/2020/07/harrison-broadbent-hSHNPyND_dU-unsplash-300x185.jpg",
"source": "Coindesk",

View File

@@ -14,8 +14,8 @@
{
"name": "Developers",
"slug": "dev",
"url": "https://start9.com/latest/contribute/index",
"target": "",
"url": "https://docs.start9.com/latest/developer-docs",
"target": "_blank",
"order": 1,
"class": "hide-on-mobile"
}
@@ -62,14 +62,6 @@
"order": 2,
"class": ""
},
{
"name": "Team",
"slug": "team",
"url": "/about#team",
"target": "",
"order": 3,
"class": ""
},
{
"name": "Jobs",
"slug": "jobs",
@@ -98,7 +90,7 @@
"inFooter": true,
"items": [
{
"name": "Embassy ONE",
"name": "Embassy One",
"slug": "embassy-one",
"url": "https://store.start9.com/collections/embassy/products/embassy-one",
"target": "_blank",
@@ -135,23 +127,23 @@
{
"name": "Support",
"slug": "support",
"url": "https://start9.com/latest/support/",
"target": "",
"url": "https://docs.start9.com/latest/support/",
"target": "_blank",
"order": 0,
"class": ""
},
{
"name": "FAQ",
"slug": "faq",
"url": "https://start9.com/latest/support/faq/",
"target": "",
"url": "https://docs.start9.com/latest/support/faq/",
"target": "_blank",
"order": 0,
"class": ""
},
{
"name": "Docs",
"slug": "docs",
"url": "https://start9.com/latest/user-manual",
"url": "https://docs.start9.com",
"target": "_blank",
"order": 1,
"class": ""
@@ -178,16 +170,16 @@
{
"name": "Contribute",
"slug": "contribute",
"url": "https://start9.com/latest/contribute/index",
"target": "",
"url": "https://docs.start9.com/latest/contribute/index",
"target": "_blank",
"order": 0,
"class": ""
},
{
"name": "Dev Docs",
"slug": "dev-docs",
"url": "https://start9.com/latest/developer-docs",
"target": "",
"url": "https://docs.start9.com/latest/developer-docs",
"target": "_blank",
"order": 1,
"class": ""
},

View File

@@ -127,14 +127,6 @@
"anchor": "Tuscon Bitcoin",
"description": "This is a clip from a conversation with Matt Hill from Start9 about fixing problems with big tech."
},
{
"title": "Phil Gibson and Matt Hill",
"date": "April 18, 2021",
"link": "https://pgibs.io/2021/04/18/matt-hill/",
"image": "https://i.scdn.co/image/58faa7fe387f952064c4a88654458d9ea9efb89b",
"anchor": "A Boy Named Pseu",
"description": "In this episode: Matt's Background, sovereign computing, Libertarianism, learning to code, the dirty truth of the internet and data, Bitcoin, Taekwondo, and then some…"
},
{
"title": "Matt Odell, Keagan McClelland, and Paul Miller",
"date": "April 13, 2021",

View File

@@ -1,67 +1,72 @@
[
{
"name": "Whatsapp",
"slug": "whatsapp",
"url": "https://start9.com/marketplace/175"
},
{
"name": "Twitter",
"slug": "twitter",
"url": "https://start9.com/marketplace/175"
},
{
"name": "Lastpass",
"slug": "lastpass",
"url": "https://start9.com/marketplace/199"
},
{
"name": "bank",
"slug": "bank",
"url": "https://start9.com/marketplace/148"
},
{
"name": "Github",
"slug": "github",
"url": "https://start9.com/marketplace/126"
},
{
"name": "Google Drive",
"slug": "google-drive",
"url": "https://start9.com/marketplace/186"
},
{
"name": "iPhotos",
"slug": "iphotos",
"url": "https://start9.com/marketplace/119"
},
{
"name": "Coinbase",
"slug": "coinbase",
"url": "https://start9.com/marketplace/132"
},
{
"name": "GoFundMe",
"slug": "gofundme",
"url": "https://start9.com/marketplace/165"
},
{
"name": "PayPal",
"slug": "paypal",
"url": "https://start9.com/marketplace/165"
},
{
"name": "iMessage",
"slug": "imessage",
"url": "https://start9.com/marketplace/165"
},
{
"name": "KeePass",
"slug": "keepass",
"url": "https://start9.com/marketplace/165"
},
{
"name": "Kickstarter",
"slug": "kickstarter",
"url": "https://start9.com/marketplace/165"
}
]
{
"name": "Whatsapp",
"slug": "whatsapp",
"service": "synapse"
},
{
"name": "Twitter",
"slug": "twitter",
"service": "mastodon"
},
{
"name": "Lastpass",
"slug": "lastpass",
"service": "vaultwarden"
},
{
"name": "bank",
"slug": "bank",
"service": "bitcoind"
},
{
"name": "Github",
"slug": "github",
"service": "gitea"
},
{
"name": "Gsuite",
"slug": "gsuite",
"service": "nextcloud"
},
{
"name": "iPhoto",
"slug": "iphoto",
"service": "photoview"
},
{
"name": "GoFundMe",
"slug": "gofundme",
"service": "btcpay"
},
{
"name": "PayPal",
"slug": "paypal",
"service": "lnd"
},
{
"name": "iMessage",
"slug": "imessage",
"service": "synapse"
},
{
"name": "Kickstarter",
"slug": "kickstarter",
"service": "btcpay"
},
{
"name": "Medium",
"slug": "medium",
"service": "ghost"
},
{
"name": "Dropbox",
"slug": "dropbox",
"service": "file-browser"
},
{
"name": "1Password",
"slug": "1password",
"service": "vaultwarden"
}
]

View File

@@ -1,186 +1,122 @@
[
{
{
"file-browser": {
"name": "File Browser",
"description": "Personal cloud data storage",
"color": "#ffe95f",
"bitcoin": false
},
"synapse": {
"name": "Synapse",
"slug": "synapse",
"description": "A battle-tested implementation of the Matrix protocol, the killer of all messaging apps.",
"color": "#666666",
"categories": ["communications"],
"pseudoservices": ["whatsapp", "imessage"]
"bitcoin": false
},
{
"mastodon": {
"name": "Mastodon",
"slug": "mastodon",
"description": "A free, open-source social network server",
"color": "#6364ff",
"categories": ["communications"],
"pseudoservices": ["twitter"]
"bitcoin": false
},
{
"vaultwarden": {
"name": "Vaultwarden",
"slug": "vaultwarden",
"description": "Secure password management",
"color": "#175ddc",
"categories": ["data"],
"pseudoservices": ["lastpass", "keepass"]
"bitcoin": false
},
{
"name": "Balance of Satoshis",
"slug": "balanceofsatoshis",
"description": "A tool for working with the balance of your satoshis on LND.",
"color": "#",
"categories": ["plebnet-tools"],
"pseudoservices": []
},
{
"bitcoind": {
"name": "Bitcoin Core",
"slug": "bitcoind",
"description": "A Bitcoin Full Node by Bitcoin Core.",
"description": "A Bitcoin full node by Bitcoin Core.",
"color": "#f2a900",
"categories": ["bitcoin"],
"pseudoservices": ["bank"]
"bitcoin": true
},
{
"name": "Bitcoin Proxy",
"slug": "btc-rpc-proxy",
"description": "Super charge your Bitcoin node.",
"color": "#",
"categories": ["bitcoin"],
"pseudoservices": []
},
{
"btcpay": {
"name": "BTCPay Server",
"slug": "btcpayserver",
"description": "Bitcoin and cryptocurrency payment processor and POS system.",
"color": "#51b13e",
"categories": ["bitcoin"],
"pseudoservices": ["kickstarter", "gofundme"]
"bitcoin": true
},
{
"cln": {
"name": "Core Lightning",
"slug": "c-lightning",
"description": "An implementation of the Lightning Network protocol by Blockstream.",
"color": "#ffe95f",
"categories": ["lightning"],
"pseudoservices": ["paypal", "coinbase"]
"bitcoin": true
},
{
"electrs": {
"name": "electrs",
"slug": "electrs",
"description": "",
"color": "#",
"categories": ["bitcoin"],
"pseudoservices": []
"color": "#2c384c",
"bitcoin": true
},
{
"name": "lightning Jet",
"slug": "lightning-jet",
"description": "",
"color": "#",
"categories": ["plebnet-tools"],
"pseudoservices": []
},
{
"lnd": {
"name": "Lightning Network Daemon",
"slug": "lnd",
"description": "A complete implementation of a Lightning Network node by Lightning Labs.",
"color": "#338dc9",
"categories": ["lightning"],
"pseudoservices": ["paypal", "coinbase"]
"bitcoin": true
},
{
"lit": {
"name": "Lightning Terminal",
"slug": "lightning-terminal",
"description": "Your Home for Lightning Liquidity",
"color": "#570380",
"categories": ["lightning"],
"pseudoservices": []
"bitcoin": true
},
{
"name": "LNDg",
"slug": "lndg",
"description": "Powerful web interface for LND developed specifically for LND Routing Node Operators",
"color": "#",
"categories": ["plebnet-tools"],
"pseudoservices": []
},
{
"mempool": {
"name": "Mempool",
"slug": "mempool",
"description": "A Bitcoin node and network visualizer.",
"color": "#8884f7",
"categories": ["bitcoin"],
"pseudoservices": ["bank"]
"bitcoin": true
},
{
"rtl": {
"name": "Ride the Lightning",
"slug": "ride-the-lightning",
"description": "",
"description": "A node management GUI for Lightning Network",
"color": "#bdbdbd",
"categories": ["lightning"],
"pseudoservices": ["paypal", "coinbase"]
"bitcoin": true
},
{
"spark": {
"name": "Spark Wallet",
"slug": "spark-wallet",
"description": "A minimalistic wallet GUI for Core Lightning (CLN).",
"color": "#2c384c",
"categories": ["lightning"],
"pseudoservices": ["paypal"]
"bitcoin": true
},
{
"specter": {
"name": "Specter",
"slug": "specter",
"description": "A desktop GUI for Bitcoin Core optimised to work with hardware wallets.",
"color": "#e80001",
"categories": ["bitcoin"],
"pseudoservices": []
"bitcoin": true
},
{
"sphinx": {
"name": "Sphinx Chat",
"slug": "sphinx-relay",
"description": "Chat on the lightning Network.",
"color": "#618aff",
"categories": ["lightning"],
"pseudoservices": ["whatsapp", "imessage"]
"bitcoin": true
},
{
"thunderhub": {
"name": "Thunderhub",
"slug": "thunderhub",
"description": "LND Lightning Node Manager in your Browser",
"color": "#2b3885",
"categories": ["bitcoin"],
"pseudoservices": ["paypal", "coinbase"]
"bitcoin": true
},
{
"ghost": {
"name": "Ghost",
"slug": "ghost",
"description": "A self-hosted blogging platform.",
"color": "#bfbfbe",
"categories": ["communications"],
"pseudoservices": ["paypal", "coinbase"]
"bitcoin": false
},
{
"photoview": {
"name": "Photoview",
"slug": "photoview",
"description": "An easy way to organize and share personal photos.",
"color": "#ff692c",
"categories": ["data"],
"pseudoservices": ["iphotos"]
"bitcoin": false
},
{
"name": "Syncthing",
"slug": "syncthing",
"description": "Synchronizes files between devices in real time, safely protected from prying eyes.",
"color": "#1191ce",
"categories": ["data"],
"pseudoservices": ["google-drive"]
},
{
"gitea": {
"name": "Gitea",
"slug": "gitea",
"description": "A painless, self-hosted git service.",
"color": "#609926",
"categories": ["data"],
"pseudoservices": ["github"]
"bitcoin": false
},
"nextcloud": {
"name": "Nextcloud",
"description": "Online collaboration platform.",
"color": "#609926",
"bitcoin": false
}
]
}

View File

@@ -1,30 +1,31 @@
module.exports = {
pitch: {
url: "#infographics" //"https://start9.com/latest/learn/index"
},
products: {
buyUrl: "https://store.start9.com/",
diyUrl: "https://start9.com/latest/diy",
},
bitcoin: {
whyRunBitcoinUrl: "https://bitcoinmagazine.com/culture/six-reasons-you-should-run-bitcoin-node",
whyRunLightningUrl: "",
},
beYourOwn: {
url: "https://marketplace.start9.com/"
},
poweredBy: {
url: "https://github.com/Start9Labs/embassy-os"
},
support: {
url: "https://start9.com/latest/support/index"
},
dev: {
url: "https://start9.com/latest/developer-docs/"
},
footer: {
copyright: "© " + new Date().getFullYear() + " by START9 LABS, INC.",
canary:
"WE HAVE NEVER RECEIVED A SECRET GOVERNMENT REQUEST TO HAND OVER USER INFORMATION.",
}
};
url: 'https://start9.com',
pitch: {
url: "#infographics" //"https://start9.com/latest/learn/index"
},
products: {
buyUrl: "https://store.start9.com/",
diyUrl: "https://docs.start9.com/latest/diy",
},
bitcoin: {
whyRunBitcoinUrl: "https://bitcoinmagazine.com/culture/six-reasons-you-should-run-bitcoin-node",
whyRunLightningUrl: "",
},
beYourOwn: {
url: "https://marketplace.start9.com/"
},
poweredBy: {
url: "https://github.com/Start9Labs/embassy-os"
},
support: {
url: "https://docs.start9.com/latest/support/index"
},
dev: {
url: "https://docs.start9.com/latest/developer-docs"
},
footer: {
copyright: "© " + new Date().getFullYear() + " by START9 LABS, INC.",
canary: "WE HAVE NEVER RECEIVED A SECRET GOVERNMENT REQUEST TO HAND OVER USER INFORMATION.",
donate: 'https://btcpay.start9.com/apps/2Et1JUmJnDwzKncfVBXvspeXiFsa/crowdfund'
}
};

View File

@@ -13,35 +13,75 @@ module.exports = async function() {
return [
{
name: "Matt Hill",
login: "",
position: "co-founder & CEO",
avatar_url: "https://avatars.githubusercontent.com/u/9935159?v=4",
url: "https://github.com/MattDHill",
blurb: "Passionate leader by example with 12 years experience building products, teams, and companies. Matt is the founder and developer of WorkBlast, the co-creator of Borker, and the co-architect and former CTO of SALT Lending."
},
{
name: "Keagan McClelland",
login: "ProofOfKeags",
position: "co-founder & director of technology",
avatar_url: "https://avatars.githubusercontent.com/u/4033651?v=4",
url: "https://github.com/ProofOfKeags",
blurb: "Keagan has a decade of software development experience with expertise in cryptography, software security, formal methods, open-blockchain technology, and functional programming. His experience runs the gambit from large projects at the Department of Defense and Amazon, as well as small startups like Ionic Security and SALT Lending."
},
{
name: "Aiden McClelland",
login: "dr-bonez",
position: "co-founder & lead developer",
avatar_url: "https://avatars.githubusercontent.com/u/3732071?v=4",
url: "https://github.com/dr-bonez",
blurb: "Aiden is an expert developer with over a decade of experience building software applications from scratch. Aiden specializes in security, blockchain-based technologies, and performance tuning in low resource environments. Aiden possesses a highly-advanced understanding of computer science and is skilled across an incredible spectrum of languages, frameworks, and technologies."
blurb: "Aiden is an expert developer with over a decade of experience building software applications from scratch. He specializes in security, blockchain-based technologies, and performance tuning in low resource environments. Aiden possesses a highly-advanced understanding of computer science and is skilled across an incredible spectrum of languages, frameworks, and technologies."
},
{
name: "Lucy Cifferello",
login: "elvece",
position: "developer",
avatar_url: "https://avatars.githubusercontent.com/u/12953208?v=4",
url: "https://github.com/elvece",
blurb: "Having studied cognition and behavior, the processes of art, concepts of design, and the language of code, Lucy crafts with fused intent. Her background in psychology lends to a multidisciplinary approach to solving problems in both the logical and experiential realms, and this adeptness is expressed in her abilitiy to maneuver across the development stack."
blurb: "Lucy is an experienced full stack developer and exceptional design resource with a background in psychology and art. Her understanding of cognition and behavior, the concepts of design, and the processes of software development lend to a multidisciplinary approach to solving both UX and logic problems. This adeptness is expressed in her ability to maneuver across teams, contributing not only to the development stack, but also to project management, product design, and interface design."
},
{
name: "Mariusz Kogen",
position: "service packager",
avatar_url: "https://avatars.githubusercontent.com/u/3606313?v=4",
blurb: "Mariusz is an early technology enthusiast and adopter who, after a long break in search of self-consciousness and freedom, decided to return and actively support the idea of digital sovereignty and the tools that are being built to free sovereign individuals."
},
{
name: "Bluj",
position: "backend developer",
avatar_url: "https://avatars.githubusercontent.com/u/2364004?v=4",
blurb: "BluJ is a senior software engineer and privacy enthusiast with over a decade of software development experience. Having worked at both S&P 500 companies and startups, he brings an advanced expertise of developing sophisticated and well-tested software."
},
{
name: "David",
position: "communications lead",
avatar_url: "https://avatars.githubusercontent.com/u/39687477?v=4",
blurb: "David has been working with Open Source tools for over 15 years with a focus on education and practical implementation. With one foot in development and another in the community, he ensures that engineering priorities are in sync with real-world needs, and that technological challenges are commonly understood. He also has over a decade of experience as a community organizer. David helps The People declare their sovereignty with Freedom-respecting technologies."
},
{
name: "Kiara",
position: "operations lead",
avatar_url: "https://pbs.twimg.com/profile_images/1552349185332064256/hIbrPv8z_400x400.jpg",
blurb: "Kiara has nearly a decade of experience in strategic operations spanning supply chain and logistics, business operations, and marketing and customer ops. Kiara has worked with early-stage and scaling startups as well as large corporations in both managerial and independent contributor roles. Her diverse background makes her a strong generalist and out-of-the-box problem solver. As such, Kiara is an integral part of Start9's supply chain operations, fulfillment and order management, support, event management, and partnerships."
},
{
name: "Chris",
position: "developer and service packager",
avatar_url: "https://avatars.githubusercontent.com/u/7445670?v=4",
blurb: "Chris is on a mission to bring the Lightning Network to the masses, and believes embassyOS is the best way to achieve this. In his view, the most important bottleneck in the bitcoin revolution is the democratization of knowledge, so he works tirelessly to mine the bitcoin ecosystem for knowledge and share it with others. His main area of expertise is packaging services for embassyOS and he is the lead maintainer on several services."
},
{
name: "Lex",
position: "community outreach and content creation",
avatar_url: "https://avatars.githubusercontent.com/u/45926711?v=4",
blurb: "Lex joined Start9 after voluntarily creating guides and videos for Start9 to benefit the community. Since joining the team, he has become a valuable support resource, community advocate, and consistent content creator in the form of videos, virtual events, and documentation."
},
{
name: "Dread",
position: "service packaging and community outreach",
avatar_url: "https://avatars.githubusercontent.com/u/34528298?v=4",
blurb: "Dread comes to Start9 as an established Bitcoin, Lightning Network, and Privacy evangelist. He has a talent for talking about technology in an approachable and impactful manner. At the core, Dread is an entrepreneur and full-time learner. His tinkering and experimentation have resulted in him becoming a lead service packager and documentation guide developer."
},
{
name: "Rich",
position: "accounting",
avatar_url: "https://avatars.githubusercontent.com/u/53387992?s=200&v=4",
blurb: "Rich has experience in crypto-accounting for businesses, applying his years of accounting experience to businesses who transact in bitcoin. He is currently augmenting these skills by learning software development though a full time education program."
},
{
name: "George",
position: "support and community outreach",
avatar_url: "https://avatars.githubusercontent.com/u/106188942?v=4",
blurb: "George has nearly two decades of experience in Information Technology, from startups to large corporations, with a focus on computer networks and Linux. A privacy advocate with a philosophy of voluntarism, George helps people free themselves by assisting them in their deployment and use of Start9's empowering software."
},
]
};

View File

@@ -1,3 +1,3 @@
<script type="text/javascript"><!--/* Generated by www.email-encoder.com */
for(var gzlupx=["Yw","cg","cw","OQ","bw","cg","Ig","bQ","YQ","YQ","Lg","dA","dA","bw","Zg","Pg","YQ","cA","PA","bA","bQ","Lw","cg","YQ","aQ","bw","Ig","cw","cA","Yg","cw","dA","Yw","YQ","cg","Yg","cA","cA","bw","dA","PQ","YQ","Lg","dA","cw","Og","dA","QA","OQ","cg","PA","dQ","cw","QA","bQ","ZQ","bw","dQ","Pg","bA","dA","aA","bA","YQ","cw","IA"],pirjui=[59,45,24,29,36,27,8,9,31,10,58,28,49,20,6,39,1,42,0,30,61,63,21,50,11,60,38,33,18,32,57,52,35,64,4,56,43,19,44,22,7,55,34,46,16,15,13,23,53,51,62,17,40,47,37,5,14,41,65,12,25,3,54,26,48,2],tcylup=new Array,i=0;i<pirjui.length;i++)tcylup[pirjui[i]]=gzlupx[i];for(var i=0;i<tcylup.length;i++)document.write(atob(tcylup[i]+"=="));
for(var catizv=["dA","Ig","cA","PA","cg","Og","IA","Yw","YQ","Pg","QA","bw","aA","cw","bw","cA","dQ","bA","QA","OQ","PA","dA","YQ","aQ","bw","PQ","OQ","YQ","Ig","Lw","bQ","YQ","cA","cg","cA","Zg","cg","cg","dA","Lg","dQ","bw","dA","Yw","bQ","YQ","ZQ","dA","dA","bw","cw","cg","Lg","cw","cw","bQ","Pg","dA"],hjjlvu=[28,34,38,0,27,15,2,51,26,35,23,40,3,24,20,39,17,12,43,29,54,25,56,11,52,7,49,1,8,55,33,46,18,47,19,6,4,41,22,50,37,32,48,31,9,10,5,13,45,14,44,21,30,36,16,53,57,42],ollucg=new Array,i=0;i<hjjlvu.length;i++)ollucg[hjjlvu[i]]=catizv[i];for(var i=0;i<ollucg.length;i++)document.write(atob(ollucg[i]+"=="));
// --></script><noscript>Please enable JavaScript to see the email address (<a href="https://www.email-encoder.com/enablejs/" target="_blank" rel="noopener noreferrer">How-to</a>).</noscript>

View File

@@ -1,24 +1,26 @@
<footer>
<div class="footer__content">
<div class="header">
{% include "svgs/logo.svg" %}
<div class="footer__copyright">{{ site.footer.copyright }}</div>
<div class="footer__donate">[btcpay widget]</div>
</div>
<ul class="groups">
{% for group in menu|selectattr("inFooter")|sort(false, false, 'order') %}
<li class="{{group.size}}">
<h1>{{group.name}}</h1>
<ul>
{% for item in group.items|sort(false, false, 'order') %}
<li>
<a {{'class=' + item.class + '' if item.class}} {{'target=' + item.target + '' if item.target}} href="{{item.url}}">{{item.name}}{% if item.icon %}{% include "svgs/" + item.icon + ".svg" %}{% endif %}</a>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
<div class="footer__content">
<div class="header">
{% include "svgs/logo.svg" %}
<div class="footer__copyright">{{ site.footer.copyright }}</div>
<div class="footer__donate">
<a href="{{ site.footer.donate }}" class="btn" rel="noopener noreferrer" target="_blank">Donate</a>
</div>
</div>
<div class="footer__canary">{{ site.footer.canary }}</div>
<ul class="groups">
{% for group in menu|selectattr("inFooter")|sort(false, false, 'order') %}
<li class="{{group.size}}">
<h1>{{group.name}}</h1>
<ul>
{% for item in group.items|sort(false, false, 'order') %}
<li>
<a {{'class=' + item.class + '' if item.class}} {{'target=' + item.target + '' if item.target}} href="{{item.url}}" rel="noopener noreferrer">{{item.name}}{% if item.icon %}{% include "svgs/" + item.icon + ".svg" %}{% endif %}</a>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
</div>
<div class="footer__canary">{{ site.footer.canary }}</div>
</footer>

View File

@@ -1,13 +1,13 @@
<form action="">
<input type="email" name="" id="fromEmail" placeholder="email address"/>
<button id="contactSubmit" type="submit" aria-label="Submit Email" title="Submit Email">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-send" viewBox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round">
{# <path stroke="none" d="M0 0h24v24H0z" fill="none"/> #}
<line x1="10" y1="14" x2="21" y2="3" vector-effect="non-scaling-stroke" />
<path d="M21 3l-6.5 18a0.55 .55 0 0 1 -1 0l-3.5 -7l-7 -3.5a0.55 .55 0 0 1 0 -1l18 -6.5" vector-effect="non-scaling-stroke"/>
</svg>
</button>
<div id="emailError" class="form-alert form-alert--error">email error</div>
<div id="emailSuccess" class="form-alert form-alert--success">success</div>
<form id="subscribeForm" action="">
<input type="email" name="" id="fromEmail" placeholder="email address"/>
<button id="contactSubmit" type="submit" aria-label="Submit Email" title="Submit Email">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-send" viewBox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round">
{# <path stroke="none" d="M0 0h24v24H0z" fill="none"/> #}
<line x1="10" y1="14" x2="21" y2="3" vector-effect="non-scaling-stroke" />
<path d="M21 3l-6.5 18a0.55 .55 0 0 1 -1 0l-3.5 -7l-7 -3.5a0.55 .55 0 0 1 0 -1l18 -6.5" vector-effect="non-scaling-stroke"/>
</svg>
</button>
</form>
<div id="emailError" class="form-alert form-alert--error"></div>
<div id="emailSuccess" class="form-alert form-alert--success"></div>
{% include "components/landing/_social-media.njk" %}

View File

@@ -1,42 +1,35 @@
<section id="be-your-own">
<h1>Be
<em>your own</em>
everything</h1>
<p>Anything you can do in the <a href="https://en.wikipedia.org/wiki/Censorship_by_Apple#App_Store" target="_blank" rel="noopener noreferrer">permissioned</a>, <a href="https://www.computerworld.com/article/3634591/the-problem-with-the-subscription-economy.html" target="_blank" rel="noopener noreferrer">subscription-based</a>, <a href="https://en.wikipedia.org/wiki/Privacy_concerns_regarding_Google" target="_blank" rel="noopener noreferrer">privacy-invading</a>, <a target="_blank" rel="noopener noreferrer" href="https://dataprot.net/articles/biggest-data-breaches/">insecure</a> model of cloud computing, you
can also do in the open, free, private, secure model of <em>sovereign computing</em>.</p>
<div id='ticker'>
<div id="ticker__selected-frame">
<span>be your own</span>
{# <div id="services"></div> #}
</div>
<div id="ticker__window">
<ul class='pseudoservices'>
{% for pseudoservice in pseudoservices %}
<li class="pseudoservice">{{ pseudoservice.name }}</li>
{% endfor %}
</ul>
</div>
<div class="services">
{% for pseudoservice in pseudoservices %}
<div class="service-container service-container--{{ pseudoservice.slug }}">
{% for service in services %}
{% if pseudoservice.slug in service.pseudoservices %}
<div class="service__content" >
<a class="service__link" href="https://marketplace.start9.com/{{service.slug}}" target="_blank" rel="noopener noreferrer">
<img class="service__image service__image--{{ service.slug }}" src="/assets/images/service-icons/{{ service.slug }}.png" alt="{{ service.name }} embassyOS service icon" title="{{ service.name }} embassyOS service icon"
style="filter: drop-shadow(0px 0px 3rem {{ service.color }}C0)"/>
<div class="service__info">
<h3 class="service__name">{{ service.name }}</h3>
<p class="service__desc">{{ service.description }}</p>
</div>
</a>
<div class="service__bkg" style="background: linear-gradient(180deg, {{ service.color }}00 0%, {{ service.color }}C0 30%, {{ service.color }}FF 50%, {{ service.color }}C0 66%, {{ service.color }}00 100%);"></div>
</div>
{% endif %}
{% endfor %}
</div>
{% endfor %}
</div>
<h1>Be <em>your own</em> everything</h1>
<p>Anything you can do in the closed-source, intermediated, custodial, <em>expensive</em> model of cloud computing you can do in the open-source, self-hosted, private, and <em>free</em> model of sovereign computing.</p>
<div id="ticker">
<div id="ticker__selected-frame">
<span>be your own</span>
{# <div id="services"></div> #}
</div>
<a href="{{ site.beYourOwn.url }}" class="btn">browse the start9 marketplace</a>
<div id="ticker__window">
<ul class='pseudoservices'>
{% for ps in pseudoservices %}
<li class="pseudoservice">{{ ps.name }}</li>
{% endfor %}
</ul>
</div>
<div class="services">
{% for ps in pseudoservices %}
<div class="service-container service-container--{{ ps.slug }}">
<div class="service__content" >
<a class="service__link" href="https://marketplace.start9.com/{{ ps.service }}" target="_blank" rel="noopener noreferrer">
<img class="service__image service__image--{{ ps.service }}" src="/assets/images/service-icons/{{ ps.service }}.png" alt="{{ services[ps.service].name }} embassyOS service icon" title="{{ services[ps.service].name }} embassyOS service icon"
style="filter: drop-shadow(0px 0px 3rem {{ services[ps.service].color }}C0)"/>
<div class="service__info">
<h3 class="service__name">{{ services[ps.service].name }}</h3>
<p class="service__desc">{{ services[ps.service].description }}</p>
</div>
</a>
<div class="service__bkg" style="background: linear-gradient(180deg, {{ services[ps.service].color }}00 0%, {{ services[ps.service].color }}C0 30%, {{ services[ps.service].color }}FF 50%, {{ services[ps.service].color }}C0 66%, {{ services[ps.service].color }}00 100%);"></div>
</div>
</div>
{% endfor %}
</div>
</div>
<a href="{{ site.beYourOwn.url }}" class="btn" rel="noopener noreferrer" target="_blank">View the marketplace</a>
</section>

View File

@@ -1,31 +1,34 @@
<section id="bitcoin">
{% include "svgs/bitcoin-grid-blend-top.svg" %}
<div class="subsection subsection--bitcoin">
<h1>Become Bitcoin</h1>
<p>
<em>Don't trust, verify.</em>
<br/>Run a full Bitcoin node to verify transactions and enforce the consensus rules you choose.</p>
<a class="btn btn--subtle" target="_blank" rel="noopener noreferrer" href="{{ site.bitcoin.whyRunBitcoinUrl }}">why host a bitcoin node?</a>
</div>
<div class="subsection subsection--lightning">
<h1>Become Lightning</h1>
<p>
<em>Not your keys, not your coins.</em>
<br/>Run a Lightning node to take full control and custody over your Bitcoin on Lightning.</p>
<a class="btn btn--subtle" target="_blank" rel="noopener noreferrer" href="{{ site.bitcoin.whyRunLightningUrl }}">why host a lightning node?</a>
{% include "svgs/bitcoin-grid-blend-top.svg" %}
<div class="subsection subsection--bitcoin">
<h1>Become Bitcoin</h1>
<p>
<em>Don't trust, verify.</em>
<br/>Run a full Bitcoin node to verify transactions and enforce the consensus rules you choose.
</p>
</div>
<div class="subsection subsection--lightning">
<h1>Become Lightning</h1>
<p>
<em>Not your keys, not your coins.</em>
<br/>Run a Lightning node to take full control and custody over your Bitcoin payments.
</p>
</div>
<div id="flying-icons">
{% for service in services %}
{% for category in service.categories %}
{% if (category == "bitcoin") or (category == "lightning") or (category == "plebnet-tools") %}
<img
class="service-icon service-icon--{{ service.slug }}"
src="/assets/images/service-icons/{{ service.slug }}.png"
alt="{{ service.name }} embassyOS service icon"
alt="{{ service.name }} embassyOS service icon"/>
{% endif %}
{% endfor %}
{% endfor %}
{% for slug, service in services %}
{% if (service.bitcoin == true) %}
<img
class="service-icon service-icon--{{ slug }}"
src="/assets/images/service-icons/{{ slug }}.png"
alt="{{ service.name }} embassyOS service icon"/>
{% endif %}
{% endfor %}
</div>
{% include "svgs/bitcoin-grid-blend-bottom.svg" %}
<div class="subsection subsection--bitcoin">
<h1>Become Unstoppable</h1>
<p>
When you run your own Bitcoin and Lightning nodes, you <em>become your own bank</em> and payment processor. Nobody can stop you from spending your money as you see fit, 24/7/365, from anywhere, to anywhere, instantly, and for free.
</p>
</div>
{% include "svgs/bitcoin-grid-blend-bottom.svg" %}
</section>

View File

@@ -1,5 +1,6 @@
<section id="community">
<h1>Join the <em>Community</em></h1>
<h1>Get <em>updates</em></h1>
<p>We will <em>never</em> share your email with anyone.</p>
{% include "components/landing/_contact.njk" %}

View File

@@ -1,20 +1,25 @@
<section id="dev">
<h1>Package a <em>service</em></h1>
<div class="cols">
<div class="col">
<div class="wrapper">
<div class="content">
<p>Interested in packaging a service?<br/><em>Our community runs on devs like you.</em></p>
<p>There are <a href="https://github.com/awesome-selfhosted/awesome-selfhosted" target="_blank" rel="noopener noreferrer">thousands</a> of wonderful open-source services out there - just waiting to be added to the Embassy Marketplace.</p>
<p>If you're familiar with Docker or Rust (or want to learn!), check out our step-by-step packaging tutorials.</p>
</div>
<div class="footer">
<a class="btn" href="{{ site.dev.url }}">learn more</a>
</div>
</div>
<h1><em>Package</em> a service</h1>
<div class="cols">
<div class="col">
<div class="wrapper">
<div class="content">
<p>Packaging a service for emabssyOS is a <em>challenging, exciting, creative, and rewarding</em> experience.</p>
<p>If it can be self-hosted, it can be run on embassyOS.</p>
<p>Unleash your favorite open source project!</p>
</div>
<div class="col hide-on-mobile">
<div class="code-wrapper"><img src="/assets/images/dockerfile.png" alt="screenshot of dockerfile" title="screenshot of dockerfile"></div>
<div class="footer">
<a class="btn" href="{{ site.dev.url }}" rel="noopener noreferrer" target="_blank">View the docs</a>
</div>
</div>
</div>
<div class="col hide-on-mobile">
<div class="code-wrapper"><img src="/assets/images/dockerfile.png" alt="screenshot of dockerfile" title="screenshot of dockerfile"></div>
</div>
</div>
<div class="skills">
<p>
Have other skills? <a href="https://start9.com/latest/contribute/index" rel="noopener noreferrer" target="_blank">We need your help</a>.
<p>
</div>
</section>

View File

@@ -1,32 +1,24 @@
<section id="infographics">
<div class="subsection subsection--trust">
<h1>The problem is
<em>trust</em>
</h1>
<p>
<em>Whoever controls your data, controls you.</em>
App companies can see your pictures, read your documents, listen to your conversations, track your location, sell your
private information, permanently delete your data, or cut you off at any time. Even if the companies behind these apps
are not malicious, they are prime targets for hackers and are vulnerable to political winds.</p>
<div id="big-tech-network-image-block" class="image-with-shadow">
{% include "svgs/big-tech-network-diagram.svg" %}
<div class="img-shadow">{% include "svgs/big-tech-network-diagram.svg" %}</div>
</div>
<div class="subsection subsection--trust">
<h1><em>Cloud</em> computing</h1>
<p>The "cloud" is just someone else's computer. Your cell phone and laptop are just remote controls. You are not in control.</p>
<p>In the cloud computing paradigm, there is no privacy, censorship is commonplace, hacks are inevitable, and costs will forever rise.</p>
<div class="container">
<div id="big-tech-network-image-block" class="image-with-shadow">
<img src="/assets/images/pyramid-down.png" alt="pyramid down big tech" title="pyramid down big tech">
<img class="img-shadow" src="/assets/images/pyramid-down.png" alt="">
</div>
</div>
<div class="subsection subsection--control">
<h1>Take back
<em>control</em>
</h1>
<p>The only way to be free is to cut out the middle men and take control of your data by running a personal server.
<br>
<br>
In the past, running a server was only possible for highly technical people or those who could afford to hire them;
namely software developers, corporations, wealthy individuals, and politicians.
<em>Start9 levels the playing field</em>
by making it possible for the rest of us.</p>
<div id="embassyos-network-image-block" class="image-with-shadow">
{% include "svgs/embassyos-network-diagram_red_extended.svg" %}
<div class="img-shadow">{% include "svgs/embassyos-network-diagram_red_extended.svg" %}</div>
</div>
</div>
</section>
</div>
<div class="subsection">
<h1><em style="color: #54be54;">Sovereign</em> computing</h1>
<p>When you run a private server, you are in control. You don't rely on others to process or store your data.</p>
<p>In the sovereign computing paradigm, concerns over privacy, censorship, hacks, and fees practically disappear.</p>
<div class="container">
<div id="big-tech-network-image-block" class="image-with-shadow">
<img src="/assets/images/pyramid-up.png" alt="pyramid down powered be eOS" title="pyramid down powered by eOS">
<img class="img-shadow" src="/assets/images/pyramid-up.png" alt="">
</div>
</div>
</div>
</section>

View File

@@ -1,10 +1,8 @@
<section id="pitch">
<h1>
We make personal servers to make you <em>unstoppable</em>
</h1>
<p>
We make a personal server called an <em>Embassy</em> that puts you in control of your data, your money, and your digital life.
</p>
{# <a class="btn" href="{{ site.pitch.url }}">learn more</a> #}
{# <iframe id="odysee-iframe" width="560" height="315" src="https://odysee.com/$/embed/@purism:8/introducing-pureboot-basic:d?r=B2sJWhwiPNQDy457RV1NjAYxDb6uiHGm" allowfullscreen></iframe> #}
<h1>Take back <em>control</em></h1>
<p>Everything you do online is intermediated - your actions permissioned, your data custodied.</p>
<p><em>Opt out</em> by running a private server.</p>
<p>Previously, it was only available to the tech saavy and the wealthy. Start9 levels the playing field by making it possible for everyone else.</p>
{# <a class="btn" href="{{ site.pitch.url }}">learn more</a> #}
{# <iframe id="odysee-iframe" width="560" height="315" src="https://odysee.com/$/embed/@purism:8/introducing-pureboot-basic:d?r=B2sJWhwiPNQDy457RV1NjAYxDb6uiHGm" allowfullscreen></iframe> #}
</section>

View File

@@ -1,19 +1,17 @@
<section id="powered-by">
<h1>Powered by <em>embassyOS</em></h1>
<div>
<p>
embassyOS (eOS) is a browser-based, graphical operating system for a personal server, designed to <em>
turn anyone into a
system administrator
</em> capable of managing their own server.
</p>
<p>
Check out our <a href="https://github.com/Start9Labs/embassy-os" target="_blank" rel="noopener noreferrer">source code!</a>
</p>
<h1>Powered by <em>embassyOS</em></h1>
<p>Just as Windows and MacOS made it possible for anyone to own a personal computer, embassyOS makes it possible for anyone to own a personal server.</p>
<p>embassyOS facilitates the entire process of discovering, installing, configuring, and using any variety of open-source software from anywhere in the world without trusting anyone.</p>
<p>
embassyOS is the distribution platform open source software has been waiting for.
Check out the <a href="https://github.com/Start9Labs/embassy-os" target="_blank" rel="noreferrer">source code</a>!
</p>
<div id="stack-image-block" class="image-with-shadow">
{# {% include "svgs/stack.svg" %}
<div class="img-shadow">{% include "svgs/stack.svg" %}</div> #}
<div class="container">
<img src="/assets/images/embassyOS.png" alt="screenshots of embassyOS UI" title="screenshots of embassyOS UI">
<img class="img-shadow" src="/assets/images/embassyOS.png" alt="">
</div>
<div id="stack-image-block" class="image-with-shadow">
{% include "svgs/stack.svg" %}
<div class="img-shadow">{% include "svgs/stack.svg" %}</div>
</div>
</div>
</section>

View File

@@ -1,21 +1,21 @@
<section id="products">
<div class="subsection subsection--buy panel--shadow">
<a class="product product--buy" href="{{ site.products.buyUrl }}">
<img class="product__buy-image" src="/assets/images/embassy-pro-sketch.png" alt="prefab embassy, represented in voxels" title="prefab embassy, represented in voxels">
<img class="img-shadow" src="/assets/images/embassy-pro-sketch.png" alt="">
<div class="heading">
<h1 class="product__header">buy</h1>
<span class="product__subheader">your embassy</span>
</div>
{% include "svgs/embassy-pro-sketch-lines.svg" %}
</a>
</div>
<div class="subsection subsection--diy panel--shadow">
<a class="product product--diy" href="{{ site.products.diyUrl }}">
<div class="heading">
<span class="product__subheader"><strong>like to tinker?</strong></span>
<span class="product__subheader">DIY your embassy</span>
</div>
</a>
</div>
<div class="subsection subsection--buy panel--shadow">
<a class="product product--buy" href="{{ site.products.buyUrl }}" rel="noopener noreferrer" target="_blank">
<img class="product__buy-image" src="/assets/images/embassy-pro-sketch.png" alt="prefab embassy, represented in voxels" title="prefab embassy, represented in voxels">
<img class="img-shadow" src="/assets/images/embassy-pro-sketch.png" alt="">
<div class="heading">
<h1 class="product__header">buy</h1>
<span class="product__subheader">your embassy</span>
</div>
{% include "svgs/embassy-pro-sketch-lines.svg" %}
</a>
</div>
<div class="subsection subsection--diy panel--shadow">
<a class="product product--diy" href="{{ site.products.diyUrl }}" rel="noopener noreferrer" target="_blank">
<div class="heading">
<span class="product__subheader"><strong>like to tinker?</strong></span>
<span class="product__subheader">DIY your embassy</span>
</div>
</a>
</div>
</section>

View File

@@ -1,23 +1,18 @@
<section id="support" class="section--subtle panel--shadow">
<h1>Get
<em>help</em>
</h1>
<div class="cols">
<div class="col">
<p>
Even though we've made it easy, running a personal server can still be intimidating or confusing at times.
</p>
<p>
At Start9, we pride ourselves on providing the <em>best customer support in the world</em>. We offer a comprehensive and detailed
user manual, an extensive FAQ, written and video tutorials, and direct access to our wonderful community and team of
technical experts.
</p>
</div>
<div class="col">
<div class="image-with-shadow">
<img src="/assets/images/support-header.png" alt="life preserver icon" title="life preserver icon">
<img class="img-shadow" src="/assets/images/support-header.png" alt=""></div>
<h1>We got your back</h1>
<div class="image-with-shadow">
<img src="/assets/images/support-header.png" alt="life preserver icon" title="life preserver icon">
<img class="img-shadow" src="/assets/images/support-header.png" alt="">
</div>
</div>
<a class="btn" href="{{ site.support.url }}">meet the team</a>
<div class="support__content">
<p>
Start9's customer support is the best in the galaxy. Our team, composed of real humans, is here for you.
</p>
<p>
We provide the knowledge and context you need to feel confident in the world of sovereign computing.
</p>
</div>
<a class="btn" href="{{ site.support.url }}" rel="noopener noreferrer" target="_blank">Get help</a>
</section>

View File

@@ -0,0 +1,23 @@
---
title: License | Start9
layout: layouts/peripheral.njk
---
<section id="hero">
<div id="hero-image" class="image-with-shadow">
<img
src="/assets/images/about-hero.png"
alt="license page hero image: a robot emerging from the embasssy"
title="license page hero image: a robot emerging from the embasssy"/>
<img class="img-shadow" src="/assets/images/about-hero.png" alt=""/>
</div>
<div id="logo">
<h1>
<span>License</span>
</h1>
</div>
</section>
<section id="license" class="section--no-image">
{{ content | safe }}
</section>

View File

@@ -9,7 +9,6 @@
<title>{{ title }}</title> #}
{% favicon './favicon.svg' %}
<link rel="stylesheet" href="/assets/styles/main.css">
<script async defer data-website-id="3e99dfb1-0664-4d49-8fb6-de86e763a716" src="https://s9-analytics.altweb.me/umami.js"></script>
{% seo "" %}
</head>
<body>

View File

@@ -1,5 +0,0 @@
---
layout: layouts/base.njk
---
<article>{{ content | safe}}</article>

View File

@@ -26,9 +26,6 @@ layout: layouts/peripheral.njk
<li>
<a href="#origin">origin story</a>
</li>
<li>
<a href="#team">team</a>
</li>
</ul>
</div>
</section>
@@ -87,7 +84,7 @@ layout: layouts/peripheral.njk
<h4>independence</h4>
<p>Being dependent means being unable to survive on your own. Like a child, it means needing others and relying on them
to provide for you, thus granting them power over you. A free and dignified human existence demands self-reliance: the
ability to think and act with efficacy to obtain ones needs.</p>
ability to think and act with efficacy to obtain one's needs.</p>
</section>
<section id="virtues">
<h2>Virtues</h2>
@@ -123,7 +120,7 @@ layout: layouts/peripheral.njk
<p>
<strong>Pokemon is a game for Gameboy.</strong>
Twitch is a live video streaming app. “Twitch Plays Pokemon” was a popular phenomenon where Twitch users would
collaborate to play a SHARED game of Pokemon on Gameboy. Heres how it worked:</p>
collaborate to play a SHARED game of Pokemon on Gameboy. Here's how it worked:</p>
<p>Participants would use the Twitch message board to enter commands that then got executed in the gameplay. For
example, if someone entered the command “right”, that would cause the player to move 1 space to the right. Commands
would execute immediately after they were received, and anyone could enter a valid command at any time. You can think of
@@ -151,9 +148,9 @@ layout: layouts/peripheral.njk
whenever Democracy mode became suffocating, but they could not garner enough votes to switch back to Anarchy mode.
Someone would type the command “start9” into the comments. This command meant “open the start menu 9 times in a row”,
which, as you might imagine, would be enormously disruptive if executed. The entire screen would be blocked by the start
menu, over and over. Typing “start9” was a participants way of signaling to other participants that they felt
menu, over and over. Typing “start9” was a participant's way of signaling to other participants that they felt
marginalized by Democracy mode, and they were ready to fight back. If others felt the same, they could also begin typing
“start9” - then, sure enough, “start9” would finally receive more votes than the colluding groups command, and the menu
“start9” - then, sure enough, “start9” would finally receive more votes than the colluding group's command, and the menu
opening would begin. Every 4 seconds, the menu would open 9 times…again, and again, and again…until finally, the
colluding group would be forced to either cooperate in reverting the game mode back to Anarchy mode or quit altogether.</p>
<p>Playing in Anarchy mode was impractical, but people did not want to play a game where they had no voice, where a
@@ -162,7 +159,7 @@ layout: layouts/peripheral.njk
individuals that it was time to fight back against the usurpers - to use their own rules against them, until there was
no alternative but to return control to the individual participants.</p>
</section>
<section id="team">
{# <section id="team">
<h2>Our Team</h2>
<div class="section__image">
<img src="/assets/images/team-header.png" alt="team section hero: robots being printed" title="team section hero: robots being printed"/>
@@ -181,4 +178,4 @@ layout: layouts/peripheral.njk
</li>
{% endfor %}
</ul>
</section>
</section> #}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

View File

@@ -6,21 +6,17 @@
// DATA
// TODO: pull this from data js instead
const bitcoinServices = [
"balanceofsatoshis",
"bitcoind",
"btc-rpc-proxy",
"btcpayserver",
"c-lightning",
"btcpay",
"cln",
"electrs",
"lightning-jet",
"lnd",
"lightning-terminal",
"lndg",
"lit",
"mempool",
"ride-the-lightning",
"spark-wallet",
"rtl",
"spark",
"specter",
"sphinx-relay",
"sphinx",
"thunderhub",
];

View File

@@ -2,11 +2,13 @@
/* CONTACT POST */
/********************************************/
function showSuccess() {
hideError();
emailSuccess.classList.add("form-alert--visible");
}
const emailError = document.getElementById("emailError")
const emailSuccess = document.getElementById("emailSuccess")
function showSuccess(message) {
hideError();
emailSuccess.classList.add("form-alert--visible");
emailSuccess.innerHTML = message
}
function hideSuccess() {
emailError.classList.remove("form-alert--visible");
@@ -15,18 +17,20 @@ function showSuccess() {
function showError(message) {
hideSuccess();
emailError.classList.add("form-alert--visible");
emailError.innerHTML(message);
emailError.innerHTML = message;
}
function hideError() {
emailError.classList.remove("form-alert--visible");
}
document.getElementById("contactSubmit").addEventListener("click", function () {
function clear(){
document.getElementById("subscribeForm").reset()
}
document.getElementById("contactSubmit").addEventListener("click", function (e) {
const fromEmail = document.getElementById("fromEmail");
const emailError = document.getElementById("emailError");
const emailSuccess = document.getElementById("emailSuccess");
e.preventDefault()
if (
/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/.test(
fromEmail.value
@@ -35,24 +39,39 @@ function showSuccess() {
hideError();
try {
fetch(siteUrl + "app/php/email/v1/SendSupportMail.php", {
var body = {
customer: {
email: fromEmail.value,
accepts_marketing: true,
verified_email: true,
},
};
fetch("https://start9.com/api/subscribe", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Content-Type": "application/json",
},
body: formBody,
body: JSON.stringify(body),
}).then((response) => {
if (response.status === 200) {
showSuccess();
clear()
if (response.ok) {
showSuccess("Thanks for subscribing!");
} else {
showError(
"Something's not working. If you keep getting this error, try us at <a href='https://twitter.com/start9labs' target='_blank'>Twitter</a> instead."
);
if (response.status = 422) {
showError("Already subscribed!")
} else {
console.error(`Error code: ${response.status} - Details: ${response.statusText}`)
showError(
"Something's not working. If you keep getting this error, try us at <a href='https://twitter.com/start9labs' rel='noopener noreferrer' target='_blank'>Twitter</a> instead."
);
}
}
});
} catch (error) {
clear()
console.error(error)
showError(
"Something's not working. If you keep getting this error, try us at <a href='https://twitter.com/start9labs' target='_blank'>Twitter</a> instead."
"Something's not working. If you keep getting this error, try us at <a href='https://twitter.com/start9labs' rel='noopener noreferrer' target='_blank'>Twitter</a> instead."
);
}
} else {

View File

@@ -34,8 +34,9 @@ kerplunk2 = CustomEase.create(
"M0,0 C0.126,0.382 0.178,0.802 0.288,1.052 0.303,1.088 0.372,0.99 0.434,0.99 0.502,0.99 0.497,1 0.524,1 0.664,1 0.863,1 1,1 "
);
function tick() {
var action = tickerTL
let action = tickerTL
.to(pseudoserviceArray, {
id: "thunk",
y: "-=" + itemHeight,
@@ -50,8 +51,8 @@ function tick() {
// start endless run
gsap.delayedCall(next, tick);
var thisPseudoservice = pseudoserviceArray[2].innerHTML,
thisElement = document.querySelector(
let thisPseudoservice = pseudoserviceArray[2].innerHTML
let thisElement = document.querySelector(
".service-container--" + thisPseudoservice.toLowerCase().replace(" ", "-")
);
@@ -66,4 +67,45 @@ function tick() {
}
// initialize
gsap.delayedCall(next, tick);
gsap.delayedCall(next, tick);
function moveTick(service) {
let thisPseudoservice = pseudoserviceArray.slice().filter(a => a.innerHTML === service)[0].innerHTML
let thisElement = document.querySelector(".service-container--" + thisPseudoservice.toLowerCase().replace(" ", "-"));
// get index of current tick
// let current = Array.from(Array.from(document.querySelectorAll(".service-container")).filter(a => a.style.display === 'flex')[0].classList).filter(a => a.includes("--"))[0].split("--")[1]
// let currentIndex = pseudoserviceArray.findIndex(a => a.innerHTML.toLowerCase() === current)
let current = pseudoserviceArray[2].innerHTML
let currentIndex = 2
let i = pseudoserviceArray.findIndex(a => a.innerHTML === service)
console.log(i)
let diff = Math.abs(currentIndex - i)
let y
if (i > currentIndex) {
y = "-=" + (itemHeight * diff)
} else {
y = "+=" + (itemHeight * diff)
}
tickerTL
.to(pseudoserviceArray, {
id: "thunk",
y,
duration: 1,
ease: kerplunk2,
overwrite: 'auto',
})
var slidesContainerArray = document.querySelectorAll(".service-container");
slidesContainerArray.forEach((thisContainer) => {
thisContainer.style.display = "none";
});
if (thisElement) {
thisElement.style.display = "flex";
}
}

View File

@@ -1,6 +1,6 @@
@media screen and (min-width: 900px) {
#be-your-own {
--size: 3rem;
--size: 2.7rem;
--rows-above: 2;
--rows-height: 7;
}
@@ -22,28 +22,38 @@
margin: 0 0 0 1rem !important;
&::before {
top: 25% !important;
left: calc(-4rem + 2px) !important;
left: calc(-4rem) !important;
align-self: flex-start !important;
justify-content: center !important;
border-top: 2rem transparent solid !important;
border-right: 2rem var(--c-text-accent) solid !important;
border-right: 2rem rgba(255, 255, 255, 0.3) solid !important;
border-bottom: 2rem transparent solid !important;
border-left: 2rem transparent solid !important;
}
}
}
@media screen and (max-width: 900px) {
#be-your-own {
--size: 2rem;
}
#be-your-own a {
margin-bottom: 4rem !important;
}
#ticker {
height: 32vh !important;
}
.service__image {
width: 10rem !important;
}
}
#be-your-own {
display: flex;
flex-direction: column;
align-items: center;
gap: 3rem;
gap: 2rem;
//margin: 0 0 6rem 0;
padding: 0 6rem 0 6rem;
box-sizing: border-box;
@@ -69,6 +79,7 @@
//outline: 1px solid white;
//outline-offset: calc(0.1 * var(--size));
font-size: var(--size);
font-weight: bolder;
text-transform: uppercase;
line-height: var(--size);
position: absolute;
@@ -85,14 +96,16 @@
rgba(255, 255, 255, 0.02)
);
border-bottom: 0.5rem transparent solid;
width: 80vw;
}
#ticker__window {
height: calc(var(--rows-height) * var(--line));
width: calc(100vw - 12rem - 11.5ch);
width: calc(100vw - 12rem - 6.5ch);
overflow: hidden;
font-size: var(--size);
left: 11.5ch;
position: relative;
// z-index: 10;
}
ul.pseudoservices {
@@ -108,6 +121,10 @@
padding: var(--p);
white-space: nowrap;
overflow: hidden;
&:hover {
cursor: 'pointer'
}
}
}
@@ -171,25 +188,27 @@
}
.service__info {
background-color: var(--c-text-accent);
background-color: rgba(255, 255, 255, 0.3);
width: 20ch;
padding: 1rem;
padding: 1.3rem;
margin-top: 1rem;
position: relative;
display: flex;
flex-direction: column;
box-shadow: var(--sh-2);
box-shadow: var(--sh-1);
border-radius: 24px;
backdrop-filter: blur(4px);
&::before {
position: absolute;
top: calc(-4rem + 2px);
top: calc(-4rem);
content: "";
display: block;
//width: 0;
//height: 0;
border-top: 2rem transparent solid;
border-right: 2rem transparent solid;
border-bottom: 2rem var(--c-text-accent) solid;
border-bottom: 2rem rgba(255, 255, 255, 0.3) solid;
border-left: 2rem transparent solid;
align-self: center;
}
@@ -200,6 +219,8 @@
font-size: 0.75rem;
height: 4em;
overflow: hidden;
// margin: 0 !important;
padding: 0.2rem;
}
}

View File

@@ -53,6 +53,7 @@ section#bitcoin {
p {
max-width: min(35ch, 50vw);
margin: 0 !important;
em {
color: var(--c-text-primary);
font-weight: 700;
@@ -61,14 +62,14 @@ section#bitcoin {
.subsection {
padding: 0 6rem;
gap: 3rem;
gap: 1.2rem;
}
.subsection--bitcoin {
display: flex;
flex-direction: column;
place-self: flex-start;
margin-bottom: 6rem;
margin-bottom: 2rem;
margin-left: 8rem;
align-items: flex-start;
}
@@ -78,6 +79,7 @@ section#bitcoin {
flex-direction: column;
align-items: flex-end;
margin-right: 8rem;
margin-bottom: 2rem;
h1,
p {
text-align: right;
@@ -104,22 +106,14 @@ section#bitcoin {
mix-blend-mode: soft-light;
box-shadow: 0 2rem 3rem var(--c-shadow-3);
&.service-icon--balanceofsatoshis {
width: 5rem;
z-index: -8;
}
&.service-icon--bitcoind {
width: 15rem;
}
&.service-icon--btc-rpc-proxy {
width: 9rem;
z-index: -4;
}
&.service-icon--btcpayserver {
&.service-icon--btcpay {
width: 6rem;
z-index: -7;
}
&.service-icon--c-lightning {
&.service-icon--cln {
width: 15rem;
}
&.service-icon--electrs {
@@ -128,31 +122,23 @@ section#bitcoin {
padding: 1rem;
z-index: -6;
}
&.service-icon--lightning-jet {
width: 6rem;
z-index: -7;
}
&.service-icon--lnd {
width: 10rem;
z-index: -3;
}
&.service-icon--lightning-terminal {
&.service-icon--lit {
width: 7rem;
z-index: -6;
}
&.service-icon--lndg {
width: 9rem;
z-index: -4;
}
&.service-icon--mempool {
width: 8rem;
z-index: -5;
}
&.service-icon--ride-the-lightning {
&.service-icon--rtl {
width: 8rem;
z-index: -5;
}
&.service-icon--spark-wallet {
&.service-icon--spark {
width: 7rem;
z-index: -6;
}
@@ -160,7 +146,7 @@ section#bitcoin {
width: 5rem;
z-index: -8;
}
&.service-icon--sphinx-relay {
&.service-icon--sphinx {
width: 6rem;
z-index: -7;
}
@@ -172,11 +158,16 @@ section#bitcoin {
}
@media only screen and (max-width: 500px) {
section#bitcoin {
p {
max-width: min(35ch, 73vw);
}
}
.service-icon--bitcoind {
width: 11rem !important;
width: 9rem !important;
}
.service-icon--c-lightning {
width: 11rem !important;
width: 9rem !important;
}
section#bitcoin .subsection {
@@ -184,10 +175,17 @@ section#bitcoin {
}
section#bitcoin .subsection--bitcoin {
margin-left: 4rem;
margin-left: 2rem;
}
section#bitcoin .subsection--lightning {
margin-right: 4rem;
margin-left: 2rem;
margin-right: 0;
align-items: flex-start;
place-self: flex-start;
h1,
p {
text-align: left;
}
}
}

View File

@@ -2,15 +2,20 @@ section#community {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
//min-height: calc(100vh - 2 * var(--section-padding));
margin-bottom: 12rem;
--width: calc(31ch - 5rem);
h1{
margin-bottom: 6rem;
margin-bottom: 16px;
padding: 0 3rem;
}
p{
margin-bottom: 2.5rem;
}
form{
position: relative;
}

View File

@@ -5,7 +5,7 @@
//min-height: calc(100vh - 2 * var(--section-padding));
padding: 0 6rem;
h2{
margin: 0;
margin-bottom: 16px;
text-align: center;
}
.cols{
@@ -45,20 +45,23 @@
position: absolute;
top: 12rem;
left: -4rem;
content: '';
display: block;
width: 0;
height: 0;
border-top: 2rem transparent solid;
border-right: 2rem #1e1e1e solid;
border-bottom: 2rem transparent solid;
border-left: 2rem transparent solid;
content: '';
display: block;
width: 0;
height: 0;
border-top: 2rem transparent solid;
border-right: 2rem #1e1e1e solid;
border-bottom: 2rem transparent solid;
border-left: 2rem transparent solid;
}
}
}
img {
width: 20rem;
box-shadow: var(--sh-2);
border-radius: 1.3rem;
}
.skills {
text-align: center;
}
}

View File

@@ -583,51 +583,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';

View File

@@ -1,140 +1,165 @@
footer{
transform: translate(0px, 0vh);
padding: 0;
font-weight: 400;
color: gray;
background-color: black;
.footer__copyright, .footer__donate{
font-size: max(14px, 0.8rem);
footer {
transform: translate(0px, 0vh);
padding: 0;
font-weight: 400;
color: gray;
background-color: black;
.footer__copyright, .footer__donate {
font-size: max(10px, 0.8rem);
}
.footer__content {
display: flex;
.header {
align-self: flex-start;
margin: 1.8rem 0 0 5rem;
svg {
width: 12rem;
}
}
.footer__content{
display: flex;
.header{
align-self: flex-start;
margin: 1.8rem 0 0 5rem;
svg{
width: 12rem;
}
}
}
.groups{
display: flex;
flex-wrap: wrap;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr;
.half {
grid-row: span 1;
}
.full {
grid-row: span 2;
}
& > li {
padding: 2.5rem 2.5rem;
}
}
h1{
font-family: var(--f-accent-bold);
font-size: .9rem;
color: var(--c-text-primary);
margin-bottom: 1.7rem;
}
.groups li > a {
.footer__donate {
margin-top: 3rem;
.btn {
padding: 0.5rem 1.5rem;
color: var(--c-text-bright);
background-color: var(--c-accent);
border: 0;
font-family: var(--f-accent);
font-size: max(14px,.8rem);
line-height: 1.5;
font-weight: 300;
//text-transform: uppercase;
letter-spacing: .1em;
color: var(--c-text-primary);
position: relative;
display: inline-flex;
flex-wrap: nowrap;
align-items: center;
gap: 0.3em;
white-space: nowrap;
font-size: 1rem;
text-decoration: none;
box-shadow: 0 1rem 1rem -0.5rem var(--c-shadow-3);
border-radius: 34px;
path{
transition: var(--t-simple);
}
&:hover {
color: var(--c-text-accent);
path {
stroke: var(--c-text-accent);
}
}
&.highlight{
color: var(--c-text-bright);
font-weight: 300;
&::before{
content: '';
z-index: -1;
background-color: var(--c-text-accent);
width: 110%;
left: -5%;
display: inline-block;
height: 85%;
position: absolute;
}
}
svg{
height: 1em;
width: 1em;
transform: scale(1.03);
filter: brightness(120%);
}
}
}
}
.groups{
display: flex;
flex-wrap: wrap;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr;
.half {
grid-row: span 1;
}
.full {
grid-row: span 2;
}
& > li {
padding: 2.5rem 2.5rem;
}
}
h1 {
font-family: var(--f-accent-bold);
font-size: .9rem;
color: var(--c-text-primary);
margin-bottom: 1.7rem;
}
.groups li > a {
font-family: var(--f-accent);
font-size: max(13px,.8rem);
line-height: 1.5;
font-weight: 300;
//text-transform: uppercase;
letter-spacing: .1em;
color: var(--c-text-primary);
position: relative;
display: inline-flex;
flex-wrap: nowrap;
align-items: center;
gap: 0.3em;
white-space: nowrap;
path {
transition: var(--t-simple);
}
.footer__canary{
text-align: center;
padding: 2rem;
&:hover {
color: var(--c-text-accent);
path {
stroke: var(--c-text-accent);
}
}
&.highlight{
color: var(--c-text-bright);
font-weight: 300;
&::before {
content: '';
z-index: -1;
background-color: var(--c-text-accent);
width: 110%;
left: -5%;
display: inline-block;
height: 85%;
position: absolute;
}
}
svg {
height: 1em;
width: 1em;
}
}
.footer__canary{
text-align: center;
padding: 2rem;
}
}
@media only screen and (max-width: 1200px) {
footer .groups li > a {
font-size: 2vw;
footer .groups li > a {
font-size: 2vw;
}
}
@media only screen and (max-width: 650px) {
footer .footer__content {
flex-direction: column;
.header {
margin: 5rem 0 2.5rem 2.5rem;
.footer__donate {
.btn {
font-size: 1.3rem;
}
}
}
.groups .full {
grid-row: auto;
}
.groups li > a {
font-size: 3.5vmin;
}
.groups {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
li {
border: 0 !important;
}
}
}
}
@media only screen and (max-width: 650px) {
footer .footer__content {
flex-direction: column;
.header{
margin: 5rem 0 2.5rem 2.5rem;
}
.groups .full {
grid-row: auto;
}
.groups li > a {
font-size: 3.5vmin;
}
.groups{
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
li {
border: 0 !important;
}
}
@media only screen and (max-width: 500px) {
footer .groups li > a {
font-size: 4vmin;
}
footer .groups {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: auto;
}
footer .footer__content {
flex-direction: column;
.header{
margin: 2.5rem 5rem;
}
.groups > li {
padding: 2.5rem 5rem;
}
}
@media only screen and (max-width: 500px) {
footer .groups li > a {
font-size: 4vmin;
}
footer .groups{
display: grid;
grid-template-columns: 1fr;
grid-template-rows: auto;
}
footer .footer__content {
flex-direction: column;
.header{
margin: 2.5rem 5rem;
}
.groups > li{
padding: 2.5rem 5rem;
}
}
}
}

View File

@@ -3,18 +3,23 @@ section#infographics{
flex-direction: column;
align-items: stretch;
padding: 0 3rem;
.subsection{
position: relative;
display: flex;
flex-direction: column;
align-items: center;
gap: 3rem;
// gap: 1rem;
padding: 6rem 3rem;
outline: 1px solid rgba(255,255,255,0);
svg{
width: 100%;
//width: clamp(500px, 50vw, 1000px);
}
h1 {
padding-left: 3rem;
margin-bottom: 16px;
}
&:first-child{
&::before {
content: '';
@@ -42,7 +47,7 @@ section#infographics{
}
.image-with-shadow{
--width: clamp(min(400px, 90vw), 110%, 1000px);
--width: clamp(min(200px, 20vw), 75%, 500px);
width: var(--width);
z-index: 1;
.img-shadow{
@@ -53,6 +58,13 @@ section#infographics{
}
}
.container {
margin-top: 3rem;
width: 90vw;
display: flex;
justify-content: center;
}
#big-tech-network-image-block svg{
height: calc((494 / 1282) * var(--width)); // force aspect ratio for iOS
}
@@ -60,4 +72,10 @@ section#infographics{
#embassyos-network-image-block svg{
height: calc((606 / 1282) * var(--width)); // force aspect ratio for iOS
}
}
@media only screen and (max-width: 500px) {
.subsction:first-child {
padding-left: 0;
}
}

View File

@@ -135,7 +135,7 @@ nav {
h1 {
font-family: var(--f-hero);
font-size: min(4.5rem,171px);
font-size: min(3.8rem,171px);
//text-transform: uppercase;
line-height: 1;
font-weight: 400;
@@ -188,7 +188,7 @@ h2 {
p {
font-family: var(--f-accent);
font-weight: 300;
font-size: 1.2rem; // 1.3rem
font-size: 1.3rem;
line-height: 1.4;
color: var(--c-text-primary);
max-width: min(50ch, 73vw);
@@ -202,50 +202,21 @@ p {
a.btn {
position: relative;
padding: 0.4rem 2rem;
transform: rotateX(25deg);
padding: 0.7rem 1.7rem;
color: var(--c-text-bright);
background-color: var(--c-accent);
border: 0;
font-family: var(--f-accent);
font-weight: 500;
text-transform: uppercase;
font-size: 1.6rem;
font-weight: 400;
// text-transform: uppercase;
font-size: 1.3rem;
text-decoration: none;
transform-style: preserve-3d;
box-shadow: 0 1rem 1rem -0.5rem var(--c-shadow-3);
border-radius: 34px;
&:hover{
//transform: rotateX(30deg);
transform: scale(1.03);
&::before {
//box-shadow: inset 0 1rem 1rem -0.5rem var(--c-shadow-1);
}
}
&::before {
content: '';
position: absolute;
background-color: var(--c-text-accent);
display: block;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: -1;
transition: var(--t-simple);
}
&::after {
content: '';
position: absolute;
background-color: var(--c-3d-shadow);
display: block;
left: 0;
right: 0;
height: 1rem;
z-index: -1;
transform: rotateX(90deg) translateY(2px);
box-shadow: inset 0 0.3rem 0.5rem 0rem var(--c-shadow-1);
filter: brightness(120%);
}
&.btn--subtle{

View File

@@ -39,12 +39,15 @@
--c-6: #c2c2c2;
--c-7: #2fdf75;
--c-7: #27b45f;
--c-success: var(--c-7);
--c-8: #ff0000;
--c-8: #e43434;
--c-negative: var(--c-8);
--c-accent: #6866cc;
--c-accent-green: #17bd89;
--c-bitcoin: #f7931a;
--c-lightning: #7b1af8;
@@ -70,6 +73,7 @@
--c-dark-glass: linear-gradient(45deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.25));
--sh-2: 0 3rem 2rem 0rem var(--c-shadow-2);
--sh-1: 0 1rem 2rem 0rem var(--c-shadow-2);
--s-primary: 0.5;
--b-primary: 1px solid var(--c-line-primary);
@@ -174,37 +178,34 @@ a.link-in-svg {
p a {
color: var(--c-text-accent);
//text-decoration: underline;
position: relative;
&::after {
content: "";
&::before {
display: inline-block;
position: absolute;
top: 100%;
width: 100%;
left: 0;
height: 1px;
background: linear-gradient(130deg, #EE6570, #FF4961, #993E4A);
height: 3px;
border-radius: 2px;
background: linear-gradient(
111.3deg,
transparent 9.6%,
var(--c-bkg-accent) 93.6%
);
background: linear-gradient(
111.3deg,
transparent 9.6%,
var(--c-bkg-accent) 50%,
transparent 93.6%
);
top: 100%;
left: 0;
width: 100%;
}
&:hover {
color: var(--c-text-accent);
&::after {
background: linear-gradient(
111.3deg,
var(--c-bkg-accent) 9.6%,
var(--c-bkg-accent) 93.6%
);
}
&::before {
content: '';
position: absolute;
width: 100%;
transform: scaleX(0);
height: 3px;
border-radius: 2px;
bottom: 0;
left: 0;
background-color:linear-gradient(130deg, #EE6570, #FF4961, #993E4A);
transform-origin: bottom right;
transition: transform 0.25s ease-out;
}
&:hover::before {
transform: scaleX(1);
transform-origin: bottom left;
}
}
@@ -368,7 +369,7 @@ nav {
.form-alert {
padding: 1.5rem;
font-size: 1.5rem;
font-weight: 700;
font-weight: 500;
display: none;
&.form-alert--success {
@@ -377,6 +378,10 @@ nav {
&.form-alert--error {
background-color: var(--c-negative);
a {
font-weight: 700;
}
}
&.form-alert--visible {

View File

@@ -22,6 +22,7 @@
body {
margin: 0;
overflow-x: hidden;
}
/**

View File

@@ -1,13 +1,13 @@
section#pitch {
display: flex;
flex-direction: column;
align-items: center;
align-items: left;
justify-content: center;
margin-bottom: 6rem;
gap: 3rem;
margin-bottom: 4rem;
// gap: 1rem;
h1 {
margin: 0;
margin-bottom: 16px;
display: inline-block;
max-width: min(16ch,64vw);
}

View File

@@ -3,54 +3,50 @@ section#powered-by {
flex-direction: column;
align-items: center;
padding: 0rem 6rem 0 6rem;
gap: 3rem;
h2{
margin: 0;
text-align: center;
}
.cols{
margin-top: 3rem;
display: flex;
align-items: center;
justify-content: center;
gap:2rem;
}
.wrapper{
border: var(--b-primary);
max-width: 35ch;
.content {
padding: 1rem;
h3{
margin: 0;
font-family: 'Tusker Grotesk 5500';
font-weight: 100;
font-size: 3.5rem;
line-height: 1.1em;
text-transform: uppercase;
}
}
.footer{
padding: 1rem;
background: var(--c-spacer);
display: flex;
justify-content: center;
border-top: var(--b-primary);
// gap: 1rem;
a{
padding: 0.4rem 2rem;
background-color: var(--c-text-accent);
color: var(--c-text-bright);
border-color: var(--c-3d-shadow);
border-width: 1px 1px 15px 1px;
border-style: solid;
font-family: 'Tusker Grotesk 5500';
font-weight: 100;
text-transform: uppercase;
font-size: 2rem;
text-decoration: none;
}
}
h1 {
margin-bottom: 16px;
display: inline-block;
max-width: min(16ch,64vw);
}
// .wrapper{
// border: var(--b-primary);
// max-width: 35ch;
// .content {
// padding: 1rem;
// h3{
// margin: 0;
// font-family: 'Tusker Grotesk 5500';
// font-weight: 100;
// font-size: 3.5rem;
// line-height: 1.1em;
// text-transform: uppercase;
// }
// }
// .footer{
// padding: 1rem;
// background: var(--c-spacer);
// display: flex;
// justify-content: center;
// border-top: var(--b-primary);
// a{
// padding: 0.4rem 2rem;
// background-color: var(--c-text-accent);
// color: var(--c-text-bright);
// border-color: var(--c-3d-shadow);
// border-width: 1px 1px 15px 1px;
// border-style: solid;
// font-family: 'Tusker Grotesk 5500';
// font-weight: 100;
// text-transform: uppercase;
// font-size: 2rem;
// text-decoration: none;
// }
// }
// }
svg {
--width: min(45rem, (100vw - 12rem));
width: --width;
@@ -100,4 +96,16 @@ section#powered-by {
svg|a:link,
svg|a:visited {
cursor: pointer;
}
.container {
width: 70vw;
display: flex;
justify-content: center;
}
@media only screen and (max-width: 500px) {
.container {
width: 100vw;
}
}

View File

@@ -2,15 +2,13 @@ section#support {
display: flex;
flex-direction: column;
align-items: center;
padding: 6rem;
//margin-bottom: 6rem;
gap: 3rem;
//transform: translate(0px,0px);
padding: 5rem;
gap: 1rem;
.cols {
display: flex;
align-items: center;
justify-content: center;
gap: 6rem;
gap: 3rem;
.col {
max-width: clamp(min(400px, 90vw), 20rem, 1000px);
}
@@ -20,22 +18,24 @@ section#support {
max-width: 100%;
transform: rotateZ(5deg);
}
// flip columns when stacking for small screens
.image-with-shadow {
max-width: 8rem;
}
.img-shadow {
top: 1rem;
}
.support__content {
padding-bottom: 0.5rem;
}
@media only screen and (max-width: 1200px) {
.cols{
flex-direction: column;
.col:nth-child(1){
order: 2;
}
.col:nth-child(2){
order: 1;
}
.support__content {
padding-top: 1rem;
}
}
@media only screen and (max-width: 500px) {
section#support cols{
gap: 3rem;
gap: 2rem;
}
section#support img{
max-height: 17rem;

View File

@@ -1,4 +0,0 @@
{
"layout": "post",
"tags": "posts"
}

View File

@@ -1,5 +0,0 @@
---
title: bloop
---
[crosspost](https://github.com/matt-fff/ghost-crosspost-medium)

View File

@@ -4,23 +4,22 @@ layout: layouts/peripheral.njk
---
<section id="hero">
<div id="hero-image" class="image-with-shadow">
<img src="/assets/images/contact-hero.png" alt="contact page hero: @ symbol emerging from an embassy" title="contact page hero: @ symbol emerging from an embassy"/>
<img class="img-shadow" src="/assets/images/contact-hero.png" alt=""/>
</div>
<div id="logo">
<h1>
<span>Contact Us</span>
</h1>
</div>
<div id="hero-image" class="image-with-shadow">
<img src="/assets/images/contact-hero.png" alt="contact page hero: @ symbol emerging from an embassy" title="contact page hero: @ symbol emerging from an embassy"/>
<img class="img-shadow" src="/assets/images/contact-hero.png" alt=""/>
</div>
<div id="logo">
<h1>
<span>Contact Us</span>
</h1>
</div>
</section>
<section id="contact">
<p class="p--standalone center">Reach out anytime to<br/>
{% include 'components/_encoded-email.njk' %},</br>
or find us on social media.</p>
{% include "components/landing/_social-media.njk" %}
<p class="p--standalone center">Reach out anytime to<br/>
{% include 'components/_encoded-email.njk' %},</br>
or find us on social media.
</p>
{% include "components/landing/_social-media.njk" %}
</section>

View File

@@ -4,13 +4,13 @@ layout: layouts/peripheral.njk
---
<section id="hero">
<div id="hero-image" class="image-with-shadow">
<img src="/assets/images/dev-hero.png" alt="dev page hero: html tag emerging from an embassy" title="dev page hero: html tag emerging from an embassy"/>
<img class="img-shadow" src="/assets/images/dev-hero.png" alt=""/>
</div>
<div id="logo">
<h1>
<span>Developers</span>
</h1>
</div>
<div id="hero-image" class="image-with-shadow">
<img src="/assets/images/dev-hero.png" alt="dev page hero: html tag emerging from an embassy" title="dev page hero: html tag emerging from an embassy"/>
<img class="img-shadow" src="/assets/images/dev-hero.png" alt=""/>
</div>
<div id="logo">
<h1>
<span>Developers</span>
</h1>
</div>
</section>

View File

@@ -19,26 +19,26 @@ layout: layouts/base.njk
{% include "svgs/lines/products-to-info.svg" %}
</div>
{% include "components/landing/powered-by.njk" %}
<div class="line" id="be-to-powered">
{% include "svgs/lines/be-to-powered.svg" %}
</div>
{% include "components/landing/infographics.njk" %}
<div class="line" id="powered-to-support">
{% include "svgs/lines/powered-to-support.svg" %}
</div>
{% include "components/landing/be-your-own.njk" %}
{% include "components/landing/bitcoin.njk" %}
<div class="line" id="bitcoin-to-be">
{% include "svgs/lines/bitcoin-to-be.svg" %}
</div>
{% include "components/landing/be-your-own.njk" %}
<div class="line" id="be-to-powered">
{% include "svgs/lines/be-to-powered.svg" %}
</div>
{% include "components/landing/powered-by.njk" %}
<div class="line" id="powered-to-support">
{% include "svgs/lines/powered-to-support.svg" %}
</div>
{% include "components/landing/support.njk" %}

47
src/license.md Normal file
View File

@@ -0,0 +1,47 @@
---
title: License
layout: components/license
---
## START9 NON-COMMERCIAL LICENSE v1
Version 1, 22 September 2022
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
### 1.Definitions
"License" means version 1 of the Start9 Non-Commercial License.
"Licensor" means the Start9 Labs, Inc, or its successor(s) in interest, or a future assignee of the copyright.
"You" (or "Your") means an individual or organization exercising permissions granted by this License.
"Source Code" for a work means the preferred form of the work for making modifications to it.
"Object Code" means any non-source form of a work, including the machine-language output by a compiler or assembler.
"Work" means any work of authorship, whether in Source or Object form, made available under this License.
"Derivative Work" means any work, whether in Source or Object form, that is based on (or derived from) the Work.
"Distribute" means to convey or to publish and generally has the same meaning here as under U.S. Copyright law.
"Sell" means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration (including, without limitation, fees for hosting, consulting, or support services), a product or service whose value derives, entirely or substantially, from the functionality of the Work or Derivative Work.
### 2. Grant of Rights
Subject to the terms of this license, the Licensor grants you, the licensee, a non-exclusive, worldwide, royalty-free copyright license to access, audit, copy, modify, compile, run, test, distribute, or otherwise use the Software.
### 3. Limitations
1. The grant of rights under the License does NOT include, and the License does NOT grant You the right to Sell the Work or Derivative Work.
2. If you Distribute the Work or Derivative Work, you expressly undertake not to remove or modify, in any manner, the copyright notices attached to the Work or displayed in any output of the Work when run, and to reproduce these notices, in an identical manner, in any distributed copies of the Work or Derivative Work together with a copy of this License.
3. If you Distribute a Derivative Work, it must carry prominent notices stating that it has been modified from the Work, providing a relevant date.
### 4. Contributions
You hereby grant to Licensor a perpetual, irrevocable, worldwide, non-exclusive, royalty-free license to use and exploit any Derivative Work of which you are the author.
### 5. Disclaimer
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. LICENSOR HAS NO OBLIGATION TO SUPPORT RECIPIENTS OF THE SOFTWARE.

View File

@@ -4,75 +4,62 @@ layout: layouts/peripheral.njk
---
<section id="hero">
<div id="hero-image" class="image-with-shadow">
<img src="/assets/images/news-hero.png" alt="news page hero: tv emerging from an embassy" title="news page hero: tv emerging from an embassy"/>
<img class="img-shadow" src="/assets/images/news-hero.png" alt=""/>
</div>
<div id="logo">
<h1>
<span>Podcasts</span>
</h1>
</div>
<div id="hero-image" class="image-with-shadow">
<img src="/assets/images/news-hero.png" alt="news page hero: tv emerging from an embassy" title="news page hero: tv emerging from an embassy"/>
<img class="img-shadow" src="/assets/images/news-hero.png" alt=""/>
</div>
<div id="logo">
<h1>
<span>Podcasts</span>
</h1>
</div>
</section>
<section id="news">
{# TWITTER / MEDIUM FEED #}
{# <ul class="news">
{% for post in news %}
<li class="post">
<a href="{{ post.guid }}">
{% if post.creator %}
<span class="creator">{{ post.creator }}</span>
{% endif %}
{# TWITTER / MEDIUM FEED #}
{# <ul class="news">
{% for post in news %}
<li class="post">
<a href="{{ post.guid }}">
{% if post.creator %}
<span class="creator">{{ post.creator }}</span>
{% endif %}
{% if post.creator.includes('@') %}
<p class="twitter-text">{{ post.title }}</p>
{% else %}
<h3>{{ post.title }}</h3>
{% endif %}
<h4>{{ post.pubDate }}</h4>
{% if post.description %}
<p>{{ post.description }}</p>
{% endif %}
</a>
</li>
{% endfor %}
</ul> #}
<ul class="podcasts">
{% for item in podcasts %}
<li class="podcast">
<a href="{{ item.link }}">
{% if item.anchor %}
<span class="creator">{{ item.anchor }}</span>
{% endif %}
{% if item.anchor %}
<img src="{{ item.image }}" alt=""/>
{% endif %}
{% if item.title %}
<h3>{{ item.title }}</h3>
{% endif %}
{% if item.date %}
<time datetime="{{ item.date }}">{{ item.date }}</time>
{% endif %}
{% if item.description %}
<p>{{ item.description }}</p>
{% endif %}
</a>
</li>
{% endfor %}
</ul>
</section>
{# <div id="hacker-list">
<ul class="list">
<li>
<h3 class="name">Jonny</h3>
<p class="city">Stockholm</p>
{% if post.creator.includes('@') %}
<p class="twitter-text">{{ post.title }}</p>
{% else %}
<h3>{{ post.title }}</h3>
{% endif %}
<h4>{{ post.pubDate }}</h4>
{% if post.description %}
<p>{{ post.description }}</p>
{% endif %}
</a>
</li>
<li>
<h3 class="name">Jonas</h3>
<p class="city">Berlin</p>
{% endfor %}
</ul> #}
<ul class="podcasts">
{% for item in podcasts %}
<li class="podcast">
<a href="{{ item.link }}" rel="noopener noreferrer" target="_blank">
{% if item.anchor %}
<span class="creator">{{ item.anchor }}</span>
{% endif %}
{% if item.anchor %}
<img src="{{ item.image }}" alt=""/>
{% endif %}
{% if item.title %}
<h3>{{ item.title }}</h3>
{% endif %}
{% if item.date %}
<time datetime="{{ item.date }}">{{ item.date }}</time>
{% endif %}
{% if item.description %}
<p>{{ item.description }}</p>
{% endif %}
</a>
</li>
{% endfor %}
</ul>
</div> #}
</section>

View File

@@ -4,50 +4,42 @@ layout: layouts/peripheral.njk
---
<section id="hero">
<div id="hero-image" class="image-with-shadow">
<img
src="/assets/images/privacy-hero.png"
alt="about page hero image: a robot emerging from the embasssy and wearing a mask"
title="about page hero image: a robot emerging from the embasssy and wearing a mask"/>
<img class="img-shadow" src="/assets/images/privacy-hero.png" alt=""/>
</div>
<div id="logo">
<h1>
<span>Privacy</span>
</h1>
</div>
<div id="hero-image" class="image-with-shadow">
<img
src="/assets/images/privacy-hero.png"
alt="privacy page hero image: a robot emerging from the embasssy and wearing a mask"
title="privacy page hero image: a robot emerging from the embasssy and wearing a mask"/>
<img class="img-shadow" src="/assets/images/privacy-hero.png" alt=""/>
</div>
<div id="logo">
<h1><span>Privacy</span></h1>
</div>
</section>
<section id="principles" class="section--no-image">
<h2>General Principles</h2>
<p>
At Start9 Labs, Inc (“Start9”, “we”, “us”, “our”), we believe that privacy is a basic human right and have designed our
devices and software systems (“Products”) to uphold this principle.</p>
<p>
<strong>Start9 does not collect</strong>, does not want to collect, and has no reasonable means of collecting, <strong>your personal information
from the usage of our Products</strong>.
</p>
<h2>General Principles</h2>
<p>
At Start9 Labs, Inc (“Start9”, “we”, “us”, “our”), we believe that privacy is a basic human right and have designed our devices and software systems (“Products”) to uphold this principle.</p>
<p>
<strong>Start9 does not collect</strong>, does not want to collect, and has no reasonable means of collecting, <strong>your personal information from the usage of our Products</strong>.
</p>
</section>
<section id="provisions" class="section--no-image">
<h2>Voluntary Provisions</h2>
<p>When you visit start9.com or our other public websites, our visitors (“customers”, “you”, “your”) may voluntarily
provide us with certain personal information, such as your name or email address, for the purpose of receiving updates
about our Products, or to receive a response to an inquiry.
<strong>
We use this information internally and do not share it with
third parties.
</strong>
You will only receive communications from us, email or otherwise, if you have explicitly opted in to such
communications, and you may opt out at any time.</p>
<h2>Voluntary Provisions</h2>
<p>
When you visit start9.com or our other public websites, our visitors (“customers”, “you”, “your”) may voluntarily provide us with certain personal information, such as your name or email address, for the purpose of receiving updates about our Products, or to receive a response to an inquiry.
<strong>
We use this information internally and do not share it withthird parties.
</strong>
You will only receive communications from us, email or otherwise, if you have explicitly opted in to such communications, and you may opt out at any time.
</p>
</section>
<section id="purchases" class="section--no-image">
<h2>Online Purchases</h2>
<p>When you purchase Products from our website, we necessarily collect certain personal information, such as name,
email, shipping address, and payment details, in order to facilitate the transaction and conduct shipment.
<strong>
We do not use
the information for any other purpose.
</strong>
Start9 relies on third party payment processors and shipping partners to conduct transactions, and have no control over
their collection or usage of your information.</p>
<h2>Online Purchases</h2>
<p>
When you purchase Products from our website, we necessarily collect certain personal information, such as name, email, shipping address, and payment details, in order to facilitate the transaction and conduct shipment.
<strong>
We do not use the information for any other purpose.
</strong>
Start9 relies on third party payment processors and shipping partners to conduct transactions, and have no control over their collection or usage of your information.
</p>
</section>

7
src/robots.njk Normal file
View File

@@ -0,0 +1,7 @@
---
eleventyExcludeFromCollections: true
permalink: /robots.txt
---
User-agent: *
Allow: /
Sitemap: {{ site.url }}/sitemap.xml

15
src/sitemap.njk Normal file
View File

@@ -0,0 +1,15 @@
---
eleventyExcludeFromCollections: true
permalink: /sitemap.xml
---
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for item in collections.all %}
<url>
<loc>{{ site.url }}{{ item.url }}</loc>
<lastmod>{{ item.date | date("yyyy-MM-dd")}}</lastmod>
<changefreq>{{ item.data.sitemapChangefreq | default("monthly") }}</changefreq>
<priority>{{ item.data.sitemapPriority | default(0.8) }}</priority>
</url>
{% endfor %}
</urlset>