feat: integrate @t3-oss/env for environment variable management across the application

This commit is contained in:
tranminhquang
2025-07-15 13:29:16 +07:00
parent 55978c30fa
commit 9d5fb821c7
16 changed files with 118 additions and 37 deletions
+5 -2
View File
@@ -1,5 +1,8 @@
import { createAuthClient } from "better-auth/react";
import { keys } from "./keys";
const { NEXT_PUBLIC_BETTER_AUTH_URL } = keys();
export const { signIn, signUp, useSession } = createAuthClient({
baseURL: process.env.NEXT_PUBLIC_BETTER_AUTH_URL!,
});
baseURL: NEXT_PUBLIC_BETTER_AUTH_URL,
});
+4 -1
View File
@@ -2,4 +2,7 @@
export * from "./server";
// Re-export client auth
export * from "./client";
export * from "./client";
// Re-export keys
export * from "./keys";
+20
View File
@@ -0,0 +1,20 @@
import { createEnv } from "@t3-oss/env-nextjs";
import { z } from "zod";
export const keys = () =>
createEnv({
server: {
BETTER_AUTH_SECRET: z.string(),
GOOGLE_CLIENT_ID: z.string(),
GOOGLE_CLIENT_SECRET: z.string(),
},
client: {
NEXT_PUBLIC_BETTER_AUTH_URL: z.string().url(),
},
runtimeEnv: {
NEXT_PUBLIC_BETTER_AUTH_URL: process.env.NEXT_PUBLIC_BETTER_AUTH_URL,
BETTER_AUTH_SECRET: process.env.BETTER_AUTH_SECRET,
GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID,
GOOGLE_CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET,
},
});
+7 -4
View File
@@ -1,13 +1,16 @@
import { betterAuth } from "better-auth";
import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { db } from "@opencut/db";
import { keys } from "./keys";
const { NEXT_PUBLIC_BETTER_AUTH_URL, BETTER_AUTH_SECRET, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET } = keys()
export const auth = betterAuth({
database: drizzleAdapter(db, {
provider: "pg",
usePlural: true,
}),
secret: process.env.BETTER_AUTH_SECRET,
secret: BETTER_AUTH_SECRET,
user: {
deleteUser: {
enabled: true,
@@ -18,11 +21,11 @@ export const auth = betterAuth({
},
socialProviders: {
google: {
clientId: process.env.GOOGLE_CLIENT_ID as string,
clientSecret: process.env.GOOGLE_CLIENT_SECRET as string,
clientId: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
},
},
baseURL: process.env.NEXT_PUBLIC_BETTER_AUTH_URL,
baseURL: NEXT_PUBLIC_BETTER_AUTH_URL,
appName: "OpenCut",
trustedOrigins: ["http://localhost:3000"],
});