VIBN Frontend for Coolify deployment

This commit is contained in:
2026-02-15 19:25:52 -08:00
commit 40bf8428cd
398 changed files with 76513 additions and 0 deletions

77
lib/firebase/admin.ts Normal file
View File

@@ -0,0 +1,77 @@
import * as admin from 'firebase-admin';
// Initialize Firebase Admin SDK
// During build time on Vercel, env vars might not be available, so we skip initialization
const projectId = process.env.FIREBASE_PROJECT_ID;
const clientEmail = process.env.FIREBASE_CLIENT_EMAIL;
const privateKey = process.env.FIREBASE_PRIVATE_KEY?.replace(/\\n/g, '\n');
if (!admin.apps.length) {
// Only initialize if we have credentials (skip during build)
if (projectId && clientEmail && privateKey) {
try {
console.log('[Firebase Admin] Initializing...');
console.log('[Firebase Admin] Project ID:', projectId);
console.log('[Firebase Admin] Client Email:', clientEmail);
console.log('[Firebase Admin] Private Key length:', privateKey?.length);
admin.initializeApp({
credential: admin.credential.cert({
projectId,
clientEmail,
privateKey,
}),
storageBucket: `${projectId}.firebasestorage.app`,
});
console.log('[Firebase Admin] Initialized successfully!');
} catch (error) {
console.error('[Firebase Admin] Initialization failed:', error);
}
} else {
console.log('[Firebase Admin] Skipping initialization - credentials not available (likely build time)');
}
}
// Helper to ensure admin is initialized
function ensureInitialized() {
if (!projectId || !clientEmail || !privateKey) {
throw new Error('Firebase Admin credentials not configured');
}
if (!admin.apps.length) {
// Try to initialize if not done yet
admin.initializeApp({
credential: admin.credential.cert({
projectId,
clientEmail,
privateKey,
}),
storageBucket: `${projectId}.firebasestorage.app`,
});
}
}
// Export admin services with lazy initialization
export function getAdminAuth() {
ensureInitialized();
return admin.auth();
}
export function getAdminDb() {
ensureInitialized();
return admin.firestore();
}
export function getAdminStorage() {
ensureInitialized();
return admin.storage();
}
// Legacy exports for backward compatibility (will work at runtime)
export const adminAuth = admin.apps.length > 0 ? admin.auth() : ({} as any);
export const adminDb = admin.apps.length > 0 ? admin.firestore() : ({} as any);
export const adminStorage = admin.apps.length > 0 ? admin.storage() : ({} as any);
export default admin;