feat: remove NEXT_PUBLIC env vars from docker build args (#13)

* feat: add next public envs to runtime

* Commit env vars
This commit is contained in:
Henry
2025-06-03 21:25:57 +01:00
committed by GitHub
parent 37d2ebccf7
commit 0b06f80181
19 changed files with 55 additions and 33 deletions

View File

@@ -2,8 +2,8 @@ import "~/styles/globals.css";
import type { AppType } from "next/app";
import { Plus_Jakarta_Sans } from "next/font/google";
import { env } from "next-runtime-env";
import { env } from "~/env";
import { ModalProvider } from "~/providers/modal";
import { PopupProvider } from "~/providers/popup";
import { ThemeProvider } from "~/providers/theme";
@@ -31,13 +31,14 @@ const MyApp: AppType = ({ Component, pageProps }) => {
position: relative;
}
`}</style>
{env.NEXT_PUBLIC_UMAMI_ID && (
{env("NEXT_PUBLIC_UMAMI_ID") && (
<script
defer
src="https://cloud.umami.is/script.js"
data-website-id={env.NEXT_PUBLIC_UMAMI_ID}
data-website-id={env("NEXT_PUBLIC_UMAMI_ID")}
/>
)}
<script src="/__ENV.js" />
<main className="font-sans">
<ThemeProvider>
<ModalProvider>

View File

@@ -1,4 +1,5 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { env } from "next-runtime-env";
import { createNextApiContext } from "@kan/api/trpc";
import { createStripeClient } from "@kan/stripe";
@@ -22,7 +23,7 @@ export default async function handler(
const session = await stripe.billingPortal.sessions.create({
customer: user.stripeCustomerId,
return_url: `${process.env.NEXT_PUBLIC_BASE_URL}/settings`,
return_url: `${env("NEXT_PUBLIC_BASE_URL")}/settings`,
});
return res.status(200).json({ url: session.url });

View File

@@ -1,4 +1,5 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { env } from "next-runtime-env";
import { z } from "zod";
import { createNextApiContext } from "@kan/api/trpc";
@@ -73,8 +74,8 @@ export default async function handler(
quantity: 1,
},
],
success_url: `${process.env.NEXT_PUBLIC_BASE_URL}${successUrl}`,
cancel_url: `${process.env.NEXT_PUBLIC_BASE_URL}${cancelUrl}`,
success_url: `${env("NEXT_PUBLIC_BASE_URL")}${successUrl}`,
cancel_url: `${env("NEXT_PUBLIC_BASE_URL")}${cancelUrl}`,
customer: user.stripeCustomerId ?? undefined,
metadata: {
workspaceSlug: slug,

View File

@@ -1,10 +1,9 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
import { env } from "next-runtime-env";
import { createNextApiContext } from "@kan/api/trpc";
import { env } from "~/env";
const allowedContentTypes = ["image/jpeg", "image/png"];
@@ -55,7 +54,7 @@ export default async function handler(
// @ts-ignore
client,
new PutObjectCommand({
Bucket: process.env.NEXT_PUBLIC_AVATAR_BUCKET_NAME ?? "",
Bucket: env("NEXT_PUBLIC_AVATAR_BUCKET_NAME") ?? "",
Key: filename,
}),
);

View File

@@ -1,4 +1,4 @@
import { env } from "~/env";
import { env } from "next-runtime-env";
export const formatToArray = (
value: string | string[] | undefined,
@@ -46,5 +46,5 @@ export const formatMemberDisplayName = (
};
export const getAvatarUrl = (key: string) => {
return `${env.NEXT_PUBLIC_STORAGE_URL}/${env.NEXT_PUBLIC_AVATAR_BUCKET_NAME}/${key}`;
return `${env("NEXT_PUBLIC_STORAGE_URL")}/${env("NEXT_PUBLIC_AVATAR_BUCKET_NAME")}/${key}`;
};

View File

@@ -1,7 +1,7 @@
import Image from "next/image";
import { env } from "next-runtime-env";
import { useState } from "react";
import { env } from "~/env";
import { usePopup } from "~/providers/popup";
import { api } from "~/utils/api";
import { getAvatarUrl } from "~/utils/helpers";
@@ -62,7 +62,7 @@ export default function Avatar({
setUploading(true);
const response = await fetch(
env.NEXT_PUBLIC_BASE_URL + "/api/upload/image",
env("NEXT_PUBLIC_BASE_URL") + "/api/upload/image",
{
method: "POST",
headers: {

View File

@@ -1,3 +1,4 @@
import { env } from "next-runtime-env";
import { HiMiniArrowTopRightOnSquare } from "react-icons/hi2";
import Button from "~/components/Button";
@@ -95,7 +96,7 @@ export default function SettingsPage() {
/>
</div>
{process.env.NEXT_PUBLIC_KAN_ENV === "cloud" && (
{env("NEXT_PUBLIC_KAN_ENV") === "cloud" && (
<div className="mb-8 border-t border-light-300 dark:border-dark-300">
<h2 className="mb-4 mt-8 text-[14px] text-neutral-900 dark:text-dark-1000">
Billing