import { betterAuth } from "better-auth";
import { APP_NAME, DEFAULT_AVATAR, DEFAULT_LANGUAGE } from "@/config/constants";
import { ConvexHttpClient } from "convex/browser";
import { convexAdapter } from "@better-auth-kit/convex";
import { stripe } from "@better-auth/stripe";
import Stripe from "stripe";
const convexClient = new ConvexHttpClient(import.meta.env.VITE_CONVEX_URL);
const stripeClient = new Stripe(import.meta.env.VITE_STRIPE_SECRET_KEY);
export const AUTH_PROVIDERS = {
CREDENTIAL: "credential",
APPLE: "apple",
GOOGLE: "google",
} as const;
export const auth = betterAuth({
appName: APP_NAME,
secret: import.meta.env.VITE_BETTER_AUTH_SECRET,
baseURL: import.meta.env.VITE_BETTER_AUTH_URL,
database: convexAdapter(convexClient),
plugins: [
stripe({
stripeClient,
stripeWebhookSecret: import.meta.env.VITE_STRIPE_WEBHOOKS_ENDPOINT_SECRET,
createCustomerOnSignUp: true,
subscription: {
enabled: true,
plans: [
{
name: "monthly", // the name of the plan, it'll be automatically lower cased when stored in the database
priceId: import.meta.env.VITE_STRIPE_MONTHLY_PRICE_ID, // the price id from stripe
},
{
name: "yearly",
priceId: import.meta.env.VITE_STRIPE_YEARLY_PRICE_ID,
},
],
},
}),
],
import { betterAuth } from "better-auth";
import { APP_NAME, DEFAULT_AVATAR, DEFAULT_LANGUAGE } from "@/config/constants";
import { ConvexHttpClient } from "convex/browser";
import { convexAdapter } from "@better-auth-kit/convex";
import { stripe } from "@better-auth/stripe";
import Stripe from "stripe";
const convexClient = new ConvexHttpClient(import.meta.env.VITE_CONVEX_URL);
const stripeClient = new Stripe(import.meta.env.VITE_STRIPE_SECRET_KEY);
export const AUTH_PROVIDERS = {
CREDENTIAL: "credential",
APPLE: "apple",
GOOGLE: "google",
} as const;
export const auth = betterAuth({
appName: APP_NAME,
secret: import.meta.env.VITE_BETTER_AUTH_SECRET,
baseURL: import.meta.env.VITE_BETTER_AUTH_URL,
database: convexAdapter(convexClient),
plugins: [
stripe({
stripeClient,
stripeWebhookSecret: import.meta.env.VITE_STRIPE_WEBHOOKS_ENDPOINT_SECRET,
createCustomerOnSignUp: true,
subscription: {
enabled: true,
plans: [
{
name: "monthly", // the name of the plan, it'll be automatically lower cased when stored in the database
priceId: import.meta.env.VITE_STRIPE_MONTHLY_PRICE_ID, // the price id from stripe
},
{
name: "yearly",
priceId: import.meta.env.VITE_STRIPE_YEARLY_PRICE_ID,
},
],
},
}),
],