feat: subscription tiers, branch-with-manager flow, platform command center

This commit is contained in:
EOH Developer
2026-10-05 10:20:04 -07:00
parent 04e3051eb6
commit fa375bde91
19 changed files with 958 additions and 75 deletions
+19 -1
View File
@@ -4,6 +4,8 @@ import { User } from "@/lib/server/models/User";
import { Branch } from "@/lib/server/models/Branch";
import { Business } from "@/lib/server/models/Business";
import { getAuth } from "@/lib/server/auth";
import { isPlatformAdminEmail } from "@/lib/server/platform";
import { TIERS, type TierId, type SubscriptionStatus } from "@/lib/tiers";
export const runtime = "nodejs";
export const dynamic = "force-dynamic";
@@ -19,6 +21,11 @@ export async function GET(req: NextRequest) {
}
const branch = user.branchId ? await Branch.findById(user.branchId).lean() : null;
const business = await Business.findById(user.businessId).lean();
const tier = (business?.tier as TierId) ?? "STARTER";
const status = (business?.subscriptionStatus as SubscriptionStatus) ?? "TRIALING";
const tierDef = TIERS[tier];
return NextResponse.json({
user: {
id: user._id,
@@ -30,6 +37,17 @@ export async function GET(req: NextRequest) {
branchName: branch?.branchName ?? null,
phoneNumber: user.phoneNumber,
email: user.email,
isPlatformAdmin: isPlatformAdminEmail(user.email),
},
subscription: {
tier,
tierName: tierDef.name,
priceKsh: tierDef.priceKsh,
status,
trialEndsAt: business?.trialEndsAt ?? null,
currentPeriodEnd: business?.currentPeriodEnd ?? null,
maxBranches: tierDef.maxBranches,
maxUsers: tierDef.maxUsers,
},
});
}
}