Modular by design. Every feature is a toggle. Turn on what you need, leave off what you don't. Your dashboard stays clean.
Every module controls what your users see. Turn a module off and its pages, nav items, and API endpoints disappear from your instance.
Self-registration, approval, time-bound access, auto-archiving.
Invite-only recurring relationships with subtype tagging.
Internal programs, enrollment, session codes, dual attendance.
Shareable registration links for external attendees.
Per-space permissions with open, request-based, and restricted levels.
Automated strikes for violations, configurable thresholds.
Targeted broadcasts to program enrollees or the full hub.
Heatmaps, user funnels, exportable CSV reports.
Auto-flag users inactive for 14+ days with re-engagement emails.
Scoped tokens and webhook subscriptions for external systems.
Hardware card-based sign-in at kiosks and zone doors.
Self-registration, approval, time-bound access, auto-archiving.
Invite-only recurring relationships with subtype tagging.
Internal programs, enrollment, session codes, dual attendance.
Shareable registration links for external attendees.
Per-space permissions with open, request-based, and restricted levels.
Automated strikes for violations, configurable thresholds.
Targeted broadcasts to program enrollees or the full hub.
Heatmaps, user funnels, exportable CSV reports.
Auto-flag users inactive for 14+ days with re-engagement emails.
Scoped tokens and webhook subscriptions for external systems.
Hardware card-based sign-in at kiosks and zone doors.
Turn any web-enabled device into a check-in terminal. Open a browser, load the kiosk route, and your hub has a live sign-in point.
Every user gets a role. Every role carries granular permissions. Pick from pre-built templates or build your own from scratch. The login JWT carries the resolved permission array for instant middleware checks.
Each organisation gets their own subdomain like mouau.uaccess.io. Same codebase, completely isolated data. One org can never see another org's users, logs, or configuration.
Every module is a toggle. Turn off Visitor Management and the entire visitor flow disappears. Nav items, pages, and API endpoints all follow the flag.
Visitors self-register, get approved by admin with a time-bound access window, sign in via kiosk, and are automatically archived when their visit expires. Profile and logs retained for full audit.
Recurring non-member relationships like government officials, sponsors, media, and vendors. Invite-only accounts with subtype tagging and full visit history retained permanently.
Define every room, lab, and wing. Set access to Open, Request-Based, or Restricted. Users see their space access status on their dashboard. When RFID arrives, it becomes physical zone enforcement.
Create internal programs with enrollment pipelines. Generate session codes for dual attendance logging. Hub presence and program attendance tracked simultaneously.
Create a public event and get a shareable registration link. External attendees fill a form, receive a QR by email, and check in at the event. Their data is stored separately from hub users.
A background job runs after the configured closing time. Users still signed in past the grace period are automatically signed out and receive a strike. Configurable thresholds trigger warnings and auto-suspension.
Peak hours heatmap, user funnels, program attendance rates, space usage, and exportable CSV reports formatted for UNDP and stakeholder submissions.
Push targeted announcements to specific program enrollees or broadcast to the entire hub. In-app and email delivery channels.
Automatically flag users who haven't visited in 14+ days. Trigger re-engagement emails. Admin sees at-risk users in the analytics dashboard.
Generate scoped API tokens to pull data into Power BI, Google Sheets, or any external system. Subscribe webhooks to events like user.signed_in, strike.issued, or visitor.approved.
Hardware card-based sign-in at kiosks and zone doors. A local Node.js agent on the kiosk bridges the USB reader to the cloud API via WebSocket.