102 lines
2.1 KiB
Markdown
102 lines
2.1 KiB
Markdown
# 📧 Email Microservice
|
|
|
|
A modern email microservice built with Hono and TypeScript, supporting multiple languages and HTML/Text email templates.
|
|
|
|
## ✨ Features
|
|
|
|
- 🌐 Multi-language support (English & German)
|
|
- 📝 HTML and Text email templates
|
|
- 📚 OpenAPI/Swagger documentation
|
|
- ⚡ High-performance with Bun runtime
|
|
- 🔄 Queue-based email processing
|
|
- 🎨 Handlebars templating
|
|
|
|
## 🚀 Quick Start
|
|
|
|
```bash
|
|
# Install dependencies
|
|
bun install
|
|
|
|
# Start development server
|
|
bun dev
|
|
```
|
|
|
|
## 📖 API Documentation
|
|
|
|
Swagger UI is available at: `/swagger`
|
|
|
|
## 🔍 Example API Calls
|
|
|
|
### Send Welcome Email
|
|
|
|
```bash
|
|
curl -X POST http://localhost:3000/api/v1/email \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"to": "user@example.com",
|
|
"templateName": "welcome",
|
|
"language": "en",
|
|
"data": {
|
|
"name": "John Doe",
|
|
"barcode_content": "0123456789",
|
|
"link": "https://portal.lauf-fuer-kaya.de/"
|
|
}
|
|
}'
|
|
```
|
|
|
|
### Send Password Reset Email
|
|
|
|
```bash
|
|
curl -X POST http://localhost:3000/api/v1/email \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"to": "user@example.com",
|
|
"templateName": "password-reset",
|
|
"language": "de",
|
|
"data": {
|
|
"token": "123465789"
|
|
}
|
|
}'
|
|
```
|
|
|
|
### Check Queue Status
|
|
|
|
```bash
|
|
curl http://localhost:3000/api/v1/email/status
|
|
```
|
|
|
|
## 📝 Environment Variables
|
|
|
|
```env
|
|
SMTP_HOST=localhost
|
|
SMTP_PORT=587
|
|
SMTP_USER="project.1"
|
|
SMTP_PASS="secret.1"
|
|
EMAIL_FROM="noreply@lauf-fuer-kaya.de"
|
|
EMAIL_REPLYTO="info@lauf-fuer-kaya.de"
|
|
REDIS_URL=redis://localhost:6379
|
|
FRONTEND_URL="https://run.lauf-fuer-kaya.de"
|
|
AUTHKEY=""
|
|
EVENT_DATE="23.05.2025"
|
|
EVENT_NAME="Lauf für Kaya! 2025"
|
|
```
|
|
|
|
## 🛠️ Development
|
|
|
|
The project uses:
|
|
- 🏃♂️ Bun for runtime and package management
|
|
- 🌐 Hono for the web framework
|
|
- 📚 Zod for validation
|
|
- 📧 Nodemailer for email sending
|
|
- 📑 Handlebars for templating
|
|
- 📊 BullMQ for queue management
|
|
|
|
## 📦 Available Templates
|
|
|
|
### Welcome Email
|
|
- Languages: 🇬🇧 English, 🇩🇪 German
|
|
- Variables: `name`, `link`, `barcode_content`
|
|
|
|
### Password Reset
|
|
- Languages: 🇬🇧 English, 🇩🇪 German
|
|
- Variables: `token` |