# UX Audit: Admin Flow - IRT Bank Soal > **Audit Date:** 2026-06-17 > **Auditor:** Dev Agent > **Focus:** Login β†’ First-time experience β†’ Navigation discoverability β†’ Hierarchy visibility --- ## Table of Contents 1. [Executive Summary](#executive-summary) 2. [Login Flow Analysis](#login-flow-analysis) 3. [Post-Login Experience](#post-login-experience) 4. [Navigation & Discoverability](#navigation--discoverability) 5. [Hierarchy Visibility](#hierarchy-visibility) 6. [Issue Summary & Priority Matrix](#issue-summary--priority-matrix) 7. [Recommended Improvements](#recommended-improvements) 8. [Appendix: Current vs Proposed Flow](#appendix-current-vs-proposed-flow) --- ## Executive Summary The current admin flow has significant UX gaps that make it difficult for new administrators to orient themselves and complete tasks efficiently. The main issues are: | Category | Severity | Count | |----------|----------|-------| | Critical (blocks usage) | πŸ”΄ High | 4 | | Medium (confuses users) | 🟑 Medium | 6 | | Low (minor friction) | 🟒 Low | 5 | ### Key Findings 1. **No onboarding guidance** after login - users land on Dashboard with no context 2. **Hierarchy is hidden** in Settings submenu - should be prominently visible 3. **Navigation labels are inconsistent** - mixed technical and human terms 4. **Login page lacks branding** - no visual connection to the product 5. **No breadcrumb navigation** - users get lost in deep pages --- ## Login Flow Analysis ### Current State The login page (`/admin/login`) presents: - Simple username/password form - "Remember me" checkbox - Minimal error messaging - Help button (bottom-right corner) ```python # Current login form elements - Username field - Password field - Remember me checkbox - Sign in button ``` ### Issues Found | # | Issue | Impact | Severity | |---|-------|--------|----------| | 1.1 | **No product branding/logo** | Users don't know what system they're logging into | 🟑 Medium | | 1.2 | **No error state distinction** | Failed login looks same as rate limiting | 🟑 Medium | | 1.3 | **"Remember me" is unclear** | Doesn't explain session duration or implications | 🟒 Low | | 1.4 | **No "forgot password" path** | No recovery mechanism exists | 🟑 Medium | | 1.5 | **Help button is discoverable** | Good: floating help exists but underutilized | 🟒 Positive | ### Login β†’ Dashboard Redirect **Current behavior:** After successful login β†’ `/admin/dashboard` **What users see:** ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Good Morning, admin! πŸ‘‹ β”‚ β”‚ Here's what's happening today. β”‚ β”‚ β”‚ β”‚ ⚠️ 25 questions need calibration β”‚ β”‚ πŸ“ 3 AI-generated questions pending β”‚ β”‚ πŸ’‘ Tip: Start by importing questions... β”‚ β”‚ β”‚ β”‚ πŸ“Š System Overview β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ 5 β”‚ β”‚ 150 β”‚ β”‚ 890 β”‚ β”‚ 2 β”‚ β”‚ β”‚ β”‚Exams β”‚ β”‚Quest β”‚ β”‚Tests β”‚ β”‚Sites β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Problems After Login | # | Issue | Why It's a Problem | |---|-------|-------------------| | 2.1 | **No welcome message explaining the system** | First-time users don't know what IRT Bank Soal does | | 2.2 | **"5 Exams" is meaningless without context** | Users don't know what an Exam/Tryout means | | 2.3 | **Alerts are action-oriented but not instructive** | "Import questions" - but where? How? | | 2.4 | **Quick Actions use technical language** | "Generate AI Questions" doesn't explain what happens | | 2.5 | **No first-time setup wizard** | Empty state users have no guidance | --- ## Navigation & Discoverability ### Current Navigation Structure ``` Sidebar Navigation (collapsed view): β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ IRT Bank Soal Admin β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ πŸ“Š Dashboard β”‚ ← Always first β”‚ πŸ“ Questions β”‚ ← What is this? β”‚ πŸ“₯ Import Questions β”‚ ← Separate from Questions? β”‚ πŸ€– AI Generator β”‚ ← Is this part of Questions? β”‚ πŸ“‹ Exams β”‚ ← Tryout = Exam? β”‚ πŸ“ˆ Reports β”‚ β”‚ βš™οΈ Settings β”‚ ← Hierarchy buried here β”‚ ─────────────────────── β”‚ β”‚ πŸšͺ Logout β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Label Analysis | Current Label | User Interpretation | Issue | |---------------|---------------------|-------| | Questions | "Where I view questions?" | βœ… Clear | | Import Questions | "Is this separate from Questions?" | ⚠️ Unclear relationship | | AI Generator | "What does AI Generate?" | ⚠️ Vague | | Exams | "Same as Tryout?" | ⚠️ Mismatch with backend term | | Reports | "Student scores?" | βœ… Clear | | Settings β†’ Hierarchy | "What is hierarchy?" | πŸ”΄ Wrong place + wrong term | ### Missing Navigation Features | # | Missing Feature | Impact | |---|-----------------|--------| | 3.1 | **No breadcrumbs** | Users can't trace their path back | | 3.2 | **No "back to parent" links** | Deep pages have no escape route | | 3.3 | **No search/global nav** | Can't jump to specific pages | | 3.4 | **No recent pages** | Can't quickly return to work in progress | | 3.5 | **Settings is a catch-all** | Mixes Website management, Hierarchy, Password | --- ## Hierarchy Visibility ### Current Hierarchy Location Hierarchy is located at: **Settings β†’ Data Structure** (`/admin/hierarchy`) ### Problems with Current Hierarchy Placement | # | Issue | Why It Matters | |---|-------|----------------| | 4.1 | **Buried 2 levels deep** | First-time users never find it | | 4.2 | **Label is technical** | "Data Structure" vs "How data connects" | | 4.3 | **No explanation of the hierarchy concept** | Users don't know Website β†’ Tryout β†’ Questions β†’ Variants | | 4.4 | **No visual flowchart on Dashboard** | Users should see the big picture immediately | ### Expected Mental Model ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ USER'S EXPECTED FLOW β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ 1. Website (where exams are hosted) β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β”‚ β”‚ 2. Tryout/Exam (the test itself) β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β”‚ β”‚ 3. Questions (individual items in the test) β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Original/Basis Question ──────────────────────┐ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β”‚ β”‚ β”‚ β”‚ AI Variant (different version) β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── (repeated for each question slot) β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Where Users Expect Hierarchy Info | Location | User Expectation | |----------|------------------| | **Dashboard** | "Show me the big picture" - visual overview | | **First-time tooltip** | "Here's how things connect" | | **Help/Docs** | "Explain the data model" | | **Settings sidebar** | ❌ Too late - user already lost | --- ## Issue Summary & Priority Matrix ### Priority Matrix ``` β”‚ High Value β”‚ Low Value β”‚ ────────────────────┼──────────────┼─────────────── High Effort β”‚ [A] Refactor β”‚ [B] Nice to β”‚ β”‚ Navigation β”‚ have β”‚ ────────────────────┼──────────────┼─────────────── Low Effort β”‚ [C] Quick β”‚ [D] Ignore β”‚ β”‚ Wins β”‚ β”‚ ────────────────────┼──────────────┼─────────────── ``` ### Cell [A] - High Value, High Effort (Do First) | Issue ID | Description | Notes | |----------|-------------|-------| | P1 | **Add Dashboard onboarding section** | Explain the system + show hierarchy flow | | P2 | **Move Hierarchy to prominent location** | Dashboard or separate nav item | | P3 | **Redesign navigation labels** | Human-friendly, consistent terminology | | P4 | **Add breadcrumbs** | Across all pages | ### Cell [C] - High Value, Low Effort (Quick Wins) | Issue ID | Description | Effort | |----------|-------------|--------| | Q1 | Add product logo to login page | 15 min | | Q2 | Improve dashboard welcome message | 10 min | | Q3 | Add "How it works" section to Dashboard | 30 min | | Q4 | Rename "Data Structure" β†’ "Data Overview" in Settings | 5 min | | Q5 | Add contextual tooltips to Quick Actions | 20 min | ### Cell [B] - Low Value, High Effort (Consider Later) | Issue ID | Description | |----------|-------------| | L1 | Global search across all pages | | L2 | Recent pages sidebar widget | | L3 | Full first-time setup wizard | ### Cell [D] - Low Value, Low Effort (Ignore) | Issue ID | Description | |----------|-------------| | N1 | Custom "Remember me" tooltip | | N2 | Login page background gradient (cosmetic only) | --- ## Recommended Improvements ### Phase 1: Critical Fixes (Same Session) #### 1. Login Page Enhancement ```html

IRT Bank Soal

Adaptive Question Bank System

``` #### 2. Dashboard - Add "How It Works" Section Add this block to dashboard after greeting: ```html

How Your Exam System Works

1 Add Website Connect your WordPress site
β†’
2 Import Questions Upload your exam questions
β†’
3 Generate Variants AI creates different versions
β†’
4 Students Take Tests Adaptive difficulty adjusts
View full data structure β†’
``` #### 3. Dashboard - Add "Get Started" for Empty State When `tryouts_count == 0`: ```html

πŸš€ Welcome to IRT Bank Soal!

Get started in 3 simple steps:

1

Connect a Website

Add your WordPress site to the system

Add Website β†’
2

Import Questions

Upload questions from Excel or JSON

Import Questions β†’
3

Generate Variants

Use AI to create question variations

Generate Variants β†’
``` ### Phase 2: Navigation Improvement (Next Sprint) #### 4. Rename Navigation Items | Current | Proposed | Reason | |---------|----------|--------| | Import Questions | Import from Excel | More specific | | AI Generator | Generate AI Questions | Action-oriented | | Settings β†’ Hierarchy | (move to Dashboard) | Too hidden | | Questions | Question Bank | Clarify scope | #### 5. Add Breadcrumbs Component ```html ``` ### Phase 3: Advanced Features (Future) #### 6. First-Time Setup Wizard Modal that walks new admins through: 1. Website configuration 2. First import 3. Basic settings review #### 7. Interactive Hierarchy Diagram Replace static hierarchy view with interactive visualization: ```mermaid graph LR A[Website] --> B[Tryout] B --> C[Questions] C --> D[Variants] C --> E[Student Answers] D --> F[AI Generation] ``` --- ## Appendix: Current vs Proposed Flow ### Current Flow (Confusing) ``` Login ↓ Dashboard (counts, no context) ↓ (guess where to go) Settings? Questions? Import? (trial & error) ↓ Get lost β†’ Leave β†’ Ask for help ``` ### Proposed Flow (Guided) ``` Login ↓ Dashboard β”œβ”€ "Here's how it works" (visual flow) β”œβ”€ Quick Stats (with explanations) β”œβ”€ Alerts (with direct action buttons) └─ Recent Activity ↓ Follow guided steps OR jump to specific task ↓ Complete task β†’ Return to Dashboard ↓ See updated progress ``` --- ## Files to Modify | File | Changes Needed | |------|---------------| | `app/admin_web.py` | Dashboard content, navigation labels, breadcrumbs | | `app/admin_web_icons.py` | (No changes needed) | | `app/templates/` | (Add if using templates) | --- ## Test Checklist After implementing changes, verify: - [ ] Login page shows product branding - [ ] Dashboard explains the system for first-time users - [ ] Empty state shows guided setup - [ ] Navigation labels are consistent and clear - [ ] Hierarchy is accessible from Dashboard - [ ] Breadcrumbs appear on all sub-pages - [ ] Quick Actions have explanatory tooltips - [ ] User can complete first import without help --- *End of Audit Report*