From 363b4c22126b59385f4372bbd6cad55b13bf85aa Mon Sep 17 00:00:00 2001 From: Opnxng Date: Wed, 9 Oct 2024 19:44:34 +0800 Subject: [PATCH] Added Hckrnws --- .gitea/workflows/hckrnws.yaml | 68 +++ copy/globals.css | 862 +++++++++++++++++++++++++++++++++ dockerfiles/hckrnws.Dockerfile | 23 + 3 files changed, 953 insertions(+) create mode 100644 .gitea/workflows/hckrnws.yaml create mode 100644 copy/globals.css create mode 100755 dockerfiles/hckrnws.Dockerfile diff --git a/.gitea/workflows/hckrnws.yaml b/.gitea/workflows/hckrnws.yaml new file mode 100644 index 0000000..1bfc1b8 --- /dev/null +++ b/.gitea/workflows/hckrnws.yaml @@ -0,0 +1,68 @@ +name: hckrnws +run-name: hckrnws +env: + REPO_NAME: hckrnws + REMOTE_REPO: https://github.com/rajatkulkarni95/hckrnws.git + BUILD_PLATFORM: linux/arm64 +on: + schedule: + - cron: "0 0 1 */3 *" # every 3 months + push: + paths: + - ".gitea/workflows/hckrnws.yaml" + - "dockerfiles/hckrnws.Dockerfile" + +jobs: + build: + runs-on: runner + container: + image: git.opnxng.com/opnxng/docker-buildx:latest + steps: + - name: Check latest upstream commit + run: | + STORED_COMMIT=$(curl -H "Authorization: Bearer ${{ secrets.NT }}" -s "https://nt.opnxng.com/${REPO_NAME}/raw?poll=1" | tail -n 1) + LATEST_COMMIT=$(git ls-remote ${REMOTE_REPO} | awk '{print $1}' | head -1) + echo "STORED_COMMIT=${STORED_COMMIT}" >> "$GITHUB_ENV" + echo "LATEST_COMMIT=${LATEST_COMMIT}" >> "$GITHUB_ENV" + echo "Stored Commit: ${STORED_COMMIT}" + echo "Latest Commit: ${LATEST_COMMIT}" + + - name: Build and push Docker image + run: | + if [ "$STORED_COMMIT" != "$LATEST_COMMIT" ]; then + echo "Found a new commit, building new image" + # Create and use Docker Buildx builder + docker buildx create --use --name buildx + # Login to Package Registry + echo "${{ secrets.TOKEN }}" | docker login git.opnxng.com -u ${{ gitea.repository_owner }} --password-stdin + # Build and push Docker image + mkdir temp + cd temp + git clone ${REMOTE_REPO} . + curl -JL https://git.opnxng.com/opnxng/docker-images/raw/branch/main/copy/globals.css -o ./src/styles/globals.css + curl -JL https://git.opnxng.com/opnxng/docker-images/raw/branch/main/dockerfiles/hckrnws.Dockerfile -o Dockerfile + docker buildx build \ + --platform ${BUILD_PLATFORM} \ + -t git.opnxng.com/${{ gitea.repository_owner }}/${REPO_NAME}:latest \ + -f ./Dockerfile \ + --push . && \ + curl -H prio:low -d "Built and pushed ${REPO_NAME}" https://ntfy.opnxng.com/build || \ + { curl -H tags:warning -H prio:high -d "Built and pushed ${REPO_NAME} failed!" https://ntfy.opnxng.com/build ; exit 1; } + # Remove Docker Buildx builder + docker buildx rm buildx + else + echo "No new commit, skipped build" + fi + + - name: Update stored commit + run: | + if [ "$STORED_COMMIT" != "$LATEST_COMMIT" ]; then + curl -H "Authorization: Bearer ${{ secrets.NT }}" -d $(git ls-remote ${REMOTE_REPO} | awk '{print $1}' | head -1) "https://nt.opnxng.com/${REPO_NAME}" + STORED_COMMIT=$(curl -H "Authorization: Bearer ${{ secrets.NT }}" -s "https://nt.opnxng.com/${REPO_NAME}/raw?poll=1" | tail -n 1) + echo "STORED_COMMIT=${STORED_COMMIT}" >> "$GITHUB_ENV" + else + curl -H "Authorization: Bearer ${{ secrets.NT }}" -d $(git ls-remote ${REMOTE_REPO} | awk '{print $1}' | head -1) "https://nt.opnxng.com/${REPO_NAME}" + STORED_COMMIT=$(curl -H "Authorization: Bearer ${{ secrets.NT }}" -s "https://nt.opnxng.com/${REPO_NAME}/raw?poll=1" | tail -n 1) + echo "STORED_COMMIT=${STORED_COMMIT}" >> "$GITHUB_ENV" + exit 1 + fi diff --git a/copy/globals.css b/copy/globals.css new file mode 100644 index 0000000..9d6ec10 --- /dev/null +++ b/copy/globals.css @@ -0,0 +1,862 @@ +/* +! tailwindcss v3.2.7 | MIT License | https://tailwindcss.com +*/*, +:after, +:before { + box-sizing:border-box; + border:0 solid #e5e7eb +} +:after, +:before { + --tw-content:"" +} +html { + line-height:1.5; + -webkit-text-size-adjust:100%; + -moz-tab-size:4; + -o-tab-size:4; + tab-size:4; + font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji; + font-feature-settings:normal +} +body { + margin:0; + line-height:inherit +} +hr { + height:0; + color:inherit; + border-top-width:1px +} +abbr:where([title]) { + -webkit-text-decoration:underline dotted; + text-decoration:underline dotted +} +h1, +h2, +h3, +h4, +h5, +h6 { + font-size:inherit; + font-weight:inherit +} +a { + color:inherit; + text-decoration:inherit +} +b, +strong { + font-weight:bolder +} +code, +kbd, +pre, +samp { + font-family:Space Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + font-size:1em +} +small { + font-size:80% +} +sub, +sup { + font-size:75%; + line-height:0; + position:relative; + vertical-align:baseline +} +sub { + bottom:-.25em +} +sup { + top:-.5em +} +table { + text-indent:0; + border-color:inherit; + border-collapse:collapse +} +button, +input, +optgroup, +select, +textarea { + font-family:inherit; + font-size:100%; + font-weight:inherit; + line-height:inherit; + color:inherit; + margin:0; + padding:0 +} +button, +select { + text-transform:none +} +[type=button], +[type=reset], +[type=submit], +button { + -webkit-appearance:button; + background-color:transparent; + background-image:none +} +:-moz-focusring { + outline:auto +} +:-moz-ui-invalid { + box-shadow:none +} +progress { + vertical-align:baseline +} +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height:auto +} +[type=search] { + -webkit-appearance:textfield; + outline-offset:-2px +} +::-webkit-search-decoration { + -webkit-appearance:none +} +::-webkit-file-upload-button { + -webkit-appearance:button; + font:inherit +} +summary { + display:list-item +} +blockquote, +dd, +dl, +figure, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +p, +pre { + margin:0 +} +fieldset { + margin:0 +} +fieldset, +legend { + padding:0 +} +menu, +ol, +ul { + list-style:none; + margin:0; + padding:0 +} +textarea { + resize:vertical +} +input::-moz-placeholder, +textarea::-moz-placeholder { + opacity:1; + color:#9ca3af +} +input::placeholder, +textarea::placeholder { + opacity:1; + color:#9ca3af +} +[role=button], +button { + cursor:pointer +} +:disabled { + cursor:default +} +audio, +canvas, +embed, +iframe, +img, +object, +svg, +video { + display:block; + vertical-align:middle +} +img, +video { + max-width:100%; + height:auto +} +[hidden] { + display:none +} +*, +:after, +:before { + --tw-border-spacing-x:0; + --tw-border-spacing-y:0; + --tw-translate-x:0; + --tw-translate-y:0; + --tw-rotate:0; + --tw-skew-x:0; + --tw-skew-y:0; + --tw-scale-x:1; + --tw-scale-y:1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness:proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width:0px; + --tw-ring-offset-color:#fff; + --tw-ring-color:rgba(59,130,246,.5); + --tw-ring-offset-shadow:0 0 #0000; + --tw-ring-shadow:0 0 #0000; + --tw-shadow:0 0 #0000; + --tw-shadow-colored:0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: +} +::backdrop { + --tw-border-spacing-x:0; + --tw-border-spacing-y:0; + --tw-translate-x:0; + --tw-translate-y:0; + --tw-rotate:0; + --tw-skew-x:0; + --tw-skew-y:0; + --tw-scale-x:1; + --tw-scale-y:1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness:proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width:0px; + --tw-ring-offset-color:#fff; + --tw-ring-color:rgba(59,130,246,.5); + --tw-ring-offset-shadow:0 0 #0000; + --tw-ring-shadow:0 0 #0000; + --tw-shadow:0 0 #0000; + --tw-shadow-colored:0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: +} +.relative { + position:relative +} +.m-0 { + margin:0 +} +.mx-auto { + margin-left:auto; + margin-right:auto +} +.my-2 { + margin-top:.5rem; + margin-bottom:.5rem +} +.mb-0 { + margin-bottom:0 +} +.mb-0\.5 { + margin-bottom:.125rem +} +.mb-1 { + margin-bottom:.25rem +} +.mb-2 { + margin-bottom:.5rem +} +.mb-3 { + margin-bottom:.75rem +} +.mb-8 { + margin-bottom:2rem +} +.ml-0 { + margin-left:0 +} +.ml-0\.5 { + margin-left:.125rem +} +.ml-1 { + margin-left:.25rem +} +.ml-2 { + margin-left:.5rem +} +.ml-auto { + margin-left:auto +} +.mr-1 { + margin-right:.25rem +} +.mr-2 { + margin-right:.5rem +} +.mr-3 { + margin-right:.75rem +} +.mt-0 { + margin-top:0 +} +.mt-0\.5 { + margin-top:.125rem +} +.mt-1 { + margin-top:.25rem +} +.mt-3 { + margin-top:.75rem +} +.mt-4 { + margin-top:1rem +} +.mt-8 { + margin-top:2rem +} +.mt-auto { + margin-top:auto +} +.flex { + display:flex +} +.hidden { + display:none +} +.h-3 { + height:.75rem +} +.h-4 { + height:1rem +} +.min-h-screen { + min-height:100vh +} +.w-20 { + width:5rem +} +.w-3 { + width:.75rem +} +.w-32 { + width:8rem +} +.w-4 { + width:1rem +} +.w-fit { + width:-moz-fit-content; + width:fit-content +} +.w-full { + width:100% +} +.max-w-\[128px\] { + max-width:128px +} +.max-w-\[156px\] { + max-width:156px +} +.flex-1 { + flex:1 1 0% +} +.flex-none { + flex:none +} +.cursor-default { + cursor:default +} +.flex-col { + flex-direction:column +} +.items-center { + align-items:center +} +.justify-start { + justify-content:flex-start +} +.justify-end { + justify-content:flex-end +} +.justify-center { + justify-content:center +} +.justify-between { + justify-content:space-between +} +.overflow-x-hidden { + overflow-x:hidden +} +.truncate { + overflow:hidden; + text-overflow:ellipsis +} +.truncate, +.whitespace-nowrap { + white-space:nowrap +} +.whitespace-pre-line { + white-space:pre-line +} +.rounded { + border-radius:.25rem +} +.rounded-full { + border-radius:9999px +} +.rounded-md { + border-radius:.375rem +} +.rounded-l-full { + border-top-left-radius:9999px; + border-bottom-left-radius:9999px +} +.rounded-r-full { + border-top-right-radius:9999px; + border-bottom-right-radius:9999px +} +.border { + border-width:1px +} +.border-b { + border-bottom-width:1px +} +.border-l-2 { + border-left-width:2px +} +.border-r { + border-right-width:1px +} +.border-none { + border-style:none +} +.border-primary { + border-color:var(--color-border-primary) +} +.bg-op { + background-color:var(--color-bg-op) +} +.bg-primary { + background-color:var(--color-bg-primary) +} +.bg-secondary { + background-color:var(--color-bg-secondary) +} +.bg-tertiary { + background-color:var(--color-bg-tertiary) +} +.bg-transparent { + background-color:transparent +} +.p-0 { + padding:0; +} +.p-0\.5 { + padding:.125rem; +} +.p-1 { + padding:.25rem; +} +.p-1\.5 { + padding:.375rem; +} +.p-4 { + padding:1rem; +} +@media (min-width:1280px) { + .p-4 { + padding:1rem 2rem; + } +} +.px-1 { + padding-left:.25rem; + padding-right:.25rem +} +.px-1\.5 { + padding-left:.375rem; + padding-right:.375rem +} +.px-2 { + padding-left:.5rem; + padding-right:.5rem +} +.px-3 { + padding-left:.75rem; + padding-right:.75rem +} +.px-4 { + padding-left:1rem; + padding-right:1rem +} +.py-0 { + padding-top:0; + padding-bottom:0 +} +.py-0\.5 { + padding-top:.125rem; + padding-bottom:.125rem +} +.py-1 { + padding-top:.25rem; + padding-bottom:.25rem +} +.py-1\.5 { + padding-top:.375rem; + padding-bottom:.375rem +} +.py-2 { + padding-top:.5rem; + padding-bottom:.5rem +} +.py-3 { + padding-top:.75rem; + padding-bottom:.75rem +} +.pb-1 { + padding-bottom:.25rem +} +.pl-0 { + padding-left:0 +} +.pl-3 { + padding-left:.75rem +} +.pr-2 { + padding-right:.5rem +} +.pt-0 { + padding-top:0 +} +.text-center { + text-align:center +} +.font-mono { + font-family:Space Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace +} +.font-sans { + font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji +} +.text-\[10px\] { + font-size:10px +} +.text-base { + font-size:1rem; + line-height:1.5rem +} +.text-lg { + font-size:1.125rem; + line-height:1.75rem +} +.text-sm { + font-size:.875rem; + line-height:1.25rem +} +.text-xl { + font-size:1.25rem; + line-height:1.75rem +} +.text-xs { + font-size:.75rem; + line-height:1rem +} +.font-medium { + font-weight:500 +} +.font-normal { + font-weight:400 +} +.font-semibold { + font-weight:600 +} +.text-amber-400 { + --tw-text-opacity:1; + color:rgb(251 191 36/var(--tw-text-opacity)) +} +.text-icon { + color:var(--color-text-icon) +} +.text-primary { + color:var(--color-text-secondary) +} +.text-secondary { + color:var(--color-text-secondary) +} +.text-tertiary { + color:var(--color-text-tertiary) +} +.antialiased { + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale +} +.shadow-sm { + --tw-shadow:0 1px 2px 0 rgba(0,0,0,.05); + --tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color); + box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow) +} +.outline-none { + outline:2px solid transparent; + outline-offset:2px +} +.ring-0 { + --tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000) +} +.filter { + filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) +} +.duration-100 { + transition-duration:.1s +} +.duration-150 { + transition-duration:.15s +} +* { + box-sizing:border-box +} +a, +button { + outline:none +} +.quotes { + margin-top:1rem!important; + margin-bottom:1rem!important; + border-left-width:2px; + border-color:var(--color-border-secondary); + padding-left:1rem; + padding-right:1rem; + color:var(--color-text-tertiary) +} +/* App Themes */ + +[data-theme="light"] { + --color-text-primary: #1C1B1A; /* 950 (dark gray) */ + --color-text-secondary: #1C1B1A; /* 950 (dark gray) */ + --color-text-tertiary: #CECDC3; /* 200 (light gray) */ + --color-text-code: #100F0F; /* black */ + --color-text-icon: #403E3C; /* 800 (dark gray) */ + --color-text-btn: #F0F0F0; /* modified to a pure light gray */ + --color-text-link: #4385BE; /* blue */ + + --color-bg-primary: #F0F0F0; /* modified to a pure light gray (formerly paper) */ + --color-bg-secondary: #E0E0E0; /* modified to a more neutral light gray */ + --color-bg-tertiary: #D0D0D0; /* modified to a very light gray */ + --color-bg-hover: #E0E0E0; /* modified (similar to secondary) */ + --color-bg-tooltip: #F2F2F2; /* adjusted for a neutral light gray */ + --color-bg-code: #CECDC3; /* 200 (light gray) */ + --color-bg-op: #D0A215; /* still yellow but usually used in context */ + --color-bg-btn: #100F0F; /* black */ + + --color-border-primary: #B7B5AC; /* 300 (light gray) */ + --color-border-secondary: #878580; /* 500 (medium gray) */ +} + +[data-theme="dark"] { + --color-text-primary: #E0E0E0; /* modified to a light gray (formerly paper) */ + --color-text-secondary: #B7B5AC; /* 300 (medium gray) */ + --color-text-tertiary: #CECDC3; /* 200 (light gray) */ + --color-text-code: #E0E0E0; /* modified to a light gray (formerly paper) */ + --color-text-icon: #6F6E69; /* 600 (dark gray) */ + --color-text-btn: #100F0F; /* black */ + --color-text-link: #4385BE; /* blue */ + + --color-bg-primary: #100F0F; /* black */ + --color-bg-secondary: #1C1B1A; /* 950 (dark gray) */ + --color-bg-tertiary: #282726; /* 900 (dark gray) */ + --color-bg-hover: #181818; /* darkened color for hover */ + --color-bg-tooltip: #1A1A1A; /* dark gray */ + --color-bg-code: #403E3C; /* 800 (dark gray) */ + --color-bg-op: #5E409D; /* purple */ + --color-bg-btn: #E0E0E0; /* modified to a light gray (formerly paper) */ + + --color-border-primary: #1C1B1A; /* 950 (dark gray) */ + --color-border-secondary: #343331; /* 850 (dark gray) */ +} + +[data-theme="andromeda"] { + --color-text-primary: #100F0F; /* black */ + --color-text-secondary: #A5ABA8; /* still using adapted gray */ + --color-text-tertiary: #AEABB1; /* still using adapted gray */ + --color-text-code: #E0E0E0; /* light gray */ + --color-text-icon: #403E3C; /* 800 (dark gray) */ + + --color-bg-primary: #100F0F; /* black */ + --color-bg-secondary: #282726; /* 900 (dark gray) */ + --color-bg-tertiary: #343331; /* 850 (dark gray) */ + --color-bg-hover: #262930; /* darkened for hover */ + --color-bg-code: #1E2025; /* blackish tone for the code */ + --color-bg-tooltip: #1A1A1A; /* dark gray */ + + --color-border-primary: #2B2E37; /* adapted */ + --color-border-secondary: #24262D; /* adapted */ +} +.hover\:border-secondary:hover { + border-color:var(--color-border-secondary) +} +.hover\:bg-hover:hover { + background-color:var(--color-bg-hover) +} +.hover\:bg-secondary:hover { + background-color:var(--color-bg-secondary) +} +.hover\:bg-tertiary:hover { + background-color:var(--color-bg-tertiary) +} +.hover\:text-primary:hover { + color:var(--color-text-primary) +} +.focus-visible\:ring-1:focus-visible { + --tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000) +} +.focus-visible\:ring-blue-500:focus-visible { + --tw-ring-opacity:1; + --tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity)) +} +.enabled\:hover\:bg-btn:hover:enabled { + background-color:var(--color-bg-btn) +} +.disabled\:cursor-not-allowed:disabled { + cursor:not-allowed +} +.disabled\:opacity-40:disabled { + opacity:.4 +} +.group:hover .group-hover\:text-btn { + color:var(--color-text-btn) +} +.group:hover .group-hover\:text-primary { + color:var(--color-text-primary) +} +@media (min-width:768px) { + .md\:w-5\/6 { + width:83.333333% + } + .md\:max-w-full { + max-width:100% + } + .md\:overflow-visible { + overflow:visible + } + .md\:whitespace-normal { + white-space:normal + } + .md\:text-2xl { + font-size:1.5rem; + line-height:2rem + } + .md\:text-xl { + font-size:1.25rem; + line-height:1.75rem + } +} +@media (min-width:1280px) { + .xl\:w-\[900px\] { + width:900px + } +} +.\[\&\>p\>a\]\:whitespace-pre-line>p>a { + white-space:pre-line +} +.\[\&\>p\>a\]\:text-link>p>a { + color:var(--color-text-link) +} +.\[\&\>p\>a\]\:underline>p>a { + text-decoration-line:underline +} +.\[\&\>p\]\:mb-1>p { + margin-bottom:.25rem +} +.\[\&\>p\]\:whitespace-pre-line>p { + white-space:pre-line +} +.\[\&\>pre\>code\]\:font-mono>pre>code { + font-family:Space Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace +} +.\[\&\>pre\>code\]\:text-xs>pre>code { + font-size:.75rem; + line-height:1rem +} +@media (min-width:768px) { + .md\:\[\&\>pre\>code\]\:text-sm>pre>code { + font-size:.875rem; + line-height:1.25rem + } +} +.\[\&\>pre\]\:my-2>pre { + margin-top:.5rem; + margin-bottom:.5rem +} +.\[\&\>pre\]\:overflow-x-auto>pre { + overflow-x:auto +} +.\[\&\>pre\]\:whitespace-pre-line>pre { + white-space:pre-line +} +.\[\&\>pre\]\:rounded>pre { + border-radius:.25rem +} +.\[\&\>pre\]\:border>pre { + border-width:1px +} +.\[\&\>pre\]\:border-primary>pre { + border-color:var(--color-border-primary) +} +.\[\&\>pre\]\:bg-code>pre { + background-color:var(--color-bg-code) +} +.\[\&\>pre\]\:p-2>pre { + padding:.5rem +} diff --git a/dockerfiles/hckrnws.Dockerfile b/dockerfiles/hckrnws.Dockerfile new file mode 100755 index 0000000..0b0bb80 --- /dev/null +++ b/dockerfiles/hckrnws.Dockerfile @@ -0,0 +1,23 @@ +# Use the official Node.js image +FROM node:lts-slim + +# Set the working directory in the container +WORKDIR /app + +# Copy package.json and pnpm-lock.yaml for installing dependencies +COPY package.json pnpm-lock.yaml ./ + +# Install pnpm +RUN npm install -g pnpm + +# Install project dependencies +RUN pnpm install + +# Copy the rest of the application code +COPY . . + +# Expose the port +EXPOSE 3000 + +# Command to run the application +CMD ["pnpm", "run", "dev"]