aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-11-25 21:01:20 +0800
committercrupest <crupest@outlook.com>2022-11-25 21:01:20 +0800
commit63e43d1a9b880c92d73b7ec97b596c38d3e758e2 (patch)
treea6471b125c744a8bf1672ea4ce3e68ad586487ad
parent1534dcba89c244acbb830b77670c83b5d0e40a76 (diff)
downloadcrupest-63e43d1a9b880c92d73b7ec97b596c38d3e758e2.tar.gz
crupest-63e43d1a9b880c92d73b7ec97b596c38d3e758e2.tar.bz2
crupest-63e43d1a9b880c92d73b7ec97b596c38d3e758e2.zip
Add root page.
-rw-r--r--docker/crupest-nginx/Dockerfile8
-rw-r--r--docker/crupest-nginx/sites/www/.dockerignore2
-rw-r--r--docker/crupest-nginx/sites/www/.gitignore24
-rw-r--r--docker/crupest-nginx/sites/www/index.html53
-rw-r--r--docker/crupest-nginx/sites/www/package.json14
-rw-r--r--docker/crupest-nginx/sites/www/pnpm-lock.yaml345
-rw-r--r--docker/crupest-nginx/sites/www/src/main.js83
-rw-r--r--docker/crupest-nginx/sites/www/src/style.css24
-rw-r--r--site/index.html15
-rw-r--r--template/docker-compose.yaml.template10
10 files changed, 560 insertions, 18 deletions
diff --git a/docker/crupest-nginx/Dockerfile b/docker/crupest-nginx/Dockerfile
new file mode 100644
index 0000000..e5e4755
--- /dev/null
+++ b/docker/crupest-nginx/Dockerfile
@@ -0,0 +1,8 @@
+FROM node:latest AS build
+RUN npm install -g pnpm
+COPY sites/www /sites/www
+WORKDIR /sites/www
+RUN pnpm install --frozen-lockfile && pnpm run build
+
+FROM nginx:latest
+COPY --from=build /sites/www/dist /srv/www
diff --git a/docker/crupest-nginx/sites/www/.dockerignore b/docker/crupest-nginx/sites/www/.dockerignore
new file mode 100644
index 0000000..de4d1f0
--- /dev/null
+++ b/docker/crupest-nginx/sites/www/.dockerignore
@@ -0,0 +1,2 @@
+dist
+node_modules
diff --git a/docker/crupest-nginx/sites/www/.gitignore b/docker/crupest-nginx/sites/www/.gitignore
new file mode 100644
index 0000000..a547bf3
--- /dev/null
+++ b/docker/crupest-nginx/sites/www/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/docker/crupest-nginx/sites/www/index.html b/docker/crupest-nginx/sites/www/index.html
new file mode 100644
index 0000000..56089ac
--- /dev/null
+++ b/docker/crupest-nginx/sites/www/index.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="UTF-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <link rel="icon" type="image/svg+xml" href="/vite.svg" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>crupest</title>
+</head>
+
+<body>
+ <div id="color-strip-container"></div>
+ <article id="main-article">
+ <h1>This is crupest.</h1>
+ <p>Welcome To crupest Home!🏠</p>
+ <p>I'm very glad to meet you in this page. This is my new home.</p>
+ <p>Feel free to contact by email at crupest@outlook.com or, of course I@crupest.life . You can also file an issue in
+ any repo on GitHub. Here is the link to my GitHub profile: <a
+ href="https://github.com/crupest">https://github.com/crupest</a> .</p>
+ <p>Currently this page is hosted on my own server and my own apex domain (crupest.life). You can also share this
+ website link, aka, <a href="https://crupest.life">https://crupest.life</a> .</p>
+ <p>This is just the home page. I also run some other services on my server and under this domain's subdomain:</p>
+ <p>Public:</p>
+ <ul>
+ <li><a href="https://blog.crupest.life" target="_blank">https://blog.crupest.life</a>: My blogs in Chinese with <a
+ href="https://github.com/halo-dev/halo" target="_blank">halo</a>.</li>
+ <li><a href="https://timeline.crupest.life" target="_blank">https://timeline.crupest.life</a>: My microblogs with
+ my
+ own web app <a href="https://github.com/crupest/Timeline">Timeline</a>.</li>
+ </ul>
+ <p>Private:</p>
+ <ul>
+ <li><a href="https://code.crupest.life" target="_blank">https://code.crupest.life</a>: Browser based vscode with
+ <a href="https://github.com/coder/code-server" target="_blank">code-server</a>.
+ </li>
+ </ul>
+ <p>If you wish to deploy similar services like mine, you are in the right place. Take a look at <a
+ href="https://github.com/crupest/crupest" target="_blank">https://github.com/crupest/crupest</a> and there is
+ all you need to start with. The services are built with <a href="https://docs.docker.com"
+ target="_blank">docker-compose</a> and some template methodology. There is a convenient python script to help
+ you build from start. I don't fully test it because I never migrate my data into other server so it might be kind
+ of buggy. However, it always takes some time to make it your own sites. But don't worry and feel free to contact
+ me if you run into any issue and I would be glad to help you out.</p>
+ </article>
+ <h2>TODOs of me:</h2>
+ <p id="todo-message">Fetching...</p>
+ <ul id="todo-container">
+ </ul>
+ <script type="module" src="/src/main.js"></script>
+</body>
+
+</html> \ No newline at end of file
diff --git a/docker/crupest-nginx/sites/www/package.json b/docker/crupest-nginx/sites/www/package.json
new file mode 100644
index 0000000..fbd0fb9
--- /dev/null
+++ b/docker/crupest-nginx/sites/www/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "crupest-root",
+ "private": true,
+ "version": "0.1.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "devDependencies": {
+ "vite": "^3.2.4"
+ }
+} \ No newline at end of file
diff --git a/docker/crupest-nginx/sites/www/pnpm-lock.yaml b/docker/crupest-nginx/sites/www/pnpm-lock.yaml
new file mode 100644
index 0000000..0f7783f
--- /dev/null
+++ b/docker/crupest-nginx/sites/www/pnpm-lock.yaml
@@ -0,0 +1,345 @@
+lockfileVersion: 5.4
+
+specifiers:
+ vite: ^3.2.4
+
+devDependencies:
+ vite: 3.2.4
+
+packages:
+
+ /@esbuild/android-arm/0.15.15:
+ resolution: {integrity: sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64/0.15.15:
+ resolution: {integrity: sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-android-64/0.15.15:
+ resolution: {integrity: sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-android-arm64/0.15.15:
+ resolution: {integrity: sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-64/0.15.15:
+ resolution: {integrity: sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-arm64/0.15.15:
+ resolution: {integrity: sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-64/0.15.15:
+ resolution: {integrity: sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-arm64/0.15.15:
+ resolution: {integrity: sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-32/0.15.15:
+ resolution: {integrity: sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-64/0.15.15:
+ resolution: {integrity: sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm/0.15.15:
+ resolution: {integrity: sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm64/0.15.15:
+ resolution: {integrity: sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-mips64le/0.15.15:
+ resolution: {integrity: sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-ppc64le/0.15.15:
+ resolution: {integrity: sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-riscv64/0.15.15:
+ resolution: {integrity: sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-s390x/0.15.15:
+ resolution: {integrity: sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-netbsd-64/0.15.15:
+ resolution: {integrity: sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-openbsd-64/0.15.15:
+ resolution: {integrity: sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-sunos-64/0.15.15:
+ resolution: {integrity: sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-32/0.15.15:
+ resolution: {integrity: sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-64/0.15.15:
+ resolution: {integrity: sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-arm64/0.15.15:
+ resolution: {integrity: sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild/0.15.15:
+ resolution: {integrity: sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/android-arm': 0.15.15
+ '@esbuild/linux-loong64': 0.15.15
+ esbuild-android-64: 0.15.15
+ esbuild-android-arm64: 0.15.15
+ esbuild-darwin-64: 0.15.15
+ esbuild-darwin-arm64: 0.15.15
+ esbuild-freebsd-64: 0.15.15
+ esbuild-freebsd-arm64: 0.15.15
+ esbuild-linux-32: 0.15.15
+ esbuild-linux-64: 0.15.15
+ esbuild-linux-arm: 0.15.15
+ esbuild-linux-arm64: 0.15.15
+ esbuild-linux-mips64le: 0.15.15
+ esbuild-linux-ppc64le: 0.15.15
+ esbuild-linux-riscv64: 0.15.15
+ esbuild-linux-s390x: 0.15.15
+ esbuild-netbsd-64: 0.15.15
+ esbuild-openbsd-64: 0.15.15
+ esbuild-sunos-64: 0.15.15
+ esbuild-windows-32: 0.15.15
+ esbuild-windows-64: 0.15.15
+ esbuild-windows-arm64: 0.15.15
+ dev: true
+
+ /fsevents/2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /function-bind/1.1.1:
+ resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
+ dev: true
+
+ /has/1.0.3:
+ resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
+ engines: {node: '>= 0.4.0'}
+ dependencies:
+ function-bind: 1.1.1
+ dev: true
+
+ /is-core-module/2.11.0:
+ resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
+ dependencies:
+ has: 1.0.3
+ dev: true
+
+ /nanoid/3.3.4:
+ resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
+
+ /path-parse/1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ dev: true
+
+ /picocolors/1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+ dev: true
+
+ /postcss/8.4.19:
+ resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.4
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+ dev: true
+
+ /resolve/1.22.1:
+ resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.11.0
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: true
+
+ /rollup/2.79.1:
+ resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /source-map-js/1.0.2:
+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /supports-preserve-symlinks-flag/1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /vite/3.2.4:
+ resolution: {integrity: sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ esbuild: 0.15.15
+ postcss: 8.4.19
+ resolve: 1.22.1
+ rollup: 2.79.1
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
diff --git a/docker/crupest-nginx/sites/www/src/main.js b/docker/crupest-nginx/sites/www/src/main.js
new file mode 100644
index 0000000..bbdecab
--- /dev/null
+++ b/docker/crupest-nginx/sites/www/src/main.js
@@ -0,0 +1,83 @@
+import { Octokit } from "https://cdn.skypack.dev/octokit";
+import "./style.css";
+
+const colorStripContainer = document.getElementById("color-strip-container");
+
+const colorStripText = "FANCYSTRIP";
+
+for (let i = 0; i < 10; i++) {
+ const colorStripBlock = document.createElement("span");
+
+ const hsl = `hsl(${i * 36}, 100%, 50%)`;
+ colorStripBlock.classList.add("color-strip-block");
+ colorStripBlock.style.backgroundColor = hsl;
+ colorStripBlock.textContent = colorStripText[i];
+ colorStripContainer.appendChild(colorStripBlock);
+}
+
+document.addEventListener("DOMContentLoaded", async () => {
+ console.log("Try to fetch GitHub project(number: 2) of crupest.");
+
+ const todoMessage = document.getElementById("todo-message");
+ const todoContainer = document.getElementById("todo-container");
+
+ // TODO: we need another way to do this!
+ const octokit = new Octokit({
+ auth: "xxx",
+ });
+
+ try {
+ const res = await octokit.graphql(
+ `
+ {
+ user(login: "crupest") {
+ projectV2(number: 2) {
+ items(last: 100) {
+ nodes {
+ __typename
+ fieldValueByName(name: "Status")
+ content {
+ __typename
+ ... on Issue {
+ title
+ closed
+ }
+ ... on PullRequest {
+ title
+ closed
+ }
+ ... on DraftIssue {
+ title
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ `
+ );
+
+ const items = res.user.projectV2.items.nodes.map((node) => node.content);
+
+ items.forEach((item) => {
+ if (item.__typename == "DraftIssue") {
+ item.closed = false;
+ }
+ const { title, closed } = item;
+ const li = document.createElement("li");
+ const span = document.createElement("span");
+ span.textContent = closed ? "Done:" : "Todo:";
+ span.style.color = closed ? "green" : "blue";
+ li.appendChild(span);
+ li.append(title);
+ todoContainer.appendChild(li);
+ });
+
+ todoMessage.parentElement.removeChild(todoMessage);
+ } catch (e) {
+ todoMessage.style.color = "red";
+ todoMessage.textContent = "Failed to fetch TODOs.";
+ console.log("Failed to get GitHub project info.", e);
+ }
+});
diff --git a/docker/crupest-nginx/sites/www/src/style.css b/docker/crupest-nginx/sites/www/src/style.css
new file mode 100644
index 0000000..6021c6c
--- /dev/null
+++ b/docker/crupest-nginx/sites/www/src/style.css
@@ -0,0 +1,24 @@
+html {
+ width: 100%;
+}
+
+body {
+ width: 100%;
+ margin: 0;
+ padding: 0 2em;
+}
+
+#color-strip-container {
+ width: 100%;
+ height: 36px;
+}
+
+.color-strip-block {
+ display: inline-block;
+ width: 10%;
+ height: 100%;
+ line-height: 36px;
+ vertical-align: middle;
+ text-align: center;
+ color: white;
+}
diff --git a/site/index.html b/site/index.html
deleted file mode 100644
index 1abf5a9..0000000
--- a/site/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>🏠Home of crupest</title>
-</head>
-
-<body>
- Hello world!
-</body>
-
-</html> \ No newline at end of file
diff --git a/template/docker-compose.yaml.template b/template/docker-compose.yaml.template
index 50bc8bf..3df0a18 100644
--- a/template/docker-compose.yaml.template
+++ b/template/docker-compose.yaml.template
@@ -54,8 +54,13 @@ services:
- code-server-network
nginx:
- image: nginx:latest
- pull_policy: always
+ pull_policy: build
+ build:
+ context: ./docker/crupest-nginx
+ dockerfile: Dockerfile
+ pull: true
+ tags:
+ - "crupest/arch-code-server:latest"
container_name: nginx
restart: on-failure:3
ports:
@@ -64,7 +69,6 @@ services:
- "443:443/udp"
volumes:
- "./nginx-config:/etc/nginx/conf.d:ro"
- - "./site:/srv/www:ro"
- "./data/certbot/certs:/etc/letsencrypt:ro"
- "./data/certbot/webroot:/srv/acme:ro"
networks: