Fix Docker deployment issues and add CasaOS configuration

- Add missing Firebase Admin environment variables to docker-compose.yml
- Update CasaOS configuration with gracious_eldan naming
- Fix Firebase admin initialization for build-time compatibility
- Add missing component imports in main page
- Fix TypeScript compilation errors in API routes
- Update port mapping to 3050 for CasaOS deployment
This commit is contained in:
nmemmert committed 2025-12-18 08:06:05 -05:00
1 parent 27d02596d1
commit 7293dbdc34
5 files changed
+48 -15

No files matched your search

+7 -2
View File
@@ -1,5 +1,4 @@
import { NextRequest, NextResponse } from 'next/server';
import { admin } from '@/lib/firebase-admin';
import nodemailer from 'nodemailer';
function generatePrayerEmailHTML(message: string, subject: string) {
@@ -299,9 +298,11 @@ function generatePrayerEmailHTML(message: string, subject: string) {
export async function GET() {
try {
// Dynamically import Firebase admin to avoid build-time initialization issues
const { admin } = await import('@/lib/firebase-admin');
console.log('🔄 Checking for scheduled emails...');
// Get SMTP config using Firebase Admin SDK
const configDoc = await admin.firestore().collection('config').doc('smtp').get();
if (!configDoc.exists) {
console.log('❌ SMTP configuration not found');
@@ -309,6 +310,10 @@ export async function GET() {
}
const smtpConfig = configDoc.data();
if (!smtpConfig) {
console.log('❌ SMTP configuration data is empty');
return NextResponse.json({ message: 'SMTP configuration data is empty' }, { status: 500 });
}
// Create transporter
const transporter = nodemailer.createTransport({
+3
View File
@@ -7,6 +7,9 @@ import Navbar from '@/components/Navbar';
import LoadingSkeleton from '@/components/LoadingSkeleton';
import PrayerChain from '@/components/PrayerChain';
import SharePrayer from '@/components/SharePrayer';
import PrayerTemplatesManager from '@/components/PrayerTemplatesManager';
import PrayerGoalsManager from '@/components/PrayerGoalsManager';
import EmailTemplatesManager from '@/components/EmailTemplatesManager';
import { db } from '@/lib/firebase';
import { doc, setDoc, collection, addDoc, getDocs, updateDoc, query, where, getDoc } from 'firebase/firestore';
import emailjs from '@emailjs/browser';
+14 -7
View File
@@ -1,13 +1,20 @@
import * as admin from 'firebase-admin';
if (!admin.apps.length) {
admin.initializeApp({
credential: admin.credential.cert({
projectId: process.env.FIREBASE_PROJECT_ID,
privateKey: process.env.FIREBASE_PRIVATE_KEY?.replace(/\\n/g, '\n'),
clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
}),
});
// Only initialize if we have the required environment variables
if (process.env.FIREBASE_PROJECT_ID && process.env.FIREBASE_PRIVATE_KEY && process.env.FIREBASE_CLIENT_EMAIL) {
admin.initializeApp({
credential: admin.credential.cert({
projectId: process.env.FIREBASE_PROJECT_ID,
privateKey: process.env.FIREBASE_PRIVATE_KEY?.replace(/\\n/g, '\n'),
clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
}),
});
} else {
// For build time or when env vars are not available, initialize with default credentials
// This will work for client-side operations but may not work for admin operations
admin.initializeApp();
}
}
export { admin };