Skip to content

feat: Resolve #399 #401 #403 #404 – Hybrid Events, Conference Management, Network Policies, Heatmap Tracking#679

Merged
RUKAYAT-CODER merged 1 commit into
rinafcode:mainfrom
limxiy:feat/issues-399-401-403-404-limxiy
Jun 24, 2026
Merged

feat: Resolve #399 #401 #403 #404 – Hybrid Events, Conference Management, Network Policies, Heatmap Tracking#679
RUKAYAT-CODER merged 1 commit into
rinafcode:mainfrom
limxiy:feat/issues-399-401-403-404-limxiy

Conversation

@limxiy

@limxiy limxiy commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Resolves 4 assigned issues in a single PR.


Closes #404 – Dropdown Menus: Heatmap Tracking

  • New useDropdownHeatmap hook (src/hooks/useDropdownHeatmap.ts)
    • trackClick(label, index) – records item clicks with timestamp and session ID
    • trackHoverStart/End – measures dwell time per item
    • Events persisted to localStorage and dispatched as custom DOM events (dropdown:heatmap:click, dropdown:heatmap:hover) for analytics consumers
  • Integrated into Header.tsx on all desktop and mobile nav links

Closes #403 – Admin Panel: Network Policies

  • New NetworkPolicies component (src/components/admin/NetworkPolicies.tsx)
    • ALLOW/DENY rules scoped to IP address, CIDR range, or country code
    • Protected by PermissionGate (requires CONTENT_APPROVE permission)
  • New API route /api/admin/network-policies (GET / POST / DELETE)
  • New admin page at /admin/network-policies

Closes #401 – Accessibility Features: Conference Management

  • New AccessibilityConferenceManagement component (src/components/accessibility/)
    • Curated list of recommended accessibility conferences (CSUN, axe-con, a11yNYC)
    • User-managed personal conference list (localStorage-backed)
    • Full ARIA labelling; keyboard accessible
  • Exported from src/components/accessibility/index.ts

Closes #399 – Email Verification: Hybrid Events

  • New HybridEmailEventBus (src/lib/email/hybridEvents.ts)
    • Three delivery channels: direct (sync), queue (async with retries), webhook (external relay)
    • Built on existing EmailQueue, createEmailProvider, and emailTemplateManager
    • dispatch(payload, channels[]) fans out to multiple channels in parallel
    • Event listener API (on / emit) for in-process subscribers
  • Exported from src/lib/email/index.ts

Testing

  • TypeScript: npx tsc --noEmit — no errors on modified files
  • All existing patterns (lucide icons, Tailwind, PermissionGate, toast) followed

…ode#404

rinafcode#404 – Dropdown Menus: Heatmap Tracking
- Add useDropdownHeatmap hook (trackClick, trackHoverStart, trackHoverEnd)
- Persist events to localStorage; dispatch custom DOM events for analytics
- Integrate tracking into Header nav links (desktop + mobile)

rinafcode#403 – Admin Panel: Network Policies
- Add NetworkPolicies component (IP/CIDR/Country ALLOW/DENY rules)
- Add /api/admin/network-policies API route (GET/POST/DELETE)
- Add /admin/network-policies page

rinafcode#401 – Accessibility Features: Conference Management
- Add AccessibilityConferenceManagement component
- Lists recommended a11y conferences + user-managed personal list
- Export from accessibility/index.ts

rinafcode#399 – Email Verification: Hybrid Events
- Add HybridEmailEventBus (direct / queue / webhook channels)
- Uses existing EmailQueue, provider, and template infrastructure
- Export from email/index.ts

Closes rinafcode#399
Closes rinafcode#401
Closes rinafcode#403
Closes rinafcode#404
@drips-wave

drips-wave Bot commented Jun 24, 2026

Copy link
Copy Markdown

@limxiy Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@RUKAYAT-CODER

Copy link
Copy Markdown
Contributor

Thank you for contributing to the project.

@RUKAYAT-CODER RUKAYAT-CODER merged commit b6947c2 into rinafcode:main Jun 24, 2026
4 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants