2025-12-31 11:48:47 -06:00
2025-12-31 11:48:47 -06:00
2025-12-31 11:04:28 -06:00
2025-12-29 10:34:28 +01:00
2025-12-29 10:34:28 +01:00
2025-12-29 10:34:28 +01:00
2025-12-29 10:34:28 +01:00
2025-12-29 10:34:28 +01:00

Email Configuration Manager

A modern, professional web application for managing email rules including out-of-office auto-replies and email forwarding. Built with React, Express, and AWS DynamoDB.

Features

  • Out of Office Management: Configure auto-reply messages with HTML or plain text formatting
  • Email Forwarding: Set up multiple forward addresses for any email
  • Modern UI/UX: Clean, professional interface built with React and Tailwind CSS
  • Real-time Updates: Instant feedback with toast notifications
  • AWS DynamoDB: Reliable cloud storage for email rules

Tech Stack

Frontend

  • React 18 - Modern UI library
  • Vite - Fast build tool and dev server
  • Tailwind CSS - Utility-first CSS framework
  • Axios - HTTP client for API calls
  • React Icons - Beautiful icon library

Backend

  • Node.js & Express - REST API server
  • AWS SDK v3 - DynamoDB client
  • Express Validator - Request validation
  • Helmet - Security headers
  • Morgan - HTTP request logger

Project Structure

config-email/
├── backend/                 # Express API server
│   ├── server.js           # Main server file
│   ├── package.json        # Backend dependencies
│   └── .env               # Environment variables
├── frontend/               # React application
│   ├── src/
│   │   ├── components/    # React components
│   │   ├── services/      # API service layer
│   │   ├── App.jsx        # Main app component
│   │   ├── main.jsx       # Entry point
│   │   └── index.css      # Global styles
│   ├── index.html         # HTML template
│   ├── package.json       # Frontend dependencies
│   └── vite.config.js     # Vite configuration
└── README.md              # This file

Setup Instructions

Prerequisites

  • Node.js 18+ installed
  • AWS Account with DynamoDB access
  • AWS credentials (Access Key ID and Secret Access Key)

1. Install Dependencies

# Install backend dependencies
cd backend
npm install

# Install frontend dependencies
cd ../frontend
npm install

2. Configure Environment Variables

Backend environment variables are already configured in backend/.env:

  • AWS credentials
  • DynamoDB table name: email-rules
  • Region: us-east-2

Frontend environment variables are set in frontend/.env:

  • API URL: http://localhost:3001

3. Start the Application

Terminal 1 - Start Backend API:

cd backend
npm start

The API will start on http://localhost:3001

Terminal 2 - Start Frontend:

cd frontend
npm run dev

The UI will start on http://localhost:3000

4. Access the Application

Open your browser and navigate to:

http://localhost:3000

Usage

Managing Email Rules

  1. Search for an Email: Enter an email address in the search box and click "Search"
  2. Configure Out of Office:
    • Toggle the OOO status on/off
    • Choose between Plain Text or HTML format
    • Enter your auto-reply message
    • Preview the message before saving
  3. Set Up Forwarding:
    • Add email addresses to forward incoming messages
    • Remove addresses as needed
  4. Save Changes: Click "Save Changes" to update the rules
  5. View All Rules: Click "All Rules" to see all configured email addresses

API Endpoints

GET /api/rules

Get all email rules

curl http://localhost:3001/api/rules

GET /api/rules/:email

Get rule for specific email

curl http://localhost:3001/api/rules/user@example.com

POST /api/rules

Create or update a rule

curl -X POST http://localhost:3001/api/rules \
  -H "Content-Type: application/json" \
  -d '{
    "email_address": "user@example.com",
    "ooo_active": true,
    "ooo_message": "I am out of office",
    "ooo_content_type": "text",
    "forwards": ["forward@example.com"]
  }'

PUT /api/rules/:email

Update existing rule

curl -X PUT http://localhost:3001/api/rules/user@example.com \
  -H "Content-Type: application/json" \
  -d '{
    "ooo_active": false,
    "forwards": []
  }'

DELETE /api/rules/:email

Delete a rule

curl -X DELETE http://localhost:3001/api/rules/user@example.com

DynamoDB Schema

The email-rules table uses the following structure:

{
  email_address: "user@example.com",    // Partition Key (String)
  ooo_active: true,                     // Boolean
  ooo_message: "Out of office message", // String
  ooo_content_type: "text",             // String ("text" or "html")
  forwards: ["email1@example.com"],     // List of Strings
  last_updated: "2025-12-26T12:00:00Z"  // ISO 8601 timestamp
}

Development

Backend Development

cd backend
npm run dev  # Uses nodemon for auto-reload

Frontend Development

cd frontend
npm run dev  # Vite hot-reload enabled

Build for Production

Frontend:

cd frontend
npm run build

The production build will be in frontend/dist/

Security Features

  • Helmet.js: Security headers
  • CORS: Configured for cross-origin requests
  • Input Validation: All API endpoints validate input
  • AWS Credentials: Never exposed to frontend
  • Environment Variables: Sensitive data in .env files

Troubleshooting

Backend won't start

  • Check if port 3001 is available
  • Verify AWS credentials are correct
  • Ensure DynamoDB table email-rules exists

Frontend won't connect to API

  • Verify backend is running on port 3001
  • Check VITE_API_URL in frontend/.env
  • Check browser console for CORS errors

DynamoDB errors

  • Verify AWS credentials have DynamoDB permissions
  • Ensure table email-rules exists in us-east-2 region
  • Check AWS credentials are not expired

License

MIT License

Support

For issues and questions, please check the application logs or contact your system administrator.

Description
No description provided
Readme 141 KiB
Languages
JavaScript 88.1%
Shell 5.4%
CSS 3.3%
Dockerfile 1.8%
HTML 1.4%