aboutsummaryrefslogtreecommitdiff
path: root/communities/red-right-hand
diff options
context:
space:
mode:
Diffstat (limited to 'communities/red-right-hand')
-rw-r--r--communities/red-right-hand/174bg.net/package-lock.json150
-rw-r--r--communities/red-right-hand/174bg.net/package.json1
-rw-r--r--communities/red-right-hand/174bg.net/production/docker-compose.yaml1
-rw-r--r--communities/red-right-hand/174bg.net/src/app/layout.js26
-rw-r--r--communities/red-right-hand/174bg.net/src/components/TerminalOverlay/index.js2
-rw-r--r--communities/red-right-hand/174bg.net/src/proxy.js12
6 files changed, 189 insertions, 3 deletions
diff --git a/communities/red-right-hand/174bg.net/package-lock.json b/communities/red-right-hand/174bg.net/package-lock.json
index dd5990c..d8125a2 100644
--- a/communities/red-right-hand/174bg.net/package-lock.json
+++ b/communities/red-right-hand/174bg.net/package-lock.json
@@ -8,6 +8,7 @@
"name": "174gb.net",
"version": "0.1.0",
"dependencies": {
+ "@clerk/nextjs": "^7.3.3",
"@heroicons/react": "^2.2.0",
"next": "16.2.6",
"react": "19.2.4",
@@ -275,6 +276,87 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@clerk/backend": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-3.4.7.tgz",
+ "integrity": "sha512-zAELfaYtrlxlxxB6PT3EHPsHck6IPuyTQSKm7hWQqXp9GoFOM6wKOflFZgI0Q2M1C5SgrkDcrMNchkWXRwbsQw==",
+ "license": "MIT",
+ "dependencies": {
+ "@clerk/shared": "^4.10.2",
+ "standardwebhooks": "^1.0.0",
+ "tslib": "2.8.1"
+ },
+ "engines": {
+ "node": ">=20.9.0"
+ }
+ },
+ "node_modules/@clerk/nextjs": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@clerk/nextjs/-/nextjs-7.3.3.tgz",
+ "integrity": "sha512-MvDczhXM5v9H/a6qd7O52Ydj6CNtgSSPBrpC6HzlfB+nkP8GrsRl/sH+jFrGmRnLsT7Q7A9TESXkrbuHoeGAeQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@clerk/backend": "^3.4.7",
+ "@clerk/react": "^6.6.2",
+ "@clerk/shared": "^4.10.2",
+ "server-only": "0.0.1",
+ "tslib": "2.8.1"
+ },
+ "engines": {
+ "node": ">=20.9.0"
+ },
+ "peerDependencies": {
+ "next": "^15.2.8 || ^15.3.8 || ^15.4.10 || ^15.5.9 || ^15.6.0-0 || ^16.0.10 || ^16.1.0-0",
+ "react": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0",
+ "react-dom": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0"
+ }
+ },
+ "node_modules/@clerk/react": {
+ "version": "6.6.2",
+ "resolved": "https://registry.npmjs.org/@clerk/react/-/react-6.6.2.tgz",
+ "integrity": "sha512-eLev3C21yh2vqyvEBfXpc1QHa4q+wxbtRdTtBG0fCI+tMQUim8TIS300AJAciM6ox8tgInTWwIeIxr5jiYsvtw==",
+ "license": "MIT",
+ "dependencies": {
+ "@clerk/shared": "^4.10.2",
+ "tslib": "2.8.1"
+ },
+ "engines": {
+ "node": ">=20.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0",
+ "react-dom": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0"
+ }
+ },
+ "node_modules/@clerk/shared": {
+ "version": "4.10.2",
+ "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-4.10.2.tgz",
+ "integrity": "sha512-2RXGaCV94U2wYWaMQZA/AhVkqjcSx8f+oVjh6wgr4yXDmZ24BQRjPJ+K4L6IHiB/agoaXtKWJ0GI8InRZjo9/g==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tanstack/query-core": "^5.100.6",
+ "dequal": "2.0.3",
+ "glob-to-regexp": "0.4.1",
+ "js-cookie": "3.0.5",
+ "std-env": "^3.9.0"
+ },
+ "engines": {
+ "node": ">=20.9.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0",
+ "react-dom": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@emnapi/core": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
@@ -1255,6 +1337,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@stablelib/base64": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@stablelib/base64/-/base64-1.0.1.tgz",
+ "integrity": "sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==",
+ "license": "MIT"
+ },
"node_modules/@swc/helpers": {
"version": "0.5.15",
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
@@ -1535,6 +1623,16 @@
"tailwindcss": "4.3.0"
}
},
+ "node_modules/@tanstack/query-core": {
+ "version": "5.100.10",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.100.10.tgz",
+ "integrity": "sha512-8UR0yJR+GiQ40m3lPhUr0xbfAupe6GSQiksSBSa9SM2NjezFyxXCIA69/lz8cSoNKZLrw1/PktIyQBJcVeMi3w==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
"node_modules/@tybys/wasm-util": {
"version": "0.10.2",
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz",
@@ -2782,6 +2880,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
@@ -3507,6 +3614,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/fast-sha256": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz",
+ "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==",
+ "license": "Unlicense"
+ },
"node_modules/fastq": {
"version": "1.20.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
@@ -3741,6 +3854,12 @@
"node": ">=10.13.0"
}
},
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "license": "BSD-2-Clause"
+ },
"node_modules/globals": {
"version": "14.0.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
@@ -4411,6 +4530,15 @@
"jiti": "lib/jiti-cli.mjs"
}
},
+ "node_modules/js-cookie": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
+ "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -5633,6 +5761,12 @@
"semver": "bin/semver.js"
}
},
+ "node_modules/server-only": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz",
+ "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==",
+ "license": "MIT"
+ },
"node_modules/set-function-length": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
@@ -5855,6 +5989,22 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/standardwebhooks": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/standardwebhooks/-/standardwebhooks-1.0.0.tgz",
+ "integrity": "sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==",
+ "license": "MIT",
+ "dependencies": {
+ "@stablelib/base64": "^1.0.0",
+ "fast-sha256": "^1.3.0"
+ }
+ },
+ "node_modules/std-env": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz",
+ "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
+ "license": "MIT"
+ },
"node_modules/stop-iteration-iterator": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
diff --git a/communities/red-right-hand/174bg.net/package.json b/communities/red-right-hand/174bg.net/package.json
index ca4b930..988f26c 100644
--- a/communities/red-right-hand/174bg.net/package.json
+++ b/communities/red-right-hand/174bg.net/package.json
@@ -9,6 +9,7 @@
"lint": "eslint"
},
"dependencies": {
+ "@clerk/nextjs": "^7.3.3",
"@heroicons/react": "^2.2.0",
"next": "16.2.6",
"react": "19.2.4",
diff --git a/communities/red-right-hand/174bg.net/production/docker-compose.yaml b/communities/red-right-hand/174bg.net/production/docker-compose.yaml
index 901cf5c..b5d38b3 100644
--- a/communities/red-right-hand/174bg.net/production/docker-compose.yaml
+++ b/communities/red-right-hand/174bg.net/production/docker-compose.yaml
@@ -5,3 +5,4 @@ services:
ports:
- "3000:3000/tcp"
- "3000:3000/udp"
+ env_file: 174bg-net.env # we don't include this file for obvious reasons, but it should contain the necessary environment variables for the application to run
diff --git a/communities/red-right-hand/174bg.net/src/app/layout.js b/communities/red-right-hand/174bg.net/src/app/layout.js
index ce97609..32d23f4 100644
--- a/communities/red-right-hand/174bg.net/src/app/layout.js
+++ b/communities/red-right-hand/174bg.net/src/app/layout.js
@@ -1,3 +1,10 @@
+import {
+ ClerkProvider,
+ Show,
+ SignInButton,
+ SignUpButton,
+ UserButton,
+} from "@clerk/nextjs";
import { Inter, Fira_Code } from "next/font/google";
import "./globals.css";
import TerminalOverlay from "@/components/TerminalOverlay";
@@ -27,8 +34,23 @@ export default function RootLayout({ children }) {
className={`${inter.variable} ${firaCode.variable} h-full antialiased`}
>
<body className="min-h-full flex flex-col">
- <TerminalOverlay />
- {children}
+ <ClerkProvider>
+ <header className="flex justify-end items-center p-4 gap-4 h-16">
+ <Show when="signed-out">
+ <SignInButton />
+ <SignUpButton>
+ <button className="bg-purple-700 text-white rounded-full font-medium text-sm sm:text-base h-10 sm:h-12 px-4 sm:px-5 cursor-pointer">
+ Sign Up
+ </button>
+ </SignUpButton>
+ </Show>
+ <Show when="signed-in">
+ <UserButton />
+ </Show>
+ </header>
+ <TerminalOverlay />
+ {children}
+ </ClerkProvider>
</body>
</html>
);
diff --git a/communities/red-right-hand/174bg.net/src/components/TerminalOverlay/index.js b/communities/red-right-hand/174bg.net/src/components/TerminalOverlay/index.js
index 6053949..2d7c5da 100644
--- a/communities/red-right-hand/174bg.net/src/components/TerminalOverlay/index.js
+++ b/communities/red-right-hand/174bg.net/src/components/TerminalOverlay/index.js
@@ -10,7 +10,7 @@ export default function TerminalOverlay() {
<>
<button
onClick={() => setOpen(true)}
- className="fixed top-4 right-4 bg-gray-800 text-white p-3 rounded-full shadow-lg hover:bg-gray-700 transition-colors z-50"
+ className="fixed bottom-4 right-4 bg-gray-800 text-white p-3 rounded-full shadow-lg hover:bg-gray-700 transition-colors z-50"
title="Access the web terminal"
>
<CommandLineIcon className="h-5 w-5" />
diff --git a/communities/red-right-hand/174bg.net/src/proxy.js b/communities/red-right-hand/174bg.net/src/proxy.js
new file mode 100644
index 0000000..21b699f
--- /dev/null
+++ b/communities/red-right-hand/174bg.net/src/proxy.js
@@ -0,0 +1,12 @@
+import { clerkMiddleware } from "@clerk/nextjs/server";
+
+export default clerkMiddleware();
+
+export const config = {
+ matcher: [
+ // Skip Next.js internals and all static files, unless found in search params
+ "/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)",
+ // Always run for API routes
+ "/(api|trpc)(.*)",
+ ],
+};