Login System
Secure employee authentication with PIN-based login, first-time setup, and forgot PIN recovery via security questions.
1️⃣ Enter 6-8 digit Employee ID with floating label input
2️⃣ Existing users enter 4-digit PIN via on-screen keypad (iPad-optimized)
3️⃣ New users set PIN + choose security question + answer
4️⃣ Forgot PIN — verify security question, then reset PIN
🔒 Encrypted PIN storage (AES-128-CBC + HMAC-SHA256)
📱 Device detection — tracks iPad, iPhone, MacBook

Login Page — Light Mode

Login Page — Dark Mode

PIN Entry with Keypad

Forgot PIN — Security Question Reset
Check-In Asset
Register new assets or return existing ones. Fill the form manually or use Tesseract.js camera OCR to scan the asset sticker or engraved serial number on the back of a MacBook.
📝 11 data fields: Asset ID, Serial Number, Chip, Config, Processor, Model Year, RAM, Assigned To, Location, Emp ID, Email
📷 Camera OCR scan (Tesseract.js) — reads white sticker Asset ID (02HW0XXXXX) or engraved Serial Number behind MacBook
🔍 Auto-fill from existing records when Asset ID or Serial Number is typed (5+ characters)
✅ Validation: Serial Number, Chip, Assigned To, Status are required. Asset ID pattern validated (02HW0, 01HW0, 34HW0, 3HW0, 4HW0)
📊 Status dropdown: Working-Warranty, Working-No Warranty, Not Working-Repair, Broken-Send to Edison, Loaner, Unallocated, Special Case
🔄 After successful check-in, shows green success banner and auto-navigates to Check-Out tab

Check-In Form — Floating Labels + Camera Scan

Tesseract.js Camera OCR — Reads Asset ID & Serial from MacBook
Check-Out Asset
Assign available assets to users. Only unallocated assets with valid Asset IDs can be checked out. Searchable combo box with camera scan support.
🔎 Searchable combo box — type full Asset ID or last 5 digits to filter instantly
📦 Only shows unallocated assets with valid Asset IDs — unavailable assets excluded
📷 Camera OCR scan (Tesseract.js) to quickly select asset by scanning white sticker
👤 Assigned To (required) + Emp ID fields
ℹ️ Asset details auto-displayed on selection: Type, Config, Status badge
⏱️ 300ms debounce on search for smooth filtering experience

Check-Out — Searchable Combo Box + Camera Scan
Inventory
View, search, and manage all assets. Split-panel table with pinned Asset ID column. By default shows available (unallocated) assets including those without Asset IDs.
📌 Asset ID pinned on left, Edit pinned on right — never scroll away (split-panel sync)
🔎 Search with instant filtering and clear (✕) button
📊 Header shows: Total assets badge + Available (unallocated) assets badge
📍 Location selector: Austin / SCV (configurable)
⚙️ Gear menu: Show Available Only / Show All Assets, Show All Columns, Fullscreen, Export to Excel
🟢 Green left border = available (unallocated), Orange = unavailable — clear visual indicator
✏️ Edit asset via floating-label modal — user can update Asset ID upon generation and all other fields
📄 Default columns: Asset ID, Serial Number, Chip, Status, Year, Current User. "Show All Columns" adds Prev Users, Config, etc.
📐 Rows per page: 10, 25, 50, 100, 200
⬇️ Export to Excel (.xlsx) from gear menu

Inventory — Light Mode (Default Columns)

Inventory — Dark Mode

Show Available Assets Only (Unallocated)

Show All Assets (including unavailable with orange border)

Show All Columns (Prev Users, Config, etc.)
