JWT-secured dashboard.
Per-user monitor isolation, by design.
Sessions are JWT-signed, passwords are salted, and every service-layer read/write checks row-level ownership before returning a byte. Optional Google OAuth, plus a superuser role for the admin overview — no surprises in who can see what.
JWT
Session
Salted
Password hash
Per row
Ownership check
OAuth
Stateless JWT sessions
AuthService issues tokens signed with your JWT_SECRET; passport-jwt validates them on every request. No sticky sessions, no Redis-backed login state.
Row-level ownership enforcement
Every service method that reads or writes a monitor, incident or alert contact re-checks monitor.userId === req.user.sub and throws a ForbiddenException otherwise.
Salted password hashing
Passwords are stored as salted hashes — never in plain text — so even a compromised DB dump can’t leak credentials directly.
Optional Google sign-in
Connect a Google account to sign in without a password, plus a separate read-only Analytics scope for the SEO module — both managed independently.
Superuser role
Promote trusted teammates to superuser to manage all users from a dedicated admin screen, without giving them direct database access.
Cascade deletion
Removing a user removes their monitors, checks, incidents and alert contacts in one cascade — no leftover orphans, no ownership ambiguity.
Try these free tools
Ready to start monitoring?
Free plan, no credit card required. Add your first monitor in under a minute.
Create a free account →