📊 Executive Dashboard
Real-time overview of operations
💾 10:29 PM
🔒 Locked
🔴 LIVE
Loading live stats...
📊 Project Overview
📁
Total Projects
Secured
🔄
Follow-up
⏸️
On Hold
🚫
No WP Work
Lost
Operations Pulse
🏆
Win Rate
of total projects
📉
Loss Rate
projects lost
🔄
Active Pipeline
follow-up + on hold
👥
Team Members
employees
📍
Today's Visits
field reports
🎯
CRM Accounts
— active
📋
Quotations
this month
💊
CRM Health
avg score / 100
🧠 Intelligence Center
Calculating alerts…
Loading system data
🤝
CRM × Projects Alignment
Account health & conversion
Active Accounts
Secured Projects
Overdue Follow-ups
Avg Health Score
💰
Sales × Project Performance
Win rate & pipeline strength
Win Rate
Active Pipeline
Projected Wins (Best)
Monthly Quotations
👥
Team × Field Activity
Visits coverage & top performers
Team Members
Visits This Month
Avg Visits / Employee
Top Performer (Visits)
📁
Projects × Portfolio Health
Secured, stalled & small projects
Total Projects
Secured
Stalled (On Hold >14d)
Small Projects Active
🧭 Module Navigation
⚡ QUICK NAV Module Overview — Click to Navigate
📈 Analytics & Performance

Bitumode Qatar — Management Report

Generated: —

Project Status Breakdown
Employee Win Rate
Top Performers
ranked by win rate

Dashboard Employee Visibility

Hidden employees are excluded from all chart sections.

👥 Employee Performance Table

Employee Performance Overview

Employee Title Total Secured Follow-up On Hold NWP Lost Win Rate
📍 Today's Activity

Employee Management

Name Job Title Department Projects Secured Success Rate Actions
AmjadCommercial DirectorManagement1808145%
Ahmed SalehCommercial Lead EngineerCommercial Department37116444%
PravenDistribution ManagerCommercial Department11100%
HarithSales ExecutiveCommercial Department685682%
YousefTechnical ExecutiveCommercial Department795266%
FerasSales EngineerCommercial Department9889%
AshiqueSales ConsultantCommercial Department261662%

📁 Projects Management

Track, assign and manage all main projects

# Project Name Assigned Client Status Contractor Notes Actions
91Operation and Maintenance Support Services of RO Desalinatio...FerasQatarEnergy (Formerly Known asSecuredDanem Engineering Works
128Renovation and Construction of Moza Bint Mohamed Quran & Daa...FerasMinistry of Endowments (Awqaf)SecuredBojamhoor Trading & Contr
144EPIC FOR COMMON COOLING SEAWATER SYSTEM (CCWS) PHASE IV FOR ...FerasQatar EnergySecuredMedgulf Construction Co.
161Al Khulaifat Residential Buildings- B1, B2, B3 & B4FerasMilaha (Qatar Navigation QPSC)SecuredMarmi Engineering Company
170QG1 Waste water Recycle & Reuse Project (QGWP)FerasQatarEnergy LNG (Formerly knowSecuredMedgulf Construction Co.
171New Effluent Water Treatment Plant for NGL at MesaieedFerasQatarEnergy (Formerly Known asSecuredMedgulf Construction Co.
181ProjectFeras-LostMecton Qatar
208Utility Ducts & Utility Protection SlabsFeras-SecuredOmega Engineering
283Ammunition Store for Brooq (1) ProjectFerasQatar Joint Special ForcesSecuredLeonardo Defence System (
A
Amjad
Commercial Director
180
Projects
45%
Success
AS
Ahmed Saleh
Commercial Lead Engineer
371
Projects
44%
Success
P
Praven
Distribution Manager
2
Projects
50%
Success
H
Harith
Sales Executive
68
Projects
82%
Success
Y
Yousef
Technical Executive
79
Projects
66%
Success
F
Feras
Sales Engineer
9
Projects
89%
Success
A
Ashique
Sales Consultant
26
Projects
62%
Success

🎯 Sales Targets

Monthly sales tracking vs targets per employee

📅 Year:
👤 Employee:
⚠️ No targets set for Ahmed Saleh in 2025. Click "Set Targets" to add monthly targets.
0
Annual Target (QAR)
0
Total Actual Sales (QAR)
+0
Total Gap (QAR)
0%
Achievement Rate

Ahmed Saleh – Monthly Performance 2025

Month Target (QAR) Actual Sales (QAR) Gap Achievement % Progress Status
JanuaryNot set000%
No Data
FebruaryNot set000%
No Data
MarchNot set000%
No Data
AprilNot set000%
No Data
MayNot set000%
No Data
JuneNot set000%
No Data
JulyNot set000%
No Data
AugustNot set000%
No Data
SeptemberNot set000%
No Data
OctoberNot set000%
No Data
NovemberNot set000%
No Data
DecemberNot set000%
No Data

📊 Annual Overview

Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
TargetActual

🔧 Small Scale Projects

Manage and track smaller projects independently

Total Projects
34
Secured
0
Follow-up
34
No Waterproofing
0
Lost
0
On Hold
0
# Project Name Main Contractor Consultant Assignee Priority Status Deadline Notes Actions
⚙️ System Settings
Manage data, security, cloud sync, and system configuration
Main Projects
Small Projects
Employees
Quotations
☁️ Synced
Cloud Status
Last Update
🖼️ Company Branding & Logo
💡 Set your company name and logo. They appear on the login screen and sidebar, sync to all devices, and are included in JSON backups.
Company Name
Shown as the main title (e.g. on the login screen)
Upload Logo
PNG, JPG, SVG, or WEBP — SVG stays sharpest. Rendered crisp on all screens.
💾 Backup & Restore
💡 One file, everything in it. A full backup saves every piece of data on this device — projects, CRM, quotations, visits, targets, settings, logo, permissions — with no exceptions. Keep the file safe; restore it any time, on any device.
Full Backup
Download a single file containing absolutely everything
Restore Backup
Load a backup file — replaces all data on this device, then reloads
☁️ Cloud Sync
Pull from Cloud
Download latest data from all devices
Push to Cloud
Upload your current data to Supabase
Test & Diagnose
Verify Supabase connection is working
💾 Last backup:
📅 Year Management
Loading…
🗄️ Storage Health
Loading storage info…
🔐 Security & Access
Current Role
Your active access level in the system
TEAM
Lock Session
Sign out and lock for security
Verify Encryption
Check data integrity and encryption status
👑 Manager Control Panel MANAGER ONLY
Full Excel Export
Complete .xlsx — Projects, Employees, Sales, Quotations
🧠 Smart Excel Import
Import projects or employees from an Excel file — automatic column detection & smart mapping
Sync & Console
Force sync all devices, open manager console
🔬 Full System Diagnostic

Complete health check — cloud sync, data integrity, storage, and security.

⚠️ Danger Zone
Reset All Data
⚠️ Permanently deletes all projects, employees, and settings. Cannot be undone.
Clear IndexedDB Cache
Wipe the IndexedDB store (localStorage remains intact)

🧪 Integrated Test Suite

Bitumode Qatar · Directly connected to live appData, logAuditTrail, escapeHtml & all app functions

Live Projects
Employees
Audit Entries
LocalStorage Keys
Current Role
0Total
0Passed
0Failed
0Pending
0ms
Suites
🧪 Unit Tests
🔗 Integration
🤖 Automation
⚡ Load Tests
👤 UAT
Report
📋 Full Report
🧪

Unit Tests

Testing individual functions directly from your live app

escapeHtml() — XSS Prevention
UT-001 · Uses live escapeHtml() from app
PENDING
Sourcewindow.escapeHtml — the real function used in all app renders
Waiting…
SHA-256 + SALT Hashing
UT-002 · Uses app's _sha256 / _SALT
PENDING
Sourcecrypto.subtle.digest — same SALT used in login auth
Waiting…
_validatePasswordStrength()
UT-003 · Calls live app function
PENDING
Sourcewindow._validatePasswordStrength — min length, complexity, blocklist
Waiting…
appData Structure Integrity
UT-004 · Reads live window.appData
PENDING
Sourcewindow.appData — checks projects[], employees[] arrays exist and are valid
Waiting…
Project Status Filter Logic
UT-005 · Tests against live project statuses
PENDING
SourceFilter appData.projects by Secured / Follow-up / On Hold / Lost / NWP
Waiting…
AUDIT_CATEGORIES Map Completeness
UT-006 · Reads live AUDIT_CATEGORIES
PENDING
Sourcewindow.AUDIT_CATEGORIES — checks all 30+ events have cat/sev/icon/label
Waiting…
LocalStorage Round-Trip Safety
UT-007 · Reads/writes bitumode_* keys
PENDING
SourceSame pattern app uses: JSON.parse with '[]' fallback, write-read-verify
Waiting…
🔗

Integration Tests

Cross-module flows using real app functions and live data

logAuditTrail() → LocalStorage → Retrieve
IT-001 · Calls live logAuditTrail()
PENDING
SourceCalls window.logAuditTrail('diagnostic_run') then verifies entry in localStorage
Waiting…
Brute-Force Lockout (_loginAttempts)
IT-002 · Reads live _loginAttempts state
PENDING
SourceChecks window._loginAttempts object exists with count and lockedUntil fields
Waiting…
Role-Based Access (currentUserRole)
IT-003 · Reads live currentUserRole + accessConfig
PENDING
Sourcewindow.currentUserRole + window.accessConfig — verifies manager access structure
Waiting…
Backup Cleanup — 10-Day Retention
IT-004 · Calls live cleanOldBackups()
PENDING
SourceWrites a fake old key, calls cleanOldBackups(), verifies it was removed
Waiting…
Small Projects CRUD — Live Storage
IT-005 · Uses real bitumode_smallProjects key
PENDING
SourceReads getSmallProjects() list, adds temp entry, verifies, removes — no side effects
Waiting…
IndexedDB Tiered Storage — Round Trip
IT-006 · Tests window._idbLayer mirror & read-fallback
PENDING
SourceWrites test key to IDB, reads back, verifies hydration, checks quota estimate
Waiting…
Performance Boost Layer — DOM & JSON Cache
IT-007 · Tests window._perfBoost cache + invalidation
PENDING
SourceMeasures DOM cache hit rate, JSON cache invalidation, render debounce — verifies zero side effects
Waiting…
🤖

Automation Tests

Scripted E2E workflows using the live app DOM and functions

navigateTo() — All Pages Renderable
AT-001 · Calls live navigateTo()
PENDING
SourceIterates all page IDs, checks DOM element exists, calls navigateTo, returns to testSuite
Waiting…
Search/Filter Logic — Live Projects Data
AT-002 · Filters real appData.projects
PENDING
SourceRuns search + status filters on real appData.projects array — verifies counts
Waiting…
Audit Export — Blob Creation
AT-003 · Reads live audit log, builds Blob
PENDING
SourceReads live audit entries via getAuditTrail(), creates Blob, verifies type/size/URL
Waiting…
Employee Render — Live Data → DOM
AT-004 · Calls renderEmployees() on real data
PENDING
SourceCalls window.renderEmployees() — verifies it runs without error and DOM updates
Waiting…
Dashboard KPI Render — Live Data
AT-005 · Calls renderDashboard() on real appData
PENDING
SourceCalls renderDashboard(), checks KPI elements have numeric values from real projects
Waiting…

Load Tests

Performance benchmarks — renders, storage stress, filter throughput

Render 1,000 Project Rows — HTML Gen
LT-001 · Uses escapeHtml on synthetic data
PENDING
Threshold< 300ms for 1,000 row HTML string generation
Waiting…
Audit Trail — 5,000 Write & Read
LT-002 · Tests real bitumode_auditLogs key
PENDING
ThresholdWrite < 500ms · Read+parse < 200ms · 5,000-entry cap enforced
Waiting…
Search Filter Stress — 50 Cycles
LT-003 · Runs on real appData.projects
PENDING
ThresholdAvg filter cycle < 16ms on real projects (60fps budget)
Waiting…
LocalStorage — 200 R/W Operations
LT-004 · Verifies no corruption alongside real app data
PENDING
Threshold200 ops complete < 500ms · no data corruption · coexists with app keys
Waiting…

Load Test Performance (ms)

Run load tests to see chart
Avg ms
Peak ms
Ops/sec
KB tested
👤

User Acceptance Testing

Manual checklists — complete these in the actual live app

🔑 Authentication & Access

UAT-001 — Login as Manager → Full sidebar visible
  1. Logout (Logout button in sidebar)
  2. Enter manager password → Login
  3. Verify all nav items visible including Access Control
  4. Verify topbar shows "👑 Manager"
UAT-002 — Login as Team → Limited sidebar
  1. Logout and enter team password
  2. Verify Access Control nav item is hidden
  3. Verify Settings has limited options

📁 Projects & Small Projects

UAT-003 — Add project → Appears in list → KPI updates
  1. Go to Projects → Add New Project
  2. Fill all fields, save
  3. Verify appears in table
  4. Verify dashboard KPI count increments
UAT-004 — Search & Filter — Projects Page
  1. Type partial project name in search box
  2. Verify real-time filtering
  3. Apply employee filter — verify AND combination
  4. Clear → all projects return

📋 Quotations

UAT-005 — Quotations tab switching + KPI accuracy
  1. Go to Quotations page
  2. Switch between employee tabs — verify filtered counts
  3. Switch years 2025/2026/2027 — verify data changes
  4. Verify KPI cards match visible rows

🔒 Security & Audit

UAT-006 — Actions logged in Audit Trail
  1. Add a project and delete it
  2. Go to Access Control → View Audit Trail
  3. Verify add_project and delete_project entries with timestamps
  4. Export audit — verify JSON file downloads
UAT-007 — Session lock after 30 min inactivity
  1. Log in as manager
  2. Simulate idle (or wait 30 min)
  3. Try any protected action → password modal appears
  4. Re-authenticate → action proceeds

📱 Mobile Responsiveness

UAT-008 — Mobile layout (375px width)
  1. Open on mobile or resize browser to 375px
  2. Verify ☰ hamburger menu appears
  3. Tap menu → sidebar slides in
  4. All forms accessible, touch targets adequate
📋

Full Report

Consolidated results including live app state snapshot

📊 Suite Summary

SuiteTotalPassedFailedDurationStatus
Run tests to populate report

🔬 Environment + Live App Snapshot

📋 Quotations Tracker

Track quotations by employee and year, with live status totals

👤 Employee
📅 Year
157
Total
106
Secured
46
Following
5
Lost
Ref # Project / Client Employee Date Status Notes Actions
🤝Total Accounts— active
Overdue Visits
📅Follow-ups Today— this week
💹Avg Health Scoreportfolio score
📊Visits This Month— per account
0
🔍 Lead
0
💬 Prospect
0
📋 Proposal
0
🤝 Negotiation
0
✅ Customer
0
🔴 Churned
🔍
Account Stage Priority Rep Health Last Visit Next Follow-up Actions

📋 Quotation Details

🛒 Select Products

Selected Items
No products selected yet
⚙️

Product Management Console

Full administrative control · Edit anything · Delete anything · Reset defaults instantly

0
Total
0
Custom
0
Avg QR
0
📦 Total Products
0
🏷️ General Table
0
🏗️ Substructure
0
✨ Custom Added
0 products selected
# Product Name Type Thickness Reinforcement Surface Unit / Package Price (QR) Category Actions
Loading...
👑 Manager Mode Active — You have unrestricted control. Edit prices freely, delete any product (defaults can be restored later via Reset All Defaults), duplicate, and bulk-manage your catalog.

➕ Add New Product

🛡️ Access Control

Manage passwords, page visibility, employee login and security — all in one place.

🎨
Appearance

🌗 App Theme

Switch the whole app between light and dark. Your choice is saved and applied for every user.

🔑
Passwords & Page Access

🔑 Password Management

✅ Changes are saved immediately to Supabase and applied to all devices
📋 Team: 8+ characters, 3 of: uppercase + lowercase + number + symbol
📋 Manager: 12+ characters, all four: uppercase + lowercase + number + symbol (!@#$%^&*)
Team Password (General Access)
All team members use this to log in
Manager Password (Full Control)
Full access: edit, delete, access control

📄 Page Access Control (Team Members)

📊 Dashboard
👥 Employees
📁 Projects
👤 Profiles
🎯 Sales Targets
🔧 Small Projects
📋 Quotations
📝 Quotation Creator
📍 Weekly Visit Report
⚙️ Settings
🛡️
Employee Accounts & Security

👥 Team Member Access

Block/allow individual team members from logging in

Team Access (General Password)
When OFF, team password won't work — only manager can log in

👥 Employee Accounts & Access SECURE

Everything for each person in one place: their login email & individual password, whether their login is on / off / blocked, and whether they have trusted full-edit access (add/edit/delete with no password prompt).

📧 Each email should also exist in Supabase → Authentication (same email + password) so cloud sync stays authenticated.
🔑 No individual password set → the employee signs in with the shared team password.
⭐ Trusted access expires automatically after 8 hours or on logout, and every trusted action is logged in the Audit Trail.
Require assigned email (recommended)
When ON, team@bitumode.com stops working and everyone must use their own email. This is what stops one employee from opening another employee’s data.

🔐 Two-Factor Authentication (2FA)

Add an extra layer of security using Google Authenticator, Authy, or Microsoft Authenticator

Status: Not enabled
When enabled, manager login requires both password + 6-digit code

📋 Audit Trail (Activity Log)

Track sensitive actions: deletions, password changes, login attempts

Recent Activity
255 entries logged

🛡️ Security Status

✅ Password Storage: SHA-256 + Salt (cryptographic)
✅ Brute-force Protection: 5 attempts → 2-min lockout
✅ Session Storage: sessionStorage (cleared on close)
⚪ Two-Factor Auth: Not enabled
✅ Backup Auto-Cleanup: 10-day retention
✅ Audit Trail: Active (last 5,000 events)
✅ Storage: IndexedDB + localStorage
✅ Encryption: AES-GCM 256 (PBKDF2 100k) — available