Files
MailComposer/FIREBASE_SETUP.md
gowtham-darkseid 44ea4d2e64 feat: Complete Mail Composer with EmailJS integration
- Rich email composer with formatting tools (bold, italic, underline, links)
- Multi-recipient support (To, CC, BCC fields)
- File attachments with drag & drop support
- Priority levels and email validation
- Draft management with auto-save and cloud sync
- Real email sending via EmailJS integration
- Responsive design for mobile and desktop
- Comprehensive error handling and fallback modes
- Complete documentation and setup guides
- Firebase integration ready for advanced features

Features:
 Real email sending (EmailJS)
 Rich text editor
 File attachments
 Draft management
 Form validation
 Responsive UI
 Error handling
 Documentation
2025-09-09 21:17:46 +05:30

191 lines
4.9 KiB
Markdown

# Firebase Setup Guide for Mail Composer
This guide will help you set up Firebase for your Mail Composer application to send real emails.
## Prerequisites
1. A Google account
2. Node.js installed on your machine
3. Firebase CLI installed globally: `npm install -g firebase-tools`
## Step 1: Create a Firebase Project
1. Go to the [Firebase Console](https://console.firebase.google.com/)
2. Click "Add project"
3. Enter a project name (e.g., "mail-composer")
4. Enable Google Analytics (optional)
5. Create the project
## Step 2: Enable Firestore Database
1. In your Firebase project console, go to "Firestore Database"
2. Click "Create database"
3. Choose "Start in test mode" for now
4. Select a location for your database
## Step 3: Set up Firebase Functions
1. In the Firebase console, go to "Functions"
2. Click "Get started"
3. This will enable the Cloud Functions API
## Step 4: Configure Email Service
### Option A: Gmail (Recommended for development)
1. Enable 2-factor authentication on your Gmail account
2. Generate an App Password:
- Go to Google Account settings
- Security → 2-Step Verification → App passwords
- Generate a password for "Mail"
- Save this password securely
### Option B: Other Email Providers
Configure SMTP settings for your email provider (SendGrid, Mailgun, etc.)
## Step 5: Configure Your Local Environment
1. Copy the environment file:
```bash
cp .env.example .env
```
2. Get your Firebase configuration:
- In Firebase console, go to Project Settings (gear icon)
- Scroll down to "Your apps"
- Click the web icon `</>`
- Register your app with a nickname
- Copy the config object values
3. Update your `.env` file with the Firebase config values:
```
VITE_FIREBASE_API_KEY=your-actual-api-key
VITE_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your-actual-project-id
VITE_FIREBASE_STORAGE_BUCKET=your-project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your-actual-sender-id
VITE_FIREBASE_APP_ID=your-actual-app-id
```
## Step 6: Deploy Firebase Functions
1. Login to Firebase CLI:
```bash
firebase login
```
2. Initialize Firebase in your project:
```bash
firebase init
```
- Select "Functions", "Firestore", and "Hosting"
- Choose your existing project
- Accept defaults for most options
3. Install function dependencies:
```bash
cd functions
npm install
cd ..
```
4. Set environment variables for functions:
```bash
firebase functions:config:set gmail.user="your-email@gmail.com"
firebase functions:config:set gmail.password="your-app-password"
```
5. Deploy functions:
```bash
firebase deploy --only functions
```
## Step 7: Update Firestore Security Rules
1. Go to Firestore Database → Rules
2. Replace the rules with the content from `firestore.rules`
3. Publish the rules
## Step 8: Test the Application
1. Start your development server:
```bash
npm run dev
```
2. Open the application and try sending a test email
## Alternative Email Services
### SendGrid
```javascript
// In functions/index.js, replace the transporter with:
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
```
### Mailgun
```javascript
// In functions/index.js, replace the transporter with:
const formData = require('form-data');
const Mailgun = require('mailgun.js');
const mailgun = new Mailgun(formData);
const mg = mailgun.client({
username: 'api',
key: process.env.MAILGUN_API_KEY,
url: 'https://api.mailgun.net' // or 'https://api.eu.mailgun.net'
});
```
## Security Considerations
1. **Never commit your `.env` file** - it's already in `.gitignore`
2. **Use Firebase Security Rules** to protect your Firestore data
3. **Implement user authentication** for production use
4. **Set rate limits** in Firebase Functions to prevent abuse
5. **Validate all inputs** on both client and server side
## Troubleshooting
### Common Issues
1. **"Permission denied" errors**
- Check your Firestore security rules
- Ensure your Firebase project is properly configured
2. **Email sending fails**
- Verify your email credentials
- Check Firebase Functions logs: `firebase functions:log`
- Ensure "Less secure app access" is disabled and App Password is used
3. **"Function not found" errors**
- Ensure functions are deployed: `firebase deploy --only functions`
- Check function names match in your code
4. **CORS errors**
- Functions should handle CORS automatically
- Check browser developer console for specific errors
### Getting Help
- Check Firebase Functions logs: `firebase functions:log`
- View Firestore data in the Firebase console
- Check browser developer console for client-side errors
## Production Deployment
1. Build the application:
```bash
npm run build
```
2. Deploy to Firebase Hosting:
```bash
firebase deploy
```
Your application will be available at `https://your-project-id.web.app`