Security Overview — Jogg
MokingBird | Developed by MokingBird Oy Last Reviewed: June 24, 2026
This document describes Jogg's security posture based on the implemented application code and current integration design.
It is intended for:
- website security overview pages,
- app store review support,
- internal launch readiness,
- user-facing trust documentation.
1. Security Positioning
Jogg is a learning application with account, progress, quiz, and content features. Security in Jogg is focused on:
- protecting user accounts and session state,
- protecting local app data through encryption,
- controlling access to authenticated features,
- reducing accidental exposure of sensitive information,
- supporting user data control (export and deletion),
- preparing the app for stronger production hardening over time.
2. Security Architecture — Four Layers
Jogg uses a four-layer security model that protects data at every stage.
┌────────────────────────────────────────────────────┐
│ LAYER 1: DEVICE SECURITY │
│ Biometric auth · Secure storage · App sandboxing │
└────────────────────────────────────────────────────┘
↓
┌────────────────────────────────────────────────────┐
│ LAYER 2: DATA ENCRYPTION │
│ AES-256-GCM local DB · PBKDF2 key derivation │
│ RSA-2048 key utilities · Secure key storage │
└────────────────────────────────────────────────────┘
↓
┌────────────────────────────────────────────────────┐
│ LAYER 3: TRANSMISSION SECURITY │
│ TLS in transit · OAuth 2.0 + PKCE where configured │
└────────────────────────────────────────────────────┘
↓
┌────────────────────────────────────────────────────┐
│ LAYER 4: CLOUD AND BACKEND SECURITY │
│ Supabase Row Level Security · User-isolated data │
│ Authenticated-user-only data access │
└────────────────────────────────────────────────────┘
3. Implemented Security Controls
3.1 Authentication Infrastructure
Jogg uses Supabase-backed authentication for account and session handling.
Supported sign-in methods:
- email and password,
- magic link (passwordless),
- email OTP (6-digit code),
- OAuth via Google, Apple, Facebook, and X/Twitter where configured.
The app distinguishes between:
- authenticated account routes,
- guest-access routes,
- routes that require full account authentication.
3.2 Route and Session Protection
Jogg uses route guards to restrict access to protected screens and flows:
- account-required routes (quiz modes, progress, certificates),
- routes that block guest mode,
- lane access control and feature gating.
3.3 Local Storage Encryption
Jogg uses encrypted local storage (Hive) for important app data.
The implementation includes:
- AES-256-GCM encryption applied to local storage boxes,
- device-backed secure key storage (iOS Keychain / Android Keystore),
- local cache cleanup support.
Encryption keys are generated and persisted through platform secure-storage mechanisms rather than being stored in ordinary app files. Keys necessarily enter process memory while cryptographic operations execute.
3.4 Cryptographic Utilities
The codebase includes a dedicated encryption service with:
- AES-256-GCM encryption and decryption helpers,
- RSA-2048 key-pair generation utilities,
- PBKDF2-based key derivation (100,000 iterations with random salt).
3.5 Token Management
Jogg uses a two-token session model:
- Access token: Short-lived session token managed by the auth stack; exact storage behavior depends on SDK/platform implementation.
- Refresh token: Refresh-session behavior is managed by the auth provider and may vary by platform/runtime configuration.
Tokens are invalidated on logout. Sessions can be managed and revoked from the app's settings.
3.6 Optional User Device Security
Jogg includes user-facing security settings:
- PIN protection (current setup uses a 4-digit PIN),
- biometric unlock (Face ID / Touch ID / fingerprint) where device supports it,
- auto-lock timer controls.
Biometric availability and fallback behavior depend on the device operating system; users can select the Jogg PIN option instead.
3.7 Data Portability and User Control
Jogg includes:
- user data export (JSON format),
- account deletion flow (real backend RPC deletion — not cosmetic UI-only deletion),
- privacy settings and cache-clearing actions.
The account deletion path removes the authenticated Supabase account, not only local UI state.
3.8 Leaderboard Privacy Controls
Leaderboard participation is opt-in. Users are not placed in public rankings by default.
The app includes separate toggles controlling which leaderboard-related information is shared (XP, streak, quiz metrics). Users can withdraw from the leaderboard at any time.
3.9 Notification Permission Control
Users explicitly control:
- push notification permissions,
- specific notification types (daily reminders, streak alerts, achievement notifications, quiz invitations).
3.10 Shared Quiz Identity and RPC Boundaries
Waiting-room membership is stored in Supabase and protected by RLS. Cross-user display-name access is not granted through a broad profile policy; quiz-scoped security-definer RPCs expose only the labels and organizer data required for the relevant quiz. Joined-quiz membership survives device-local cache clearing. Organizer-only attendant/result RPCs verify quiz ownership before returning cross-user data.
3.11 Certificates and Public Verification
Certificate issuance is performed through an eligibility RPC rather than arbitrary client inserts. Public certificate verification uses a restricted verification RPC and certificate code. A public website verification page is still a deployment task; the app and database support verification, but website availability must be confirmed separately.
4. Backend and Data Access Model
Jogg relies on Supabase for backend services and database access.
Security measures at the backend layer include:
- Row Level Security (RLS): Database-level policies that restrict each user to their own data. Cross-user data access is architecturally prevented at the database layer.
- Server-backed identity handling: Auth tokens are validated server-side; raw auth secrets are not stored in app code.
- Separation of client-safe and privileged keys: Service-role credentials are not used in the client app.
- Environment configuration: Structured to separate dev, staging, and production credentials.
5. Security Around Quiz and Sharing Features
Jogg includes multiple quiz and sharing surfaces:
- custom quiz creation and ownership,
- share links and 6-character share codes,
- QR-based join flows,
- organiser and participant result views.
Security-relevant controls include:
- account-bound quiz ownership (only the creator can manage their quiz),
- generated share codes (not guessable by enumeration),
- authenticated access to organiser-specific data paths,
- backend RPC usage for organiser views rather than direct client queries.
6. Privacy-Preserving Analytics
The privacy design supports pseudonymous question-performance analytics using one-way identifiers when that analytics pipeline is enabled. The intended controls are:
- avoid storing direct profile identifiers in question-performance records,
- avoid attaching advertising identifiers; infrastructure may still process network metadata for service operation,
- raw anonymous answer data is retained for 90 days, then deleted.
7. Threat Model
| Threat | Mitigation |
|---|---|
| Unauthorised account access | OAuth 2.0 + PKCE, biometric option, rate limiting |
| Data theft from device | AES-256-GCM local encryption, keys in Keychain/Keystore |
| Man-in-the-middle attack | Platform TLS validation; certificate pinning remains a pre-launch decision |
| Cross-user data access | Supabase Row Level Security at DB layer |
| Session hijacking | Short-lived session tokens and provider-managed session controls |
| Lost or stolen device | Biometric gate + remote session revocation |
| Fake quiz or share abuse | Account-bound ownership, authenticated access paths |
Residual risks (accepted):
- Physical access by someone who has unlocked the device,
- Compromised cloud provider infrastructure (mitigated by Supabase's own security practices),
- Zero-day OS vulnerabilities (mitigated by prompt OS update guidance).
8. Current Security Strengths
Based on the implementation, the strongest current security strengths are:
- Account-based authentication with multiple sign-in options,
- Explicit guest-versus-authenticated separation,
- AES-256-GCM encrypted local app storage,
- Secure local key storage (Keychain/Keystore),
- Optional biometric and PIN app lock,
- Real backend account deletion (not cosmetic),
- User data export and deletion support,
- Opt-in public leaderboard model with granular sharing controls,
- Privacy-preserving anonymous analytics design,
- Security-aware environment configuration structure.
9. Areas Being Finalised for Production
Some security-related areas are scaffolded or in progress, not yet fully deployed. We are transparent about this:
- Payment receipt validation: The current billing service is a development scaffold that can write entitlements directly. Production release requires Google Play / Apple purchase verification on a trusted backend and must remove client-authoritative entitlement activation.
- Crash reporting rollout: Analytics and error reporting infrastructure exists; full production rollout is staged.
- Certificate pinning: TLS is active. Certificate pinning should not be publicly claimed as deployed until production pin configuration and rotation procedures are implemented and verified.
- Enterprise-grade audit tooling: Not yet required at current scale; planned for growth phase.
- Backup integration security: User cloud backup features (Google Drive / iCloud) are architected; security of those flows depends on completion of that feature rollout.
Public security messaging should accurately reflect what is deployed versus what is in progress.
10. Pre-Launch Security Checklist
Before full public launch, the following items should be confirmed:
- [ ] Receipt validation for paid flows,
- [ ] Final production certificate-pinning configuration,
- [ ] Production secret and environment review (no hardcoded credentials),
- [ ] Supabase RLS policy review and audit,
- [ ] Account deletion flow end-to-end verification,
- [ ] Data export flow verification,
- [ ] Notification permission behaviour review,
- [ ] OAuth redirect and callback review,
- [ ] Backup integration security review (when backup rollout is enabled),
- [ ] Final alignment between legal policy documents and actual telemetry and backend behaviour.
11. Responsible Disclosure
To report a security vulnerability in Jogg, please contact:
MokingBird Oy Email: [email protected] Subject: "Security — Jogg" website https://jogg.mokingbird.xyz
We ask that you practice responsible disclosure and give us reasonable time to investigate and address the issue before any public disclosure.
12. Plain-Language Summary
Jogg uses Supabase-backed authentication, AES-256-GCM encrypted local storage, secure device-backed key handling, optional PIN and biometric protection, privacy-aware opt-in leaderboard controls, and in-app export and deletion tools.
Some advanced infrastructure — including payment verification and certain monitoring integrations — is being finalised as part of production rollout.
MokingBird Oy — Security overview current as of April 2026. Updated as the platform evolves.