Skip to main content

CEO App-Audit UX Wave — 2026-07-13

CEO App-Audit UX Wave — 2026-07-13

Context: On 2026-07-13, CEO Alem reported "Nemamo logout dugme u aplikaciji!" and requested a full audit of app.bilko.cloud for missing industry-standard functions. The audit surfaced 3 real issues, all addressed on demo environment (revision bilko-web-demo--0000039, image demo-8db65b55).


Finding 1: Logout Affordance — MC #105556

Status: RESOLVED

Root Cause

Logout functionality always existed and worked correctly (user dropdown menu → "Odjava", data-testid=logout-button). However, on narrow screens (mobile/tablet), the user-menu trigger button had its text label and chevron icon set to hidden sm:inline, leaving only a bare avatar circle visible. This did not visually communicate that the element was a clickable menu, causing the CEO to be unable to locate the logout function.

Fix

  • File: apps/web/components/top-bar.tsx
  • Commit: 9944dd71
  • Pull Request: PR139 → merged as 791f6db6
  • Change: User-menu trigger is now rendered as a bordered pill containing avatar + truncated name + chevron at ALL breakpoints:
    • max-w-[9.5rem] below sm breakpoint
    • max-w-[14rem] at sm and above
  • Logout logic itself was not modified.

Verification

Verifier: Angie Jones (Proveo)
Method: Live Playwright UAT at two viewport widths (375px mobile, 1280px desktop)
Result: PASS

  • User-menu pill (avatar + name + chevron) visible at both breakpoints
  • Dropdown opens on click
  • "Odjava" menu item present and clickable

Evidence: /Users/makinja/system/evidence/app-audit-uat/ (screenshots 01-narrow.png, 02-wide.png)


Finding 2: Admin Users Page — English-Only + Custom 404 — MC #105557

Status: RESOLVED

Root Cause

The /admin/users page ("Korisnici i uloge") was rendered entirely in English while the rest of the application was in Croatian. Additionally, the default Next.js 404 page displayed English fallback text.

Fix

  • File: apps/web/app/(dashboard)/admin/users/page.tsx + 5 locale files (en, hr, bs, sr-Latn, sr-Cyrl) + new apps/web/app/not-found.tsx
  • Commit: d6adeb3d
  • Pull Request: PR140 → merged as 727b6866
  • Change:
    • ~20 UI strings moved to useTranslations('adminUsersPage')
    • 37 translation keys added per locale
    • New notFound namespace for custom 404 page
    • Custom Croatian 404 page with "Stranica nije pronađena" heading and CTA "Natrag na kontrolnu ploču"

Verification

Linguistic Verifier: Dževad Jahić (Lexicon)
Method: HR terminology validation review
Result: PASS
Evidence: ~/system/evidence/105557/dzevad-hr-validation.md

Functional Verifier: Angie Jones (Proveo)
Method: Live UAT on demo environment
Result: PASS

  • Page renders in Croatian: "Korisnici i uloge", "Članovi tima", "Aktivan", "Matrica dozvola po ulogama"
  • Navigating to /nonexistent displays custom 404 with "Stranica nije pronađena" and CTA "Natrag na kontrolnu ploču"

Note: Role names and permission keys are intentionally left as untranslated technical identifiers.


Finding 3: Dead Table Row Click — MC #105558

Status: IN PROGRESS (CodeCraft investigating)

Root Cause

Confirmed runtime bug: clicking table rows in Fakture (Invoices) and Kontakti (Contacts) tables does NOT navigate to the detail page on deployed bundle, despite source code having <TableRow onClick={() => router.push(...)}> and cursor-pointer class.

Investigation

Assigned to: CodeCraft (lee-robinson)
Status: Root-cause investigation in local production build
Finding: Angie Jones live-tested and confirmed native <tr> click event fires and bubbles, but React synthetic onClick does not trigger navigation. Suspected causes: hydration mismatch, Next.js router delegation issue, or event handler binding failure in production bundle.

This is the third "live ≠ code" case discovered on 2026-07-13.


Follow-Up Noted (Not a Blocker)

Bare /demo Dead-End:
Navigating directly to /demo (without ?country= parameter) results in an error message "Odaberi državu za demo" instead of presenting a country picker UI. This is not a blocker but worth a UX decision if raw /demo links are shared externally.


Summary

MC Task Finding Status Commit Verifier
#105556 Logout affordance (hidden on mobile) RESOLVED 9944dd71 (PR139) Angie Jones PASS
#105557 Admin page English-only + 404 RESOLVED d6adeb3d (PR140) Dževad Jahić + Angie Jones PASS
#105558 Dead table row click IN PROGRESS CodeCraft (lee-robinson) investigating

Live Environment: demo.bilko.cloud revision bilko-web-demo--0000039 (image demo-8db65b55)

Evidence Archive: /Users/makinja/system/evidence/app-audit-uat/