Original PR: https://github.com/RayLabsHQ/gitea-mirror/pull/238 Author: @arunavo4 Created: 3/18/2026 Status: ✅ Merged Merged: 3/18/2026 Merged by: @arunavo4
Base: main ← Head: feat/231-notifications
main
feat/231-notifications
2141f62
09d837c
2c26017
109bb00
20 files changed (+3497 additions, -20 deletions)
➕ docs/NOTIFICATIONS.md (+88 -0) ➕ drizzle/0011_notification_config.sql (+1 -0) ➕ drizzle/meta/0011_snapshot.json (+2030 -0) 📝 drizzle/meta/_journal.json (+8 -1) 📝 scripts/validate-migrations.ts (+28 -2) 📝 src/components/config/ConfigTabs.tsx (+79 -1) ➕ src/components/config/NotificationSettings.tsx (+394 -0) 📝 src/lib/db/schema.ts (+30 -0) 📝 src/lib/gitea-enhanced.ts (+1 -1) 📝 src/lib/helpers.ts (+13 -1) ➕ src/lib/notification-service.test.ts (+221 -0) ➕ src/lib/notification-service.ts (+165 -0) ➕ src/lib/providers/apprise.test.ts (+98 -0) ➕ src/lib/providers/apprise.ts (+15 -0) ➕ src/lib/providers/ntfy.test.ts (+95 -0) ➕ src/lib/providers/ntfy.ts (+21 -0) ➕ src/pages/api/config/index.test.ts (+51 -0) 📝 src/pages/api/config/index.ts (+92 -14) ➕ src/pages/api/notifications/test.ts (+42 -0) 📝 src/types/config.ts (+25 -0)
docs/NOTIFICATIONS.md
drizzle/0011_notification_config.sql
drizzle/meta/0011_snapshot.json
drizzle/meta/_journal.json
scripts/validate-migrations.ts
src/components/config/ConfigTabs.tsx
src/components/config/NotificationSettings.tsx
src/lib/db/schema.ts
src/lib/gitea-enhanced.ts
src/lib/helpers.ts
src/lib/notification-service.test.ts
src/lib/notification-service.ts
src/lib/providers/apprise.test.ts
src/lib/providers/apprise.ts
src/lib/providers/ntfy.test.ts
src/lib/providers/ntfy.ts
src/pages/api/config/index.test.ts
src/pages/api/config/index.ts
src/pages/api/notifications/test.ts
src/types/config.ts
Closes #231 — adds push notification support for mirror events with two providers:
apprise.ts
sendNotification
testNotification
triggerJobNotification
apprise.test.ts
notification_config
notificationConfig
notifyOnNewRepo
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
No dependencies set.
The note is not visible to the blocked user.
📋 Pull Request Information
Original PR: https://github.com/RayLabsHQ/gitea-mirror/pull/238
Author: @arunavo4
Created: 3/18/2026
Status: ✅ Merged
Merged: 3/18/2026
Merged by: @arunavo4
Base:
main← Head:feat/231-notifications📝 Commits (4)
2141f62feat: add notification system with Ntfy.sh and Apprise providers (#231)09d837cfix: address review findings for notification system2c26017fix notification gating and config validation109bb00trim sync notification details📊 Changes
20 files changed (+3497 additions, -20 deletions)
View changed files
➕
docs/NOTIFICATIONS.md(+88 -0)➕
drizzle/0011_notification_config.sql(+1 -0)➕
drizzle/meta/0011_snapshot.json(+2030 -0)📝
drizzle/meta/_journal.json(+8 -1)📝
scripts/validate-migrations.ts(+28 -2)📝
src/components/config/ConfigTabs.tsx(+79 -1)➕
src/components/config/NotificationSettings.tsx(+394 -0)📝
src/lib/db/schema.ts(+30 -0)📝
src/lib/gitea-enhanced.ts(+1 -1)📝
src/lib/helpers.ts(+13 -1)➕
src/lib/notification-service.test.ts(+221 -0)➕
src/lib/notification-service.ts(+165 -0)➕
src/lib/providers/apprise.test.ts(+98 -0)➕
src/lib/providers/apprise.ts(+15 -0)➕
src/lib/providers/ntfy.test.ts(+95 -0)➕
src/lib/providers/ntfy.ts(+21 -0)➕
src/pages/api/config/index.test.ts(+51 -0)📝
src/pages/api/config/index.ts(+92 -14)➕
src/pages/api/notifications/test.ts(+42 -0)📝
src/types/config.ts(+25 -0)📄 Description
Summary
Closes #231 — adds push notification support for mirror events with two providers:
New files (10)
src/lib/providers/ntfy.ts/apprise.ts— Provider implementations (simple fetch calls)src/lib/notification-service.ts— Main service withsendNotification,testNotification,triggerJobNotificationsrc/pages/api/notifications/test.ts— Test notification endpoint with Zod validationsrc/components/config/NotificationSettings.tsx— Settings UI with provider selector, config forms, event toggles, test buttonsrc/lib/providers/ntfy.test.ts/apprise.test.ts/src/lib/notification-service.test.ts— 23 unit testsdrizzle/0011_notification_config.sql— Migration addingnotification_configcolumndocs/NOTIFICATIONS.md— Setup guides for both providers, event types, troubleshootingModified files (7)
src/lib/db/schema.ts— Zod schemas for ntfy, apprise, and notification configsrc/types/config.ts— TypeScript interfaces + addednotificationConfigto API request/response typessrc/lib/helpers.ts— Fire-and-forget notification trigger on terminal job statusessrc/pages/api/config/index.ts— Token encryption/decryption for notification providerssrc/components/config/ConfigTabs.tsx— 4th "Notifications" tab with auto-savedrizzle/meta/_journal.json— Migration journal entryscripts/validate-migrations.ts— Migration validation fixtureDesign decisions
notifyOnNewRepotoggle is disabled with "coming soon" label (schema ready, backend hook not yet wired)Test plan
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.