home, about. specs page complete

This commit is contained in:
liyunze 2023-06-17 16:24:00 +08:00
parent 558148e32d
commit 88e33416d6
11 changed files with 1293 additions and 81 deletions

View file

@ -1,4 +1,8 @@
import { defineConfig } from 'astro/config'; import { defineConfig } from 'astro/config';
import tailwind from "@astrojs/tailwind";
// https://astro.build/config // https://astro.build/config
export default defineConfig({}); export default defineConfig({
integrations: [tailwind()]
});

494
package-lock.json generated
View file

@ -7,7 +7,20 @@
"": { "": {
"version": "0.0.1", "version": "0.0.1",
"dependencies": { "dependencies": {
"astro": "^2.5.6" "@astrojs/tailwind": "^3.1.3",
"astro": "^2.6.2",
"tailwindcss": "^3.3.2"
}
},
"node_modules/@alloc/quick-lru": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
"integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/@ampproject/remapping": { "node_modules/@ampproject/remapping": {
@ -94,6 +107,21 @@
"node": ">=16.12.0" "node": ">=16.12.0"
} }
}, },
"node_modules/@astrojs/tailwind": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-3.1.3.tgz",
"integrity": "sha512-10S1omrv5K5HRVAZ0fBgN5vQykn2HRL332LAVFyBASMn1Ff6gDfSK+CPUeUu94eZUOEaPnECLK8EHAqZ8iY9CA==",
"dependencies": {
"@proload/core": "^0.3.3",
"autoprefixer": "^10.4.14",
"postcss": "^8.4.23",
"postcss-load-config": "^4.0.1"
},
"peerDependencies": {
"astro": "^2.5.0",
"tailwindcss": "^3.0.24"
}
},
"node_modules/@astrojs/telemetry": { "node_modules/@astrojs/telemetry": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-2.1.1.tgz", "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-2.1.1.tgz",
@ -911,6 +939,15 @@
"url": "https://opencollective.com/unts" "url": "https://opencollective.com/unts"
} }
}, },
"node_modules/@proload/core": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@proload/core/-/core-0.3.3.tgz",
"integrity": "sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ==",
"dependencies": {
"deepmerge": "^4.2.2",
"escalade": "^3.1.1"
}
},
"node_modules/@types/babel__core": { "node_modules/@types/babel__core": {
"version": "7.20.1", "version": "7.20.1",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz",
@ -1115,6 +1152,11 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/any-promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
"integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
},
"node_modules/anymatch": { "node_modules/anymatch": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@ -1127,6 +1169,11 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/arg": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
},
"node_modules/argparse": { "node_modules/argparse": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@ -1220,6 +1267,38 @@
} }
} }
}, },
"node_modules/autoprefixer": {
"version": "10.4.14",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
"integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
}
],
"dependencies": {
"browserslist": "^4.21.5",
"caniuse-lite": "^1.0.30001464",
"fraction.js": "^4.2.0",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
"postcss-value-parser": "^4.2.0"
},
"bin": {
"autoprefixer": "bin/autoprefixer"
},
"engines": {
"node": "^10 || ^12 || >=14"
},
"peerDependencies": {
"postcss": "^8.1.0"
}
},
"node_modules/bail": { "node_modules/bail": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
@ -1229,6 +1308,11 @@
"url": "https://github.com/sponsors/wooorm" "url": "https://github.com/sponsors/wooorm"
} }
}, },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/base64-js": { "node_modules/base64-js": {
"version": "1.5.1", "version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@ -1370,6 +1454,15 @@
"node": ">= 5.10.0" "node": ">= 5.10.0"
} }
}, },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/braces": { "node_modules/braces": {
"version": "3.0.2", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
@ -1471,6 +1564,14 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/camelcase-css": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
"engines": {
"node": ">= 6"
}
},
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001497", "version": "1.0.30001497",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001497.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001497.tgz",
@ -1645,11 +1746,24 @@
"url": "https://github.com/sponsors/wooorm" "url": "https://github.com/sponsors/wooorm"
} }
}, },
"node_modules/commander": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
"engines": {
"node": ">= 6"
}
},
"node_modules/common-ancestor-path": { "node_modules/common-ancestor-path": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
"integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==" "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="
}, },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"node_modules/convert-source-map": { "node_modules/convert-source-map": {
"version": "1.9.0", "version": "1.9.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
@ -1676,6 +1790,17 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"bin": {
"cssesc": "bin/cssesc"
},
"engines": {
"node": ">=4"
}
},
"node_modules/debug": { "node_modules/debug": {
"version": "4.3.4", "version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@ -1704,6 +1829,14 @@
"url": "https://github.com/sponsors/wooorm" "url": "https://github.com/sponsors/wooorm"
} }
}, },
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/deepmerge-ts": { "node_modules/deepmerge-ts": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.3.0.tgz", "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.3.0.tgz",
@ -1809,6 +1942,11 @@
"resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz",
"integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==" "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg=="
}, },
"node_modules/didyoumean": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
},
"node_modules/diff": { "node_modules/diff": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
@ -2032,6 +2170,23 @@
"pkg-dir": "^4.2.0" "pkg-dir": "^4.2.0"
} }
}, },
"node_modules/fraction.js": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
"engines": {
"node": "*"
},
"funding": {
"type": "patreon",
"url": "https://www.patreon.com/infusion"
}
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"node_modules/fsevents": { "node_modules/fsevents": {
"version": "2.3.2", "version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
@ -2074,6 +2229,25 @@
"resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
"integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="
}, },
"node_modules/glob": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/glob-parent": { "node_modules/glob-parent": {
"version": "5.1.2", "version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@ -2328,6 +2502,15 @@
"url": "https://github.com/sponsors/wooorm" "url": "https://github.com/sponsors/wooorm"
} }
}, },
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"node_modules/inherits": { "node_modules/inherits": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
@ -2525,6 +2708,14 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
}, },
"node_modules/jiti": {
"version": "1.18.2",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz",
"integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
"bin": {
"jiti": "bin/jiti.js"
}
},
"node_modules/js-tokens": { "node_modules/js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@ -2584,6 +2775,19 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/lilconfig": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
"engines": {
"node": ">=10"
}
},
"node_modules/lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
"node_modules/load-yaml-file": { "node_modules/load-yaml-file": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz",
@ -3499,6 +3703,17 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/mri": { "node_modules/mri": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@ -3512,6 +3727,16 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}, },
"node_modules/mz": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
"integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
"dependencies": {
"any-promise": "^1.0.0",
"object-assign": "^4.0.1",
"thenify-all": "^1.0.0"
}
},
"node_modules/nanoid": { "node_modules/nanoid": {
"version": "3.3.6", "version": "3.3.6",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
@ -3554,6 +3779,14 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/normalize-range": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
"integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/npm-run-path": { "node_modules/npm-run-path": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
@ -3579,6 +3812,30 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object-hash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
"integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
"engines": {
"node": ">= 6"
}
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dependencies": {
"wrappy": "1"
}
},
"node_modules/onetime": { "node_modules/onetime": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
@ -3731,6 +3988,14 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/path-key": { "node_modules/path-key": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@ -3773,6 +4038,14 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/pirates": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
"integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
"engines": {
"node": ">= 6"
}
},
"node_modules/pkg-dir": { "node_modules/pkg-dir": {
"version": "4.2.0", "version": "4.2.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@ -3859,6 +4132,103 @@
"node": "^10 || ^12 || >=14" "node": "^10 || ^12 || >=14"
} }
}, },
"node_modules/postcss-import": {
"version": "15.1.0",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
"dependencies": {
"postcss-value-parser": "^4.0.0",
"read-cache": "^1.0.0",
"resolve": "^1.1.7"
},
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
"postcss": "^8.0.0"
}
},
"node_modules/postcss-js": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
"integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
"dependencies": {
"camelcase-css": "^2.0.1"
},
"engines": {
"node": "^12 || ^14 || >= 16"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
"peerDependencies": {
"postcss": "^8.4.21"
}
},
"node_modules/postcss-load-config": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz",
"integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==",
"dependencies": {
"lilconfig": "^2.0.5",
"yaml": "^2.1.1"
},
"engines": {
"node": ">= 14"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
"peerDependencies": {
"postcss": ">=8.0.9",
"ts-node": ">=9.0.0"
},
"peerDependenciesMeta": {
"postcss": {
"optional": true
},
"ts-node": {
"optional": true
}
}
},
"node_modules/postcss-nested": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
"integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
"dependencies": {
"postcss-selector-parser": "^6.0.11"
},
"engines": {
"node": ">=12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
"peerDependencies": {
"postcss": "^8.2.14"
}
},
"node_modules/postcss-selector-parser": {
"version": "6.0.13",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
"integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
},
"engines": {
"node": ">=4"
}
},
"node_modules/postcss-value-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
"node_modules/preferred-pm": { "node_modules/preferred-pm": {
"version": "3.0.3", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.0.3.tgz", "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.0.3.tgz",
@ -3958,6 +4328,22 @@
} }
] ]
}, },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
"dependencies": {
"pify": "^2.3.0"
}
},
"node_modules/read-cache/node_modules/pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/readable-stream": { "node_modules/readable-stream": {
"version": "3.6.2", "version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
@ -4619,6 +5005,27 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/sucrase": {
"version": "3.32.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz",
"integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.2",
"commander": "^4.0.0",
"glob": "7.1.6",
"lines-and-columns": "^1.1.6",
"mz": "^2.7.0",
"pirates": "^4.0.1",
"ts-interface-checker": "^0.1.9"
},
"bin": {
"sucrase": "bin/sucrase",
"sucrase-node": "bin/sucrase-node"
},
"engines": {
"node": ">=8"
}
},
"node_modules/suf-log": { "node_modules/suf-log": {
"version": "2.5.3", "version": "2.5.3",
"resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz", "resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz",
@ -4672,6 +5079,73 @@
"url": "https://opencollective.com/unts" "url": "https://opencollective.com/unts"
} }
}, },
"node_modules/tailwindcss": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz",
"integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==",
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
"arg": "^5.0.2",
"chokidar": "^3.5.3",
"didyoumean": "^1.2.2",
"dlv": "^1.1.3",
"fast-glob": "^3.2.12",
"glob-parent": "^6.0.2",
"is-glob": "^4.0.3",
"jiti": "^1.18.2",
"lilconfig": "^2.1.0",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
"object-hash": "^3.0.0",
"picocolors": "^1.0.0",
"postcss": "^8.4.23",
"postcss-import": "^15.1.0",
"postcss-js": "^4.0.1",
"postcss-load-config": "^4.0.1",
"postcss-nested": "^6.0.1",
"postcss-selector-parser": "^6.0.11",
"postcss-value-parser": "^4.2.0",
"resolve": "^1.22.2",
"sucrase": "^3.32.0"
},
"bin": {
"tailwind": "lib/cli.js",
"tailwindcss": "lib/cli.js"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/tailwindcss/node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dependencies": {
"is-glob": "^4.0.3"
},
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/thenify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
"integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
"dependencies": {
"any-promise": "^1.0.0"
}
},
"node_modules/thenify-all": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
"integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
"dependencies": {
"thenify": ">= 3.1.0 < 4"
},
"engines": {
"node": ">=0.8"
}
},
"node_modules/titleize": { "node_modules/titleize": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz",
@ -4720,6 +5194,11 @@
"url": "https://github.com/sponsors/wooorm" "url": "https://github.com/sponsors/wooorm"
} }
}, },
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
},
"node_modules/tsconfig-resolver": { "node_modules/tsconfig-resolver": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/tsconfig-resolver/-/tsconfig-resolver-3.0.1.tgz", "resolved": "https://registry.npmjs.org/tsconfig-resolver/-/tsconfig-resolver-3.0.1.tgz",
@ -5237,11 +5716,24 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1" "url": "https://github.com/chalk/ansi-styles?sponsor=1"
} }
}, },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/yallist": { "node_modules/yallist": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
}, },
"node_modules/yaml": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz",
"integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==",
"engines": {
"node": ">= 14"
}
},
"node_modules/yargs-parser": { "node_modules/yargs-parser": {
"version": "21.1.1", "version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",

View file

@ -10,6 +10,8 @@
"astro": "astro" "astro": "astro"
}, },
"dependencies": { "dependencies": {
"astro": "^2.5.6" "@astrojs/tailwind": "^3.1.3",
"astro": "^2.6.2",
"tailwindcss": "^3.3.2"
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

View file

@ -10,27 +10,103 @@ const { title } = Astro.props;
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="description" content="Astro description"> <meta name="description" content="Astro description" />
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" /> <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500&display=swap"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css2?family=Fredoka:wght@300;500;700&display=swap"
rel="stylesheet"
/>
<meta name="generator" content={Astro.generator} /> <meta name="generator" content={Astro.generator} />
<title>{title}</title> <title>{title}</title>
</head> </head>
<body> <body>
<nav
class="fixed w-full flex flex-row items-center justify-center pl-4 pr-8 py-2 bg-gray-800 shadow-md shadow-gray-900 h-12"
>
<ul class="flex flex-row justify-start items-center list-none">
<a href="/">
<li
class="text-lg text-gray-100 px-3 py-1 mx-3 hover:text-gray-600 hover:bg-gray-100 rounded transition-colors duration-500 ease-in-out"
>
Home
</li>
</a>
<a href="/about">
<li
class="text-lg text-gray-100 px-3 py-1 mx-3 hover:text-gray-600 hover:bg-gray-100 rounded transition-colors duration-500 ease-in-out"
>
About
</li>
</a>
<a href="/specs">
<li
class="text-lg text-gray-100 px-3 py-1 mx-3 hover:text-gray-600 hover:bg-gray-100 rounded transition-colors duration-500 ease-in-out"
>
Specs
</li>
</a>
<a href="/overlays">
<li
class="text-lg text-gray-100 px-3 py-1 mx-3 hover:text-gray-600 hover:bg-gray-100 rounded transition-colors duration-500 ease-in-out"
>
Overlays
</li>
</a>
</ul>
</nav>
<slot /> <slot />
</body> </body>
</html> </html>
<style is:global> <style is:global>
:root { * {
--accent: 124, 58, 237; box-sizing: border-box;
--accent-gradient: linear-gradient(45deg, rgb(var(--accent)), #da62c4 30%, white 60%); margin: 0;
padding: 0;
} }
html { html {
font-family: system-ui, sans-serif; font-family: "Montserrat", system-ui, sans-serif;
background-color: #F6F6F6; background-color: #29233f;
} }
html,
body {
min-height: 100%;
}
body {
height: 100vh;
font-family: "Montserrat", system-ui, sans-serif;
}
code { code {
font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, font-family: Menlo, Monaco, Lucida Console, Liberation Mono,
Bitstream Vera Sans Mono, Courier New, monospace; DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New,
monospace;
}
nav {
font-family: "Montserrat", system-ui, sans-serif;
font-weight: 500;
}
nav ul a {
text-decoration: none;
}
a.preview {
text-decoration: none;
} }
</style> </style>

117
src/layouts/Markdown.astro Normal file
View file

@ -0,0 +1,117 @@
---
export interface Props {
title: string;
}
const { title } = Astro.props;
---
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="description" content="Astro description" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500&display=swap"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css2?family=Fredoka:wght@300;500;700&display=swap"
rel="stylesheet"
/>
<meta name="generator" content={Astro.generator} />
<title>{title}</title>
</head>
<body>
<nav
class="fixed w-full flex flex-row items-center justify-center pl-4 pr-8 py-2 bg-gray-800 shadow-md shadow-gray-900 h-12"
>
<ul class="flex flex-row justify-start items-center list-none">
<a href="/">
<li
class="text-lg text-gray-100 px-3 py-1 mx-3 hover:text-gray-600 hover:bg-gray-100 rounded transition-colors duration-500 ease-in-out"
>
Home
</li>
</a>
<a href="/about">
<li
class="text-lg text-gray-100 px-3 py-1 mx-3 hover:text-gray-600 hover:bg-gray-100 rounded transition-colors duration-500 ease-in-out"
>
About
</li>
</a>
<a href="/specs">
<li
class="text-lg text-gray-100 px-3 py-1 mx-3 hover:text-gray-600 hover:bg-gray-100 rounded transition-colors duration-500 ease-in-out"
>
Specs
</li>
</a>
<a href="/overlays">
<li
class="text-lg text-gray-100 px-3 py-1 mx-3 hover:text-gray-600 hover:bg-gray-100 rounded transition-colors duration-500 ease-in-out"
>
Overlays
</li>
</a>
</ul>
</nav>
<div class="pt-12 w-full flex flex-col justify-center items-center">
<div class="w-5/6 md:w-3/4 lg:w-2/3 py-10">
<slot />
</div>
</div>
</body>
</html>
<style is:global>
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
font-family: "Montserrat", system-ui, sans-serif;
color: #fff;
background-color: #29233f;
}
html,
body {
min-height: 100%;
}
body {
height: 100vh;
font-family: "Montserrat", system-ui, sans-serif;
}
code {
font-family: Menlo, Monaco, Lucida Console, Liberation Mono,
DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New,
monospace;
}
nav {
font-family: "Montserrat", system-ui, sans-serif;
font-weight: 500;
}
nav ul a {
text-decoration: none;
}
summary {
@apply font-bold text-xl;
}
</style>

81
src/pages/about.astro Normal file
View file

@ -0,0 +1,81 @@
---
import Layout from "../layouts/Layout.astro";
// plans:
// - what is coworking
// - how the overlays benefit
// - why did I open source
---
<Layout title="About">
<div class="h-full flex flex-col text-white">
<div class="w-full h-full flex flex-col justify-center items-center">
<div
class="w-4/5 lg:w-2/3 flex flex-col justify-center items-center text-center"
>
<img
src="/assets/circle_logo.webp"
alt="ryan logo"
width="200"
class="mb-10"
/>
<h1 class="text-5xl font-bold">About</h1>
<p class="mt-5 text-lg mb-5">
Hello, I'm <span class="font-bold">Ryan</span>, a
computer science student based in Malaysia. The
objective of this website is to offer valuable
resources to aspiring streamers, helping them enhance
their streaming experience!
</p>
<p>
If you want to learn more about me, check out my <a
href="https://ryanpython.me"
target="_blank"
class="underline underline-offset-2 transition-colors duration-500 hover:text-blue-500"
>website</a
>!
</p>
</div>
</div>
</div>
<div class="w-full h-full flex flex-col text-white">
<div
class="w-full h-1/3 bg-gray-900 mt-12 flex flex-col justify-center items-center text-center"
>
<h2 class="font-bold text-2xl mb-5">
What are Coworking & Study streams?
</h2>
<p class="w-4/5 lg:w-1/2">
Coworking and study streams are a type of stream where
people work or study together. It's a great way to stay
motivated and productive, especially if you're working!
</p>
</div>
<div
class="w-full h-1/3 flex flex-col justify-center items-center text-center"
>
<h2 class="font-bold text-2xl mb-5">
How can this guide benefit me?
</h2>
<p class="w-4/5 lg:w-1/2">
This guide has been created to help out new (and old)
coworking streamers.
</p>
</div>
<div
class="w-full h-1/3 bg-gray-900 flex flex-col justify-center items-center text-center"
>
<h2 class="font-bold text-2xl mb-5">
Why did you and other people make these resources open
source?
</h2>
<p class="w-4/5 lg:w-1/2">
Personally, I'm a huge fan of open source software, and I
believe that open source is the future. I want to contribute
to the open source community, and I hope that these overlays
will help you get started with your own coworking or study
stream!
</p>
</div>
</div>
</Layout>

View file

@ -1,81 +1,405 @@
--- ---
import Layout from '../layouts/Layout.astro'; import Layout from "../layouts/Layout.astro";
import Card from '../components/Card.astro';
--- ---
<Layout title="Welcome to Astro."> <Layout title="Get started with Coworking streams!">
<main> <div
<h1>Welcome to <span class="text-gradient">Astro</span></h1> class="flex flex-col lg:flex-row justify-center items-center h-full text-gray-100 sm:flex-col"
<p class="instructions"> >
To get started, open the directory <code>src/pages</code> in your project.<br /> <div
<strong>Code Challenge:</strong> Tweak the "Welcome to Astro" message above. class="w-full lg:w-2/3 flex flex-col justify-center items-center mt-40 lg:mt-0 mb-10 lg:mb-0"
</p> >
<ul role="list" class="link-card-grid"> <div
<Card class="flex flex-col justify-center items-center lg:items-start text-center lg:text-left"
href="https://docs.astro.build/" >
title="Documentation" <p class="text-xl mb-1">How to get started with</p>
body="Learn how Astro works and explore the official API docs." <h1 class="text-2xl lg:text-4xl font-bold">
/> Coworking Streams
<Card </h1>
href="https://astro.build/integrations/" <p class="text-lg lg:text-xl mt-2">
title="Integrations" For coworking & study streamers on Twitch
body="Supercharge your project with new frameworks and libraries." </p>
/> </div>
<Card </div>
href="https://astro.build/themes/" <div
title="Themes" class="w-full lg:w-1/3 h-full flex flex-col justify-center items-center"
body="Explore a galaxy of community-built starter themes." >
/> <a
<Card href="/overlays"
href="https://astro.build/chat/" class="preview w-full flex items-center justify-center"
title="Community" >
body="Come say hi to our amazing Discord community. ❤️" <div
/> class="task-list w-5/6 flex flex-col rounded-md overflow-hidden border border-solid border-white hover:shadow-gray-200 hover:shadow-lg transition duration-300 ease-in-out"
</ul> >
</main> <div
class="task-list-header text-2xl flex flex-row justify-between bg-gray-900 px-5 py-3 rounded-md z-10 border border-solid border-b-white"
>
<div class="font-bold">!taskhelp</div>
<div>0/32</div>
</div>
<div class="task-list-body px-1">
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-pink-400"
>
RyanPython
</div>
<div class="mr-1">:</div> build this website
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-blue-500"
>
MohFocus
</div>
<div class="mr-1">:</div> resolve merge conflicts
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-purple-400"
>
berryspace
</div>
<div class="mr-1">:</div> setup coworking stream
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-yellow-600"
>
CloudyDayzzz
</div>
<div class="mr-1">:</div> interpret sign language
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-yellow-600"
>
pcc_lanezzz
</div>
<div class="mr-1">:</div> torture Poco
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-pink-400"
>
lala_xitlali
</div>
<div class="mr-1">:</div> buy more fabric
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-green-600"
>
xeno_hiraeth
</div>
<div class="mr-1">:</div> diagnose patients
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-purple-400"
>
opoemperdernida
</div>
<div class="mr-1">:</div> rutina de la mañana
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-gray-200"
>
studywithjojo
</div>
<div class="mr-1">:</div> get into NHS
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-purple-400"
>
StudyPaws
</div>
<div class="mr-1">:</div> identify cow breeds
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-blue-500"
>
mikewhatwhere
</div>
<div class="mr-1">:</div> become a dietician
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-red-500"
>
AuspexOneGaming
</div>
<div class="mr-1">:</div> grade papers
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-green-300"
>
euphie___
</div>
<div class="mr-1">:</div> stay up late
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-purple-400"
>
charliosaurus
</div>
<div class="mr-1">:</div> praise the lord Jesus
Christ
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-orange-700"
>
unknownnie
</div>
<div class="mr-1">:</div> grow a sprout
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-blue-500"
>
itsbrandonut
</div>
<div class="mr-1">:</div> music stream
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-blue-500"
>
nihnesyo
</div>
<div class="mr-1">:</div> release new Lofi EP
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-gray-200"
>
shadygepril
</div>
<div class="mr-1">:</div> studying for A-Levels
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-yellow-300"
>
Extelso
</div>
<div class="mr-1">:</div> architecturing a new
project
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-blue-400"
>
Bubxmicn
</div>
<div class="mr-1">:</div> drive a truck
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-pink-400"
>
theyolotato
</div>
<div class="mr-1">:</div> read smut
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-orange-600"
>
pinsaregood
</div>
<div class="mr-1">:</div> be instagram influencer
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-blue-500"
>
wasmishtaken_
</div>
<div class="mr-1">:</div> simp for levi
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-yellow-300"
>
Jutstreams
</div>
<div class="mr-1">:</div> play geoguessr
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-purple-400"
>
j2modest
</div>
<div class="mr-1">:</div> penetration testing
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-yellow-200"
>
nachoburrit0
</div>
<div class="mr-1">:</div> play Apex for charity
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-yellow-500"
>
clarissawrites
</div>
<div class="mr-1">:</div> write
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-red-400"
>
Elly78456
</div>
<div class="mr-1">:</div> sell merch
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-blue-500"
>
arcaneXVIII
</div>
<div class="mr-1">:</div> babysit
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-purple-400"
>
OOPmarie
</div>
<div class="mr-1">:</div> React project
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-indigo-400"
>
Seijisoldier
</div>
<div class="mr-1">:</div> Be the tallest in the
room
</div>
<div
class="flex flex-row justify-start items-start bg-gray-700 px-5 py-2 rounded-md mt-1"
>
<div
class="font-bold max-w-[45%] overflow-hidden overflow-ellipsis text-purple-400"
>
wafflesdot025
</div>
<div class="mr-1">:</div> skip class
</div>
</div>
</div>
</a>
</div>
</div>
</Layout> </Layout>
<style> <style>
main { .task-list {
margin: auto; font-family: "Poppins", sans-serif;
padding: 1.5rem;
max-width: 60ch; height: 500px;
} }
h1 {
font-size: 3rem; .task-list-header {
font-weight: 800; font-family: "Fredoka", sans-serif;
margin: 0;
} }
.text-gradient {
background-image: var(--accent-gradient); /* scroll up and down automatically keyframes*/
-webkit-background-clip: text; @keyframes scroll {
-webkit-text-fill-color: transparent; 0% {
background-size: 400%; transform: translateY(0);
background-position: 0%; }
10% {
transform: translateY(0);
}
90% {
transform: translateY(calc(-100% + 435px));
}
100% {
transform: translateY(calc(-100% + 435px));
}
} }
.instructions {
line-height: 1.6; .task-list-header {
margin: 1rem 0; height: 80px;
border: 1px solid rgba(var(--accent), 25%);
background-color: white;
padding: 1rem;
border-radius: 0.4rem;
} }
.instructions code {
font-size: 0.875em; .task-list-body {
font-weight: bold; animation: scroll 17s linear alternate infinite;
background: rgba(var(--accent), 12%);
color: rgb(var(--accent));
border-radius: 4px;
padding: 0.3em 0.45em;
}
.instructions strong {
color: rgb(var(--accent));
}
.link-card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(24ch, 1fr));
gap: 1rem;
padding: 0;
} }
</style> </style>

29
src/pages/overlays.astro Normal file
View file

@ -0,0 +1,29 @@
---
import Layout from "../layouts/Layout.astro";
---
<!--
- timer
https://github.com/liyunze-coding/streamodoro
https://github.com/mohamed-tayeh/Minimal-Pomo-Timer
- task list
https://github.com/mohamed-tayeh/Task-List
- other (locale, spotify, etc)
https://github.com/mohamed-tayeh/forest-overlay
https://github.com/mohamed-tayeh/locale-overlay
-->
<Layout title="Coworking Overlays">
<div class="pt-12 w-full h-full flex flex-col">
<div
class="w-full h-fit text-white pt-5 pb-5 flex flex-col items-center bg-gray-900"
>
<h1 class="font-bold text-4xl">Overlays</h1>
</div>
<div
class="w-full h-full text-white pt-5 flex flex-col items-center justify-center"
>
<h1 class="font-bold text-4xl">Task List</h1>
</div>
</div>
</Layout>

49
src/pages/specs.md Normal file
View file

@ -0,0 +1,49 @@
---
title: Specifications
layout: "../layouts/Markdown.astro"
---
<!--
https://help.twitch.tv/s/article/broadcasting-guidelines?language=en_US
https://third-stinger-20a.notion.site/A-Coworking-Streamer-Cheat-Sheet-01ee1e5ff006410d84c339069ea6546c
-->
# Specifications
In this section, we will discuss the minimum computer specification requirements for Coworking and Study streams. The minimum specifications should be suffice for a comfortable streaming and viewing experience.
## CPU
The CPU (Central Processing Unit) is the brain of the computer. The better the CPU, the faster the computer can process data and instructions.
**The ideal CPU for streaming**: A quad-core processor, preferably with a clock speed of 3.0 GHz or higher, such as an Intel Core i5 or AMD Ryzen 5.
## GPU (optional)
The GPU (Graphics Processing Unit) is the component that renders images on the screen. The better the GPU, the better the image quality and the higher the frame rate. A dedicated GPU is not required for streaming, but it is recommended for a better viewing experience.
**The ideal GPU for streaming**: A dedicated graphics card with at least 4GB of VRAM, such as an NVIDIA GeForce GTX 1050 or AMD Radeon RX 560.
## RAM
RAM (Random Access Memory) is the component that stores data and instructions for the CPU to process. The more RAM a computer has, the more data and instructions it can store at once.
**The ideal RAM for streaming**: At least 8GB of RAM, preferably 16GB or more.
## Storage
Storage is the component that stores data and instructions for the CPU to process. The more storage a computer has, the more data and instructions it can store at once.
**The ideal storage for streaming**: At least 256GB of SSD storage, preferably 512GB or more.
## Internet speed
The better the internet connection, the better the streaming experience. You can check your internet speed at [speedtest.net](https://www.speedtest.net/).
**The ideal internet for streaming**: At least 5 Mbps upload speed, preferably 10 Mbps or more.
## Peripherals
Peripherals are the components that connect to the computer to provide additional functionality.
**The ideal peripherals for streaming**: A webcam, a microphone, and a headset.

38
tailwind.config.cjs Normal file
View file

@ -0,0 +1,38 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"],
theme: {
extend: {},
},
plugins: [
function ({ addComponents, theme }) {
addComponents({
h1: {
fontSize: theme("fontSize.3xl"),
fontWeight: theme("fontWeight.bold"),
marginBottom: theme("margin.2"),
},
h2: {
fontSize: theme("fontSize.2xl"),
fontWeight: theme("fontWeight.bold"),
marginBottom: theme("margin.1"),
},
h3: {
fontSize: theme("fontSize.xl"),
fontWeight: theme("fontWeight.bold"),
marginBottom: theme("margin.1"),
},
ul: {
listStyleType: "disc",
listStylePosition: "inside",
},
a: {
textDecoration: "underline",
},
p: {
marginBottom: theme("margin.6"),
},
});
},
],
};