NERDDISCO commited on
Commit
5dfa78d
·
0 Parent(s):

initial commit

Browse files
.dockerignore ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Dockerfile
2
+ .dockerignore
3
+ node_modules
4
+ npm-debug.log
5
+ README.md
6
+ .next
7
+ .git
.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2
+
3
+ # dependencies
4
+ /node_modules
5
+ /.pnp
6
+ .pnp.js
7
+
8
+ # testing
9
+ /coverage
10
+
11
+ # next.js
12
+ /.next/
13
+ /out/
14
+
15
+ # production
16
+ /build
17
+
18
+ # misc
19
+ .DS_Store
20
+ *.pem
21
+
22
+ # debug
23
+ npm-debug.log*
24
+ yarn-debug.log*
25
+ yarn-error.log*
26
+
27
+ # local env files
28
+ .env*.local
29
+
30
+ # vercel
31
+ .vercel
32
+
33
+ # typescript
34
+ *.tsbuildinfo
35
+ next-env.d.ts
Dockerfile ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM node:18-alpine AS base
2
+
3
+ # Install dependencies only when needed
4
+ FROM base AS deps
5
+ # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
6
+ RUN apk add --no-cache libc6-compat
7
+ WORKDIR /app
8
+
9
+ # Install dependencies based on the preferred package manager
10
+ COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
11
+ RUN \
12
+ if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
13
+ elif [ -f package-lock.json ]; then npm ci; \
14
+ elif [ -f pnpm-lock.yaml ]; then yarn global add pnpm && pnpm i --frozen-lockfile; \
15
+ else echo "Lockfile not found." && exit 1; \
16
+ fi
17
+
18
+
19
+ # Rebuild the source code only when needed
20
+ FROM base AS builder
21
+ WORKDIR /app
22
+ COPY --from=deps /app/node_modules ./node_modules
23
+ COPY . .
24
+
25
+ # Next.js collects completely anonymous telemetry data about general usage.
26
+ # Learn more here: https://nextjs.org/telemetry
27
+ # Uncomment the following line in case you want to disable telemetry during the build.
28
+ # ENV NEXT_TELEMETRY_DISABLED 1
29
+
30
+ # RUN yarn build
31
+
32
+ # If you use yarn, comment out this line and use the line above
33
+ RUN npm run build
34
+
35
+ # Production image, copy all the files and run next
36
+ FROM base AS runner
37
+ WORKDIR /app
38
+
39
+ ENV NODE_ENV production
40
+ # Uncomment the following line in case you want to disable telemetry during runtime.
41
+ # ENV NEXT_TELEMETRY_DISABLED 1
42
+
43
+ RUN addgroup --system --gid 1001 nodejs
44
+ RUN adduser --system --uid 1001 nextjs
45
+
46
+ COPY --from=builder /app/public ./public
47
+
48
+ # Automatically leverage output traces to reduce image size
49
+ # https://nextjs.org/docs/advanced-features/output-file-tracing
50
+ COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
51
+ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
52
+
53
+ USER nextjs
54
+
55
+ EXPOSE 3000
56
+
57
+ ENV PORT 3000
58
+
59
+ CMD ["node", "server.js"]
README.md ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Next.js Docker Starter
3
+ emoji: 🐳🤘
4
+ colorFrom: purple
5
+ colorTo: blue
6
+ sdk: docker
7
+ pinned: false
8
+ license: agpl-3.0
9
+ app_port: 3000
10
+ ---
11
+
12
+ # nextjs-docker-starter
13
+
14
+ This example can be used to run [Next.js](https://nextjs.org/) using [Docker](https://huggingface.co/docs/hub/spaces-sdks-docker) in 🤗 [Spaces](https://huggingface.co/spaces).
15
+
16
+ ## Development
17
+
18
+ 1. Install the dependencies: `npm i`
19
+ 2. Start the local dev-server: `npm run dev`
20
+ 3. Open the app via [localhost:3000](http://localhost:3000)
21
+
22
+ ## Use the Docker container locally
23
+
24
+ To make sure that everything is working out, you can run your container locally:
25
+
26
+ 1. [Install Docker](https://docs.docker.com/get-docker/) on your machine
27
+ 2. Go into the `nextjs-docker-starter` folder
28
+ 3. Build your Docker image: `docker build -t nextjs-docker-starter .`.
29
+ 4. Run your Docker container: `docker run -p 3000:3000 nextjs-docker-starter`.
30
+ 5. Open the app via [localhost:3000](http://localhost:3000)
31
+
32
+ ## Dockerize an existing project
33
+
34
+ To add support for Docker to an existing project, just copy the `Dockerfile` into the root of the project and add the following to the `next.config.js` file:
35
+
36
+ ```js
37
+ // next.config.js
38
+ module.exports = {
39
+ // ... rest of the configuration.
40
+ output: "standalone",
41
+ };
42
+ ```
43
+
44
+ This will build the project as a standalone app inside the Docker image.
45
+
46
+ ## Manage your Space via GitHub
47
+
48
+ If you want to use all the features for collaborative development on GitHub, but keep your demo on Spaces, then you can setup a GitHub action that will automatically push changes from GitHub into Spaces.
49
+
50
+ https://huggingface.co/docs/hub/spaces-github-actions
next.config.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ /** @type {import('next').NextConfig} */
2
+ module.exports = {
3
+ output: 'standalone',
4
+ }
package-lock.json ADDED
@@ -0,0 +1,393 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "nextjs-docker-starter",
3
+ "lockfileVersion": 3,
4
+ "requires": true,
5
+ "packages": {
6
+ "": {
7
+ "dependencies": {
8
+ "next": "latest",
9
+ "react": "^18.2.0",
10
+ "react-dom": "^18.2.0"
11
+ }
12
+ },
13
+ "node_modules/@next/env": {
14
+ "version": "13.4.1",
15
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.1.tgz",
16
+ "integrity": "sha512-eD6WCBMFjLFooLM19SIhSkWBHtaFrZFfg2Cxnyl3vS3DAdFRfnx5TY2RxlkuKXdIRCC0ySbtK9JXXt8qLCqzZg=="
17
+ },
18
+ "node_modules/@next/swc-darwin-arm64": {
19
+ "version": "13.4.1",
20
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.1.tgz",
21
+ "integrity": "sha512-eF8ARHtYfnoYtDa6xFHriUKA/Mfj/cCbmKb3NofeKhMccs65G6/loZ15a6wYCCx4rPAd6x4t1WmVYtri7EdeBg==",
22
+ "cpu": [
23
+ "arm64"
24
+ ],
25
+ "optional": true,
26
+ "os": [
27
+ "darwin"
28
+ ],
29
+ "engines": {
30
+ "node": ">= 10"
31
+ }
32
+ },
33
+ "node_modules/@next/swc-darwin-x64": {
34
+ "version": "13.4.1",
35
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.1.tgz",
36
+ "integrity": "sha512-7cmDgF9tGWTgn5Gw+vP17miJbH4wcraMHDCOHTYWkO/VeKT73dUWG23TNRLfgtCNSPgH4V5B4uLHoZTanx9bAw==",
37
+ "cpu": [
38
+ "x64"
39
+ ],
40
+ "optional": true,
41
+ "os": [
42
+ "darwin"
43
+ ],
44
+ "engines": {
45
+ "node": ">= 10"
46
+ }
47
+ },
48
+ "node_modules/@next/swc-linux-arm64-gnu": {
49
+ "version": "13.4.1",
50
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.1.tgz",
51
+ "integrity": "sha512-qwJqmCri2ie8aTtE5gjTSr8S6O8B67KCYgVZhv9gKH44yvc/zXbAY8u23QGULsYOyh1islWE5sWfQNLOj9iryg==",
52
+ "cpu": [
53
+ "arm64"
54
+ ],
55
+ "optional": true,
56
+ "os": [
57
+ "linux"
58
+ ],
59
+ "engines": {
60
+ "node": ">= 10"
61
+ }
62
+ },
63
+ "node_modules/@next/swc-linux-arm64-musl": {
64
+ "version": "13.4.1",
65
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.1.tgz",
66
+ "integrity": "sha512-qcC54tWNGDv/VVIFkazxhqH1Bnagjfs4enzELVRlUOoJPD2BGJTPI7z08pQPbbgxLtRiu8gl2mXvpB8WlOkMeA==",
67
+ "cpu": [
68
+ "arm64"
69
+ ],
70
+ "optional": true,
71
+ "os": [
72
+ "linux"
73
+ ],
74
+ "engines": {
75
+ "node": ">= 10"
76
+ }
77
+ },
78
+ "node_modules/@next/swc-linux-x64-gnu": {
79
+ "version": "13.4.1",
80
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.1.tgz",
81
+ "integrity": "sha512-9TeWFlpLsBosZ+tsm/rWBaMwt5It9tPH8m3nawZqFUUrZyGRfGcI67js774vtx0k3rL9qbyY6+3pw9BCVpaYUA==",
82
+ "cpu": [
83
+ "x64"
84
+ ],
85
+ "optional": true,
86
+ "os": [
87
+ "linux"
88
+ ],
89
+ "engines": {
90
+ "node": ">= 10"
91
+ }
92
+ },
93
+ "node_modules/@next/swc-linux-x64-musl": {
94
+ "version": "13.4.1",
95
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.1.tgz",
96
+ "integrity": "sha512-sNDGaWmSqTS4QRUzw61wl4mVPeSqNIr1OOjLlQTRuyInxMxtqImRqdvzDvFTlDfdeUMU/DZhWGYoHrXLlZXe6A==",
97
+ "cpu": [
98
+ "x64"
99
+ ],
100
+ "optional": true,
101
+ "os": [
102
+ "linux"
103
+ ],
104
+ "engines": {
105
+ "node": ">= 10"
106
+ }
107
+ },
108
+ "node_modules/@next/swc-win32-arm64-msvc": {
109
+ "version": "13.4.1",
110
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.1.tgz",
111
+ "integrity": "sha512-+CXZC7u1iXdLRudecoUYbhbsXpglYv8KFYsFxKBPn7kg+bk7eJo738wAA4jXIl8grTF2mPdmO93JOQym+BlYGA==",
112
+ "cpu": [
113
+ "arm64"
114
+ ],
115
+ "optional": true,
116
+ "os": [
117
+ "win32"
118
+ ],
119
+ "engines": {
120
+ "node": ">= 10"
121
+ }
122
+ },
123
+ "node_modules/@next/swc-win32-ia32-msvc": {
124
+ "version": "13.4.1",
125
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.1.tgz",
126
+ "integrity": "sha512-vIoXVVc7UYO68VwVMDKwJC2+HqAZQtCYiVlApyKEeIPIQpz2gpufzGxk1z3/gwrJt/kJ5CDZjlhYDCzd3hdz+g==",
127
+ "cpu": [
128
+ "ia32"
129
+ ],
130
+ "optional": true,
131
+ "os": [
132
+ "win32"
133
+ ],
134
+ "engines": {
135
+ "node": ">= 10"
136
+ }
137
+ },
138
+ "node_modules/@next/swc-win32-x64-msvc": {
139
+ "version": "13.4.1",
140
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.1.tgz",
141
+ "integrity": "sha512-n8V5ImLQZibKTu10UUdI3nIeTLkliEXe628qxqW9v8My3BAH2a7H0SaCqkV2OgqFnn8sG1wxKYw9/SNJ632kSA==",
142
+ "cpu": [
143
+ "x64"
144
+ ],
145
+ "optional": true,
146
+ "os": [
147
+ "win32"
148
+ ],
149
+ "engines": {
150
+ "node": ">= 10"
151
+ }
152
+ },
153
+ "node_modules/@swc/helpers": {
154
+ "version": "0.5.1",
155
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz",
156
+ "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==",
157
+ "dependencies": {
158
+ "tslib": "^2.4.0"
159
+ }
160
+ },
161
+ "node_modules/busboy": {
162
+ "version": "1.6.0",
163
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
164
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
165
+ "dependencies": {
166
+ "streamsearch": "^1.1.0"
167
+ },
168
+ "engines": {
169
+ "node": ">=10.16.0"
170
+ }
171
+ },
172
+ "node_modules/caniuse-lite": {
173
+ "version": "1.0.30001486",
174
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001486.tgz",
175
+ "integrity": "sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg==",
176
+ "funding": [
177
+ {
178
+ "type": "opencollective",
179
+ "url": "https://opencollective.com/browserslist"
180
+ },
181
+ {
182
+ "type": "tidelift",
183
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
184
+ },
185
+ {
186
+ "type": "github",
187
+ "url": "https://github.com/sponsors/ai"
188
+ }
189
+ ]
190
+ },
191
+ "node_modules/client-only": {
192
+ "version": "0.0.1",
193
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
194
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
195
+ },
196
+ "node_modules/js-tokens": {
197
+ "version": "4.0.0",
198
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
199
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
200
+ },
201
+ "node_modules/loose-envify": {
202
+ "version": "1.4.0",
203
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
204
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
205
+ "dependencies": {
206
+ "js-tokens": "^3.0.0 || ^4.0.0"
207
+ },
208
+ "bin": {
209
+ "loose-envify": "cli.js"
210
+ }
211
+ },
212
+ "node_modules/nanoid": {
213
+ "version": "3.3.6",
214
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
215
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
216
+ "funding": [
217
+ {
218
+ "type": "github",
219
+ "url": "https://github.com/sponsors/ai"
220
+ }
221
+ ],
222
+ "bin": {
223
+ "nanoid": "bin/nanoid.cjs"
224
+ },
225
+ "engines": {
226
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
227
+ }
228
+ },
229
+ "node_modules/next": {
230
+ "version": "13.4.1",
231
+ "resolved": "https://registry.npmjs.org/next/-/next-13.4.1.tgz",
232
+ "integrity": "sha512-JBw2kAIyhKDpjhEWvNVoFeIzNp9xNxg8wrthDOtMctfn3EpqGCmW0FSviNyGgOSOSn6zDaX48pmvbdf6X2W9xA==",
233
+ "dependencies": {
234
+ "@next/env": "13.4.1",
235
+ "@swc/helpers": "0.5.1",
236
+ "busboy": "1.6.0",
237
+ "caniuse-lite": "^1.0.30001406",
238
+ "postcss": "8.4.14",
239
+ "styled-jsx": "5.1.1",
240
+ "zod": "3.21.4"
241
+ },
242
+ "bin": {
243
+ "next": "dist/bin/next"
244
+ },
245
+ "engines": {
246
+ "node": ">=16.8.0"
247
+ },
248
+ "optionalDependencies": {
249
+ "@next/swc-darwin-arm64": "13.4.1",
250
+ "@next/swc-darwin-x64": "13.4.1",
251
+ "@next/swc-linux-arm64-gnu": "13.4.1",
252
+ "@next/swc-linux-arm64-musl": "13.4.1",
253
+ "@next/swc-linux-x64-gnu": "13.4.1",
254
+ "@next/swc-linux-x64-musl": "13.4.1",
255
+ "@next/swc-win32-arm64-msvc": "13.4.1",
256
+ "@next/swc-win32-ia32-msvc": "13.4.1",
257
+ "@next/swc-win32-x64-msvc": "13.4.1"
258
+ },
259
+ "peerDependencies": {
260
+ "@opentelemetry/api": "^1.1.0",
261
+ "fibers": ">= 3.1.0",
262
+ "node-sass": "^6.0.0 || ^7.0.0",
263
+ "react": "^18.2.0",
264
+ "react-dom": "^18.2.0",
265
+ "sass": "^1.3.0"
266
+ },
267
+ "peerDependenciesMeta": {
268
+ "@opentelemetry/api": {
269
+ "optional": true
270
+ },
271
+ "fibers": {
272
+ "optional": true
273
+ },
274
+ "node-sass": {
275
+ "optional": true
276
+ },
277
+ "sass": {
278
+ "optional": true
279
+ }
280
+ }
281
+ },
282
+ "node_modules/picocolors": {
283
+ "version": "1.0.0",
284
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
285
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
286
+ },
287
+ "node_modules/postcss": {
288
+ "version": "8.4.14",
289
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
290
+ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
291
+ "funding": [
292
+ {
293
+ "type": "opencollective",
294
+ "url": "https://opencollective.com/postcss/"
295
+ },
296
+ {
297
+ "type": "tidelift",
298
+ "url": "https://tidelift.com/funding/github/npm/postcss"
299
+ }
300
+ ],
301
+ "dependencies": {
302
+ "nanoid": "^3.3.4",
303
+ "picocolors": "^1.0.0",
304
+ "source-map-js": "^1.0.2"
305
+ },
306
+ "engines": {
307
+ "node": "^10 || ^12 || >=14"
308
+ }
309
+ },
310
+ "node_modules/react": {
311
+ "version": "18.2.0",
312
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
313
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
314
+ "dependencies": {
315
+ "loose-envify": "^1.1.0"
316
+ },
317
+ "engines": {
318
+ "node": ">=0.10.0"
319
+ }
320
+ },
321
+ "node_modules/react-dom": {
322
+ "version": "18.2.0",
323
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
324
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
325
+ "dependencies": {
326
+ "loose-envify": "^1.1.0",
327
+ "scheduler": "^0.23.0"
328
+ },
329
+ "peerDependencies": {
330
+ "react": "^18.2.0"
331
+ }
332
+ },
333
+ "node_modules/scheduler": {
334
+ "version": "0.23.0",
335
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
336
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
337
+ "dependencies": {
338
+ "loose-envify": "^1.1.0"
339
+ }
340
+ },
341
+ "node_modules/source-map-js": {
342
+ "version": "1.0.2",
343
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
344
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
345
+ "engines": {
346
+ "node": ">=0.10.0"
347
+ }
348
+ },
349
+ "node_modules/streamsearch": {
350
+ "version": "1.1.0",
351
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
352
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
353
+ "engines": {
354
+ "node": ">=10.0.0"
355
+ }
356
+ },
357
+ "node_modules/styled-jsx": {
358
+ "version": "5.1.1",
359
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
360
+ "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
361
+ "dependencies": {
362
+ "client-only": "0.0.1"
363
+ },
364
+ "engines": {
365
+ "node": ">= 12.0.0"
366
+ },
367
+ "peerDependencies": {
368
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
369
+ },
370
+ "peerDependenciesMeta": {
371
+ "@babel/core": {
372
+ "optional": true
373
+ },
374
+ "babel-plugin-macros": {
375
+ "optional": true
376
+ }
377
+ }
378
+ },
379
+ "node_modules/tslib": {
380
+ "version": "2.5.0",
381
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
382
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
383
+ },
384
+ "node_modules/zod": {
385
+ "version": "3.21.4",
386
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz",
387
+ "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==",
388
+ "funding": {
389
+ "url": "https://github.com/sponsors/colinhacks"
390
+ }
391
+ }
392
+ }
393
+ }
package.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "private": true,
3
+ "scripts": {
4
+ "dev": "next dev",
5
+ "build": "next build"
6
+ },
7
+ "dependencies": {
8
+ "next": "latest",
9
+ "react": "^18.2.0",
10
+ "react-dom": "^18.2.0"
11
+ }
12
+ }
pages/_app.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ import '../styles/globals.css'
2
+
3
+ function MyApp({ Component, pageProps }) {
4
+ return <Component {...pageProps} />
5
+ }
6
+
7
+ export default MyApp
pages/index.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import Head from 'next/head'
2
+ import styles from '../styles/Home.module.css'
3
+
4
+ export default function Home() {
5
+ return (
6
+ <div className={styles.container}>
7
+ <Head>
8
+ <title>nextjs-docker-starter</title>
9
+ <link rel="icon" href="/favicon.ico" />
10
+ </Head>
11
+
12
+ <main className={styles.main}>
13
+ <h1 className={styles.title}>
14
+ <a href="https://nextjs.org">Next.js</a> in Docker on 🤗 Spaces!
15
+ </h1>
16
+ </main>
17
+
18
+ <footer className={styles.footer}>
19
+ <a
20
+ href="https://failfa.st"
21
+ target="_blank"
22
+ rel="noopener noreferrer"
23
+ >
24
+ Powered by{' '}
25
+ <img src="/failfast.svg" alt="failfast Logo" className={styles.logo} />
26
+ </a>
27
+ </footer>
28
+ </div>
29
+ )
30
+ }
public/failfast.svg ADDED
public/favicon.ico ADDED
styles/Home.module.css ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .container {
2
+ min-height: 100vh;
3
+ padding: 0 0.5rem;
4
+ display: flex;
5
+ flex-direction: column;
6
+ justify-content: center;
7
+ align-items: center;
8
+ }
9
+
10
+ .main {
11
+ padding: 5rem 0;
12
+ flex: 1;
13
+ display: flex;
14
+ flex-direction: column;
15
+ justify-content: center;
16
+ align-items: center;
17
+ }
18
+
19
+ .footer {
20
+ width: 100%;
21
+ height: 100px;
22
+ border-top: 1px solid #eaeaea;
23
+ display: flex;
24
+ justify-content: center;
25
+ align-items: center;
26
+ }
27
+
28
+ .footer img {
29
+ margin-left: 0.5rem;
30
+ }
31
+
32
+ .footer a {
33
+ display: flex;
34
+ justify-content: center;
35
+ align-items: center;
36
+ }
37
+
38
+ .title a {
39
+ color: #0070f3;
40
+ text-decoration: none;
41
+ }
42
+
43
+ .title a:hover,
44
+ .title a:focus,
45
+ .title a:active {
46
+ text-decoration: underline;
47
+ }
48
+
49
+ .title {
50
+ margin: 0;
51
+ line-height: 1.15;
52
+ font-size: 4rem;
53
+ }
54
+
55
+ .title,
56
+ .description {
57
+ text-align: center;
58
+ }
59
+
60
+ .grid {
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: center;
64
+ flex-wrap: wrap;
65
+ max-width: 800px;
66
+ margin-top: 3rem;
67
+ }
68
+
69
+ .logo {
70
+ height: 3em;
71
+ }
72
+
73
+ @media (max-width: 600px) {
74
+ .grid {
75
+ width: 100%;
76
+ flex-direction: column;
77
+ }
78
+ }
styles/globals.css ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ html,
2
+ body {
3
+ padding: 0;
4
+ margin: 0;
5
+ font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
6
+ Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
7
+ }
8
+
9
+ a {
10
+ color: inherit;
11
+ text-decoration: none;
12
+ }
13
+
14
+ * {
15
+ box-sizing: border-box;
16
+ }