Updated code so it doenst build on server

This commit is contained in:
2025-09-05 13:35:48 +02:00
parent 778dcd8eb4
commit 700fa40416
8 changed files with 22 additions and 10 deletions

View File

@@ -7,6 +7,8 @@ RUN bun i --frozen-lockfile
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
ENV NODE_ENV=production
ENV DOCKER=1
RUN bun run build
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs && chown -R nextjs:nodejs .
@@ -15,4 +17,4 @@ EXPOSE 3000
ENV PORT=3000
ENV HOSTNAME="0.0.0.0"
CMD ["bun", "container:build"]
CMD ["bun", "container"]

View File

@@ -23,6 +23,7 @@
"date-fns": "^4.1.0",
"drizzle-orm": "^0.44.4",
"lucide-react": "^0.539.0",
"motion": "^12.23.12",
"next": "15.4.6",
"next-themes": "^0.4.6",
"postgres": "^3.4.7",
@@ -674,6 +675,8 @@
"for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="],
"framer-motion": ["framer-motion@12.23.12", "", { "dependencies": { "motion-dom": "^12.23.12", "motion-utils": "^12.23.6", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-6e78rdVtnBvlEVgu6eFEAgG9v3wLnYEboM8I5O5EXvfKC8gxGQB8wXJdhkMy10iVcn05jl6CNw7/HTsTCfwcWg=="],
"function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
"function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="],
@@ -860,6 +863,12 @@
"mkdirp": ["mkdirp@3.0.1", "", { "bin": { "mkdirp": "dist/cjs/src/bin.js" } }, "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg=="],
"motion": ["motion@12.23.12", "", { "dependencies": { "framer-motion": "^12.23.12", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-8jCD8uW5GD1csOoqh1WhH1A6j5APHVE15nuBkFeRiMzYBdRwyAHmSP/oXSuW0WJPZRXTFdBoG4hY9TFWNhhwng=="],
"motion-dom": ["motion-dom@12.23.12", "", { "dependencies": { "motion-utils": "^12.23.6" } }, "sha512-RcR4fvMCTESQBD/uKQe49D5RUeDOokkGRmz4ceaJKDBgHYtZtntC/s2vLvY38gqGaytinij/yi3hMcWVcEF5Kw=="],
"motion-utils": ["motion-utils@12.23.6", "", {}, "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ=="],
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
"nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],

View File

@@ -14,8 +14,7 @@
"db:push": "drizzle-kit push",
"db:up": "docker compose -f dev-db.yml up -d",
"db:down": "docker compose -f dev-db.yml down",
"container": "bun db:migrate && bun start",
"container:build": "bun run build && bun db:migrate && bun start"
"container": "bun db:migrate && bun start"
},
"dependencies": {
"@hookform/resolvers": "^5.2.1",
@@ -37,6 +36,7 @@
"date-fns": "^4.1.0",
"drizzle-orm": "^0.44.4",
"lucide-react": "^0.539.0",
"motion": "^12.23.12",
"next": "15.4.6",
"next-themes": "^0.4.6",
"postgres": "^3.4.7",

View File

@@ -98,7 +98,7 @@ export default function UserProfile() {
const userUpdateSchema = z.object({
name: z.string().min(1),
image: z.string().url().optional()
image: z.url().optional()
})
function UserUpdateForm({ name, image, email }: z.infer<typeof userUpdateSchema> & { email: string }) {

View File

@@ -3,7 +3,7 @@ import { z } from "zod"
export const env = createEnv({
client: {
NEXT_PUBLIC_BASE_URL: z.string().url()
NEXT_PUBLIC_BASE_URL: z.url().default("https://l.mairimashita.org")
},
runtimeEnv: {
NEXT_PUBLIC_BASE_URL: process.env.NEXT_PUBLIC_BASE_URL

View File

@@ -26,5 +26,6 @@ export const env = createEnv({
})
},
experimental__runtimeEnv: process.env,
emptyStringAsUndefined: true
emptyStringAsUndefined: true,
skipValidation: process.env.DOCKER === "1"
})

View File

@@ -3,7 +3,7 @@ import { z } from "zod"
import { env } from "./env/server"
const gravatarSchema = z.object({
avatar_url: z.string().url()
avatar_url: z.url()
})
export async function getGravatar(email: string) {

View File

@@ -1,12 +1,12 @@
import { z } from "zod"
export const urlFormSchema = z.object({
url: z.string().url("Please enter a valid URL"),
url: z.url("Please enter a valid URL"),
slug: z.string().max(10, "Slug must be 10 characters or less")
})
export const advancedUrlSchema = z.object({
url: z.string().url("Please enter a valid URL"),
url: z.url("Please enter a valid URL"),
slug: z.string().max(10, "Slug must be 10 characters or less").transform(v => v.trim() === "" ? null : v).nullable(),
title: z.string().max(100, "Title must be 100 characters or less").transform(v => v.trim() === "" ? null : v).nullable(),
maxVisits: z.number().int().positive().nullable(),
@@ -16,7 +16,7 @@ export const advancedUrlSchema = z.object({
})
export const editUrlSchema = z.object({
url: z.string().url("Please enter a valid URL"),
url: z.url("Please enter a valid URL"),
slug: z.string().min(1).max(10, "Slug must be 10 characters or less"),
title: z.string().max(100, "Title must be 100 characters or less").transform(v => v.trim() === "" ? null : v).nullable(),
maxVisits: z.number().int().positive().nullable(),