diff --git a/.dockerignore b/.dockerignore
index 72c41e1..283129d 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -3,6 +3,7 @@
!src/
!bun.lockb
!bunfig.toml
+!LICENSE
!next.config.js
!package.json
!tsconfig.json
\ No newline at end of file
diff --git a/.env.example b/.env.example
deleted file mode 100644
index fd2fa8e..0000000
--- a/.env.example
+++ /dev/null
@@ -1 +0,0 @@
-API_URL=
\ No newline at end of file
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..e045074
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,197 @@
+# Default
+* text=auto
+
+# Source code
+*.bash text eol=lf
+*.bat text eol=crlf
+*.cmd text eol=crlf
+*.coffee text
+*.css text diff=css
+*.htm text diff=html
+*.html text diff=html
+*.inc text
+*.ini text
+*.js text
+*.mjs text
+*.cjs text
+*.json text
+*.jsx text
+*.less text
+*.ls text
+*.map text -diff
+*.od text
+*.onlydata text
+*.php text diff=php
+*.pl text
+*.ps1 text eol=crlf
+*.py text diff=python
+*.rb text diff=ruby
+*.sass text
+*.scm text
+*.scss text diff=css
+*.sh text eol=lf
+.husky/* text eol=lf
+*.sql text
+*.styl text
+*.tag text
+*.ts text
+*.tsx text
+*.xml text
+*.xhtml text diff=html
+
+# Docker
+Dockerfile text
+
+# Documentation
+*.ipynb text eol=lf
+*.markdown text diff=markdown
+*.md text diff=markdown
+*.mdwn text diff=markdown
+*.mdown text diff=markdown
+*.mkd text diff=markdown
+*.mkdn text diff=markdown
+*.mdtxt text
+*.mdtext text
+*.txt text
+AUTHORS text
+CHANGELOG text
+CHANGES text
+CONTRIBUTING text
+COPYING text
+copyright text
+*COPYRIGHT* text
+INSTALL text
+license text
+LICENSE text
+NEWS text
+readme text
+*README* text
+
+# Templates
+*.dot text
+*.ejs text
+*.erb text
+*.haml text
+*.handlebars text
+*.hbs text
+*.hbt text
+*.jade text
+*.latte text
+*.mustache text
+*.njk text
+*.phtml text
+*.svelte text
+*.tmpl text
+*.tpl text
+*.twig text
+*.vue text
+
+# Configs
+*.cnf text
+*.conf text
+*.config text
+.editorconfig text
+.env text
+.gitattributes text
+.gitconfig text
+.htaccess text
+*.lock text -diff
+*.lockb binary diff=lockb
+package.json text eol=lf
+package-lock.json text eol=lf -diff
+pnpm-lock.yaml text eol=lf -diff
+.prettierrc text
+yarn.lock text -diff
+*.toml text
+*.yaml text
+*.yml text
+browserslist text
+Makefile text
+makefile text
+tsconfig.json linguist-language=JSON-with-Comments
+
+# Heroku
+Procfile text
+
+# Graphics
+*.ai binary
+*.bmp binary
+*.eps binary
+*.gif binary
+*.gifv binary
+*.ico binary
+*.jng binary
+*.jp2 binary
+*.jpg binary
+*.jpeg binary
+*.jpx binary
+*.jxr binary
+*.pdf binary
+*.png binary
+*.psb binary
+*.psd binary
+*.svg text
+*.svgz binary
+*.tif binary
+*.tiff binary
+*.wbmp binary
+*.webp binary
+
+# Audio
+*.kar binary
+*.m4a binary
+*.mid binary
+*.midi binary
+*.mp3 binary
+*.ogg binary
+*.ra binary
+
+# Video
+*.3gpp binary
+*.3gp binary
+*.as binary
+*.asf binary
+*.asx binary
+*.avi binary
+*.fla binary
+*.flv binary
+*.m4v binary
+*.mng binary
+*.mov binary
+*.mp4 binary
+*.mpeg binary
+*.mpg binary
+*.ogv binary
+*.swc binary
+*.swf binary
+*.webm binary
+
+# Archives
+*.7z binary
+*.gz binary
+*.jar binary
+*.rar binary
+*.tar binary
+*.zip binary
+
+# Fonts
+*.ttf binary
+*.eot binary
+*.otf binary
+*.woff binary
+*.woff2 binary
+
+# Executables
+*.exe binary
+*.pyc binary
+**/.yarn/releases/** binary
+**/.yarn/plugins/** binary
+
+# RC files (like .babelrc or .eslintrc)
+*.*rc text
+
+# Ignore files (like .npmignore or .gitignore)
+*.*ignore text
+
+# Prevents massive diffs from built files
+dist/* binary
\ No newline at end of file
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 0f2ce04..a42e059 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,9 +1,9 @@
version: 2
updates:
- package-ecosystem: github-actions
- directory: '/'
+ directory: /
target-branch: dev
schedule:
- interval: daily
+ interval: weekly
labels:
- dependency:gha
\ No newline at end of file
diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml
deleted file mode 100644
index eeac4b9..0000000
--- a/.github/workflows/container.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-name: 'CD -> Container'
-on:
- workflow_dispatch:
- push:
- branches:
- - stable
-
-concurrency:
- group: '${{ github.workflow }}-${{ github.ref }}'
- cancel-in-progress: false
-
-permissions:
- contents: read
-
-jobs:
- build:
- if: ${{ github.repository_owner == 'jspaste' }}
- name: 'Build container image'
- runs-on: ubuntu-latest
- permissions:
- packages: write
-
- steps:
- - name: 'Harden Runner'
- uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
- with:
- egress-policy: audit
-
- - name: 'Checkout'
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
-
- - name: 'Setup QEMU'
- run: |
- sudo apt-get update
- sudo apt-get install -y qemu-user-static
-
- - name: 'Setup tags'
- id: setup-tags
- run: |
- TIMESTAMP="$(date +%Y.%m.%d)"
- SHA_SHORT="${GITHUB_SHA::7}"
-
- TAGS=()
- TAGS+=("latest")
- TAGS+=("${GITHUB_SHA}")
- TAGS+=("${TIMESTAMP}-${SHA_SHORT}")
-
- echo "build-tags=${TAGS[*]}" >> $GITHUB_OUTPUT
-
- - name: 'Build image'
- id: build-image
- uses: redhat-actions/buildah-build@7a95fa7ee0f02d552a32753e7414641a04307056 # v2.13
- with:
- archs: amd64, arm64
- containerfiles: Dockerfile
- image: ${{ github.repository }}
- layers: true
- oci: true
- tags: ${{ steps.setup-tags.outputs.build-tags }}
-
- - name: 'Push to GHCR'
- uses: redhat-actions/push-to-registry@9986a6552bc4571882a4a67e016b17361412b4df # v2.7.1
- with:
- image: ${{ steps.build-image.outputs.image }}
- tags: ${{ steps.build-image.outputs.tags }}
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..6c247ca
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,105 @@
+name: "CD -> Release"
+on:
+ workflow_dispatch:
+ inputs:
+ image-action:
+ description: "Container image action"
+ type: choice
+ required: true
+ default: "none"
+ options:
+ - "none"
+ - "build"
+ - "build-release"
+
+concurrency:
+ group: "${{ github.workflow }}-${{ github.ref }}"
+ cancel-in-progress: false
+
+permissions:
+ contents: read
+
+jobs:
+ container:
+ if: ${{ github.repository_owner == 'jspaste' && inputs.image-action != 'none' }}
+ name: "Build container image"
+ runs-on: ubuntu-latest
+ env:
+ REGISTRY: ghcr.io
+
+ permissions:
+ attestations: write
+ id-token: write
+ packages: write
+
+ steps:
+ - name: "Harden Runner"
+ uses: step-security/harden-runner@a4aa98b93cab29d9b1101a6143fb8bce00e2eac4 # v2.7.1
+ with:
+ egress-policy: audit
+
+ - name: "Setup QEMU"
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y qemu-user-static
+
+ - name: "Setup tags"
+ id: tags-image
+ run: |
+ TIMESTAMP="$(date +%Y.%m.%d)"
+ GITHUB_SHA_SHORT="${GITHUB_SHA::7}"
+
+ TAGS=()
+
+ if [[ "${GITHUB_REF}" == "refs/heads/stable" ]]; then
+ TAGS+=("latest")
+ else
+ TAGS+=("snapshot")
+ fi
+
+ TAGS+=("${GITHUB_SHA}")
+ TAGS+=("${TIMESTAMP}-${GITHUB_SHA_SHORT}")
+
+ echo "tags=${TAGS[*]}" >>"$GITHUB_OUTPUT"
+
+ - name: "Checkout"
+ uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
+ with:
+ persist-credentials: false
+
+ - name: "Build image"
+ id: build-image
+ uses: redhat-actions/buildah-build@7a95fa7ee0f02d552a32753e7414641a04307056 # v2.13
+ with:
+ archs: amd64, arm64
+ containerfiles: Dockerfile
+ image: ${{ github.repository }}
+ layers: true
+ oci: true
+ tags: ${{ steps.tags-image.outputs.tags }}
+ extra-args: --squash
+
+ - if: ${{ inputs.image-action == 'build-release' }}
+ name: "Login to GHCR"
+ uses: redhat-actions/podman-login@4934294ad0449894bcd1e9f191899d7292469603 # v1.7
+ with:
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+ registry: ${{ env.REGISTRY }}
+
+ - if: ${{ inputs.image-action == 'build-release' }}
+ name: "Push to GHCR"
+ id: push-image
+ uses: redhat-actions/push-to-registry@5ed88d269cf581ea9ef6dd6806d01562096bee9c # v2.8
+ with:
+ image: ${{ steps.build-image.outputs.image }}
+ tags: ${{ steps.build-image.outputs.tags }}
+ registry: ${{ env.REGISTRY }}
+
+ - if: ${{ inputs.image-action == 'build-release' }}
+ name: "Attest image"
+ uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2
+ with:
+ subject-name: "${{ env.REGISTRY }}/${{ steps.build-image.outputs.image }}"
+ subject-digest: ${{ steps.push-image.outputs.digest }}
+ push-to-registry: false
\ No newline at end of file
diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml
index 45c823f..a080d6b 100644
--- a/.github/workflows/security.yml
+++ b/.github/workflows/security.yml
@@ -1,5 +1,6 @@
name: 'CI -> Security'
on:
+ branch_protection_rule:
schedule:
- cron: '33 3 * * 1'
@@ -34,20 +35,22 @@ jobs:
steps:
- name: 'Harden Runner'
- uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
+ uses: step-security/harden-runner@a4aa98b93cab29d9b1101a6143fb8bce00e2eac4 # v2.7.1
with:
egress-policy: audit
- name: 'Checkout'
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
+ uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
+ with:
+ persist-credentials: false
- name: 'Setup CodeQL'
- uses: github/codeql-action/init@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10
+ uses: github/codeql-action/init@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5
with:
languages: ${{ matrix.language }}
- name: 'Run analysis'
- uses: github/codeql-action/analyze@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10
+ uses: github/codeql-action/analyze@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5
with:
category: '/language:${{ matrix.language }}'
@@ -60,23 +63,23 @@ jobs:
steps:
- name: 'Harden Runner'
- uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
+ uses: step-security/harden-runner@a4aa98b93cab29d9b1101a6143fb8bce00e2eac4 # v2.7.1
with:
egress-policy: audit
- name: 'Checkout'
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
+ uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
persist-credentials: false
- name: 'Run analysis'
- uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1
+ uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3
with:
results_file: scoreboard.sarif
results_format: sarif
publish_results: true
- name: 'Upload to code-scanning'
- uses: github/codeql-action/upload-sarif@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10
+ uses: github/codeql-action/upload-sarif@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5
with:
sarif_file: scoreboard.sarif
\ No newline at end of file
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index c7d0f5d..a287810 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -28,12 +28,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'Harden Runner'
- uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
+ uses: step-security/harden-runner@a4aa98b93cab29d9b1101a6143fb8bce00e2eac4 # v2.7.1
with:
egress-policy: audit
- name: 'Checkout'
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
+ uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
persist-credentials: false
diff --git a/.gitignore b/.gitignore
index 84e894e..8fedb49 100644
--- a/.gitignore
+++ b/.gitignore
@@ -134,4 +134,4 @@ dist
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
-.pnp.*
+.pnp.*
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 9afe1e4..203d0d8 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,26 +1,28 @@
-# Builder
-FROM docker.io/imbios/bun-node:1.1-21-alpine AS builder
+FROM docker.io/oven/bun:1-alpine AS builder
+WORKDIR /build/
COPY . ./
RUN bun install --production --frozen-lockfile && \
- NEXT_OUTPUT=standalone bun run build
+ bun run build:standalone
-# Runner
-FROM cgr.dev/chainguard/bun:latest
-WORKDIR /home/nonroot
+FROM docker.io/oven/bun:1-distroless
+WORKDIR /frontend/
-COPY --chown=nonroot --from=builder /home/bun/app/.next/standalone ./
-COPY --chown=nonroot --from=builder /home/bun/app/.next/static ./.next/static
-COPY --chown=nonroot --from=builder /home/bun/app/public ./public
+COPY --chown=nonroot --from=builder /build/.next/standalone ./
+COPY --chown=nonroot --from=builder /build/.next/static ./.next/static
+COPY --chown=nonroot --from=builder /build/public ./public
LABEL org.opencontainers.image.url="https://jspaste.eu" \
org.opencontainers.image.source="https://github.com/jspaste/frontend" \
- org.opencontainers.image.title="jspaste-frontend" \
- org.opencontainers.image.description="The frontend for JSPaste, built with Bun and Next.js" \
+ org.opencontainers.image.title="@jspaste/frontend" \
+ org.opencontainers.image.description="The frontend for JSPaste" \
org.opencontainers.image.documentation="https://docs.jspaste.eu" \
org.opencontainers.image.licenses="EUPL-1.2"
-EXPOSE 3000/tcp
+ENV HOSTNAME=127.0.0.1
+ENV PORT=3000
+
+EXPOSE 3000
CMD ["server.js"]
\ No newline at end of file
diff --git a/biome.json b/biome.json
index f188466..195aeee 100644
--- a/biome.json
+++ b/biome.json
@@ -1,13 +1,12 @@
{
- "$schema": "https://biomejs.dev/schemas/1.6.4/schema.json",
+ "$schema": "https://biomejs.dev/schemas/1.7.3/schema.json",
"files": {
- "ignoreUnknown": true,
- "ignore": [".next/", "**/node_modules/"]
+ "ignore": ["./.next/", "**/node_modules/", "./dist/"],
+ "ignoreUnknown": true
},
"formatter": {
"enabled": true,
"formatWithErrors": false,
- "ignore": [".next/", "**/node_modules/"],
"indentStyle": "tab",
"indentWidth": 4,
"lineEnding": "lf",
@@ -33,7 +32,6 @@
},
"linter": {
"enabled": true,
- "ignore": [".next/", "**/node_modules/"],
"rules": {
"recommended": true,
"style": {
diff --git a/bun.lockb b/bun.lockb
index b9f76f4..126925a 100755
Binary files a/bun.lockb and b/bun.lockb differ
diff --git a/bunfig.toml b/bunfig.toml
index 1b6555b..0fe4641 100644
--- a/bunfig.toml
+++ b/bunfig.toml
@@ -1 +1,8 @@
-telemetry = false
\ No newline at end of file
+telemetry = false
+
+[install]
+auto = "disable"
+
+[run]
+bun = true
+silent = true
\ No newline at end of file
diff --git a/next.config.js b/next.config.js
index 83441bf..a252157 100644
--- a/next.config.js
+++ b/next.config.js
@@ -14,9 +14,6 @@ const nextConfig = {
}
]
},
- env: {
- API_URL: process.env.API_URL
- },
async redirects() {
return [
{
@@ -26,8 +23,8 @@ const nextConfig = {
},
{
source: '/favicon.ico',
- destination: '/image/favicon.svg',
- permanent: true
+ destination: '/media/jspaste.bg.rounded.svg',
+ permanent: false
},
{
source: '/:key/raw',
diff --git a/package.json b/package.json
index ec023c9..6e949a4 100644
--- a/package.json
+++ b/package.json
@@ -5,13 +5,16 @@
"license": "EUPL-1.2",
"type": "module",
"scripts": {
- "build": "bun next build",
+ "build": "bun run build:next",
+ "build:next": "bun next build",
+ "build:standalone": "NEXT_OUTPUT=standalone bun run build:next",
"fix": "bun run fix:biome && bun run fix:package",
- "fix:biome": "bun --bun biome check --apply .",
- "fix:package": "bun --bun sort-package-json --quiet",
+ "fix:biome": "bun biome check --apply .",
+ "fix:package": "bun sort-package-json --quiet",
+ "postinstall": "bun next telemetry disable",
"lint": "bun run lint:biome && bun run lint:tsc",
- "lint:biome": "bun --bun biome lint .",
- "lint:tsc": "bun --bun tsc --noEmit",
+ "lint:biome": "bun biome lint .",
+ "lint:tsc": "bun tsc --noEmit",
"start": "bun run build && bun next start",
"start:dev": "bun next dev"
},
@@ -21,23 +24,21 @@
"@chakra-ui/react": "~2.8.2",
"@chakra-ui/system": "~2.6.2",
"@monaco-editor/react": "~4.6.0",
- "@types/bun": "~1.0.12",
- "@types/react": "~18.2.74",
- "@types/react-dom": "~18.2.24",
- "env-var": "~7.4.1",
+ "@types/bun": "~1.1.3",
+ "@types/react": "~18.3.3",
+ "@types/react-dom": "~18.3.0",
"highlight.js": "~11.9.0",
- "million": "~3.0.6",
- "next": "~14.1.4",
- "react": "~18.2.0",
- "react-dom": "~18.2.0",
- "react-icons": "~5.0.1",
- "sharp": "~0.33.3",
- "typescript": "~5.4.4",
+ "million": "~3.1.6",
+ "next": "~14.2.3",
+ "react": "~18.3.1",
+ "react-dom": "~18.3.1",
+ "react-icons": "~5.2.1",
+ "typescript": "~5.4.5",
"zustand": "~4.5.2"
},
"devDependencies": {
- "@biomejs/biome": "~1.6.4",
- "lefthook": "~1.6.8",
+ "@biomejs/biome": "~1.7.3",
+ "lefthook": "~1.6.12",
"sort-package-json": "~2.10.0"
},
"trustedDependencies": [
diff --git a/public/image/favicon.png b/public/image/favicon.png
deleted file mode 100644
index 4f377ca..0000000
Binary files a/public/image/favicon.png and /dev/null differ
diff --git a/public/image/favicon.svg b/public/image/favicon.svg
deleted file mode 100644
index 8e38ef7..0000000
--- a/public/image/favicon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/image/logo.svg b/public/image/logo.svg
deleted file mode 100644
index b7b8e6e..0000000
--- a/public/image/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/image/logo.webp b/public/image/logo.webp
deleted file mode 100644
index f5e9834..0000000
Binary files a/public/image/logo.webp and /dev/null differ
diff --git a/public/image/logo_bg.svg b/public/image/logo_bg.svg
deleted file mode 100644
index 879cb0e..0000000
--- a/public/image/logo_bg.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/image/logo_bg.webp b/public/image/logo_bg.webp
deleted file mode 100644
index d5262a3..0000000
Binary files a/public/image/logo_bg.webp and /dev/null differ
diff --git a/public/media/big/jspaste.bg.rounded.svg b/public/media/big/jspaste.bg.rounded.svg
new file mode 100644
index 0000000..7d860b4
--- /dev/null
+++ b/public/media/big/jspaste.bg.rounded.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/media/big/jspaste.bg.svg b/public/media/big/jspaste.bg.svg
new file mode 100644
index 0000000..64b7b03
--- /dev/null
+++ b/public/media/big/jspaste.bg.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/media/big/jspaste.svg b/public/media/big/jspaste.svg
new file mode 100644
index 0000000..6a5277e
--- /dev/null
+++ b/public/media/big/jspaste.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/media/full/jspaste.bg.svg b/public/media/full/jspaste.bg.svg
new file mode 100644
index 0000000..14e1ab7
--- /dev/null
+++ b/public/media/full/jspaste.bg.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/media/full/jspaste.svg b/public/media/full/jspaste.svg
new file mode 100644
index 0000000..d63f563
--- /dev/null
+++ b/public/media/full/jspaste.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/media/jspaste.bg.rounded.svg b/public/media/jspaste.bg.rounded.svg
new file mode 100644
index 0000000..490f039
--- /dev/null
+++ b/public/media/jspaste.bg.rounded.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/media/jspaste.bg.svg b/public/media/jspaste.bg.svg
new file mode 100644
index 0000000..2b336d4
--- /dev/null
+++ b/public/media/jspaste.bg.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/media/jspaste.png b/public/media/jspaste.png
new file mode 100644
index 0000000..d2d9aa8
Binary files /dev/null and b/public/media/jspaste.png differ
diff --git a/public/media/jspaste.svg b/public/media/jspaste.svg
new file mode 100644
index 0000000..29729e4
--- /dev/null
+++ b/public/media/jspaste.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100644
index 0000000..77470cb
--- /dev/null
+++ b/public/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow: /
\ No newline at end of file
diff --git a/src/app/[documentId]/page.tsx b/src/app/[documentId]/page.tsx
index a8aecf6..5f52315 100644
--- a/src/app/[documentId]/page.tsx
+++ b/src/app/[documentId]/page.tsx
@@ -1,7 +1,6 @@
'use client';
import DocumentScreen from '@/components/screens/DocumentScreen';
-import type { ReactElement } from 'react';
type DocumentViewPageProps = {
params: {
@@ -9,6 +8,6 @@ type DocumentViewPageProps = {
};
};
-export default function DocumentViewPage({ params: { documentId } }: Readonly): ReactElement {
+export default function DocumentViewPage({ params: { documentId } }: Readonly) {
return ;
}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index d3086e4..4f70db7 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -3,7 +3,7 @@
import useThemeValues from '@/hooks/useThemeValues';
import { CacheProvider } from '@chakra-ui/next-js';
import { Box, ChakraProvider, ColorModeScript, extendTheme } from '@chakra-ui/react';
-import type { ReactElement, ReactNode } from 'react';
+import type { ReactNode } from 'react';
const theme = extendTheme({
config: {
@@ -16,7 +16,7 @@ type RootLayoutProps = {
children: ReactNode;
};
-export default function RootLayout({ children }: Readonly): ReactElement {
+export default function RootLayout({ children }: Readonly) {
const { getThemeValue } = useThemeValues();
return (
@@ -31,7 +31,7 @@ export default function RootLayout({ children }: Readonly): Rea
}}
>
- JSPaste - The developer website for easy code sharing.
+ JSPaste - The developer website for easy code sharing
@@ -50,7 +50,7 @@ export default function RootLayout({ children }: Readonly): Rea
property='og:description'
content='Create and share code with JSPaste! The developer website for easy code sharing.'
/>
-
+
): Rea
property='twitter:description'
content='Create and share code with JSPaste! The developer website for easy code sharing.'
/>
-
+
-
-
+
+