karensboutique-shared
v1.0.8
Published
Shared utilities for Karen's Boutique main and admin sites
Maintainers
Readme
@karensboutique/shared
Shared utilities and services for Karen's Boutique main and admin applications.
Installation
npm install @karensboutique/sharedUsage
Firebase Configuration
import { initializeFirebase, createFirebaseConfig } from '@karensboutique/shared';
// Initialize with custom config
const config = createFirebaseConfig();
const { app, auth, db, storage } = initializeFirebase({ config });
// Or use default instance
import { auth, db, storage } from '@karensboutique/shared';Email Service
import { emailService } from '@karensboutique/shared';
// Send welcome email
await emailService.sendWelcomeEmail({
name: 'John Doe',
email: '[email protected]'
});
// Send order confirmation
await emailService.sendOrderConfirmation({
customerName: 'John Doe',
customerEmail: '[email protected]',
orderId: 'ORD-123',
orderDate: new Date().toISOString(),
items: [...],
total: 1500,
shippingAddress: {...},
paymentMethod: 'card'
});Cart Recovery
import { getRecoveryEmailTemplate } from '@karensboutique/shared';
const emailHtml = getRecoveryEmailTemplate({
userEmail: '[email protected]',
cartId: 'cart-123',
items: [...],
totalValue: 2500,
abandonedAt: Date.now(),
recoveryLink: 'https://site.com/cart?recovery=cart-123'
});Firebase Admin
import { adminDb, isAdminAvailable } from '@karensboutique/shared';
if (isAdminAvailable()) {
const doc = await adminDb.collection('users').doc('user-id').get();
}TypeScript Types
import type {
User,
Product,
Order,
CartItem,
EmailTemplate
} from '@karensboutique/shared';
const user: User = {
uid: 'user-123',
email: '[email protected]',
displayName: 'John Doe',
// ... other properties
};Environment Variables
The shared package expects these environment variables:
Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
NEXT_PUBLIC_FIREBASE_APP_ID=
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=Firebase Admin (Server-side only)
FIREBASE_SERVICE_ACCOUNT_KEY=Email Service
RESEND_API_KEY=
FROM_EMAIL=Site Configuration
NEXT_PUBLIC_SITE_URL=Features
- Firebase Integration: Pre-configured Firebase client and admin SDK
- Email Service: Complete email service with beautiful HTML templates
- Cart Recovery: Abandoned cart email templates and utilities
- TypeScript Support: Full TypeScript definitions for all data types
- Environment Validation: Automatic validation of required environment variables
- Error Handling: Comprehensive error handling and logging
License
MIT
