|
|
||
|---|---|---|
| backend | ||
| frontend | ||
| .gitignore | ||
| README.md | ||
| generate-link.sh | ||
| start.sh | ||
README.md
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
- Search for an Email: Enter an email address in the search box and click "Search"
- 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
- Set Up Forwarding:
- Add email addresses to forward incoming messages
- Remove addresses as needed
- Save Changes: Click "Save Changes" to update the rules
- 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-rulesexists
Frontend won't connect to API
- Verify backend is running on port 3001
- Check
VITE_API_URLinfrontend/.env - Check browser console for CORS errors
DynamoDB errors
- Verify AWS credentials have DynamoDB permissions
- Ensure table
email-rulesexists inus-east-2region - Check AWS credentials are not expired
License
MIT License
Support
For issues and questions, please check the application logs or contact your system administrator.