diff --git a/README.md b/README.md
index 421ec81..03a39bf 100644
--- a/README.md
+++ b/README.md
@@ -52,6 +52,15 @@ GoMFT is a web-based managed file transfer application built with Go, leveraging
- Custom HTTP headers
- Selectable events (job success, job failure)
- Detailed JSON payload with job information
+- **Multiple Notification Services**: Get job status updates through various notification channels:
+ - Email notifications with configurable SMTP settings
+ - Webhooks with authentication for custom integrations
+ - Pushbullet notifications with optional device targeting
+ - Ntfy.sh (both public and self-hosted) for simple push notifications
+ - Gotify server integration for self-hosted notifications
+ - Pushover notifications with customizable sounds and priorities
+ - Configurable message templates for all notification types
+ - Event-based triggers (job start, completion, errors)
- **Scheduled Transfers**: Configure transfers using cron expressions with flexible scheduling options
- **Transfer Monitoring**: Real-time status updates and detailed transfer logs with bytes and files transferred statistics
- **File Metadata Tracking**: Complete history and status of all transferred files with detailed information:
@@ -355,7 +364,41 @@ Log files contain detailed information about file transfers, job execution, and
- Choose notification triggers (job success, job failure, or both)
- Test your webhook integration with manual job runs
-8. Manage file metadata:
+8. **Webhook Notifications**:
+ - **Webhook Integration**: Send notifications to external systems when jobs complete
+ - **Secure Authentication**: HMAC-SHA256 signature for webhook verification
+ - **Custom Headers**: Add custom HTTP headers to webhook requests
+ - **Flexible Configuration**: Configure different webhooks for different jobs
+ - **Event Selection**: Choose to send notifications on success, failure, or both
+ - **Detailed Payload**: Rich JSON payload with complete job execution details
+
+9. **Multiple Notification Services**:
+ - **Pushbullet Integration**: Send notifications to your devices through Pushbullet
+ - Device targeting support for specific device delivery
+ - Customizable title and message templates
+ - API key-based authentication
+ - **Ntfy Integration**: Use public ntfy.sh or self-hosted ntfy server
+ - Topic-based routing of notifications
+ - Priority levels for different job events
+ - Optional username/password authentication for private servers
+ - Customizable title and message templates
+ - **Gotify Integration**: Send notifications to self-hosted Gotify servers
+ - Application token-based authentication
+ - Priority levels (1-10) for different notification importance
+ - Customizable title and message templates
+ - **Pushover Integration**: Professional notification delivery service
+ - Application and user key authentication
+ - Device targeting for selective delivery
+ - Sound selection for different notification types
+ - Priority levels from lowest to emergency
+ - Customizable title and message templates
+ - **Common Features**:
+ - Variable substitution in notification templates
+ - Job data access in templates (status, files, bytes, times)
+ - Event-based filtering (job start, completion, errors)
+ - Success/failure tracking for diagnostic purposes
+
+10. Manage file metadata:
- Navigate to the "Files" section to view all processed files
- Use filters to quickly find files by status, job ID, or filename
- Click on any file to view detailed metadata including timestamps, size, and hash
@@ -363,7 +406,7 @@ Log files contain detailed information about file transfers, job execution, and
- Delete file metadata records when no longer needed
- View files associated with specific jobs by navigating from the job details
-9. Utilize admin tools (administrators only):
+11. Utilize admin tools (administrators only):
- Access the "Admin Tools" section from the navigation menu
- View system statistics and server information
- Create and manage database backups
@@ -479,13 +522,16 @@ The following fields have been added to the `users` table:
- Manual execution
- Enable/disable schedules
-8. **Webhook Notifications**:
- - **Webhook Integration**: Send notifications to external systems when jobs complete
- - **Secure Authentication**: HMAC-SHA256 signature for webhook verification
- - **Custom Headers**: Add custom HTTP headers to webhook requests
- - **Flexible Configuration**: Configure different webhooks for different jobs
- - **Event Selection**: Choose to send notifications on success, failure, or both
- - **Detailed Payload**: Rich JSON payload with complete job execution details
+8. **Notification Options**:
+ - **Email Notifications**: Receive job status updates via email
+ - **Webhook Notifications**: Integration with external systems
+ - **Pushbullet**: Push notifications to your devices
+ - **Ntfy**: Simple push notifications via ntfy.sh
+ - **Gotify**: Self-hosted notification server integration
+ - **Pushover**: Professional notification service
+ - Configure event triggers (start, complete, error)
+ - Customize notification message templates
+ - Selective notification based on job status
### Email Notifications
diff --git a/components/notification_form.templ b/components/notification_form.templ
new file mode 100644
index 0000000..ae59bf4
--- /dev/null
+++ b/components/notification_form.templ
@@ -0,0 +1,730 @@
+package components
+
+import (
+ "context"
+ "fmt"
+)
+
+type NotificationFormData struct {
+ NotificationService *struct {
+ ID uint
+ Name string
+ Description string
+ Type string
+ IsEnabled bool
+ EventTriggers []string
+ RetryPolicy string
+ WebhookURL string
+ Method string
+ Headers string
+ PayloadTemplate string
+ SecretKey string
+ }
+ IsNew bool
+ SuccessMessage string
+ ErrorMessage string
+}
+
+func getNotificationFormTitle(isNew bool) string {
+ if isNew {
+ return "Add Notification Service"
+ }
+ return "Edit Notification Service"
+}
+
+templ NotificationForm(ctx context.Context, data NotificationFormData) {
+ @LayoutWithContext(getNotificationFormTitle(data.IsNew), ctx) {
+
+