[{"data":1,"prerenderedAt":1139},["ShallowReactive",2],{"guide:en:field-operations/mobile-pwa":3},{"id":4,"title":5,"body":6,"description":1131,"extension":1132,"meta":1133,"navigation":1134,"path":1135,"seo":1136,"stem":1137,"__hash__":1138},"guide_en/en/user/field-operations/mobile-pwa.md","Mobile App — Field Worker Interface for iOS and Android",{"type":7,"value":8,"toc":1112},"minimark",[9,14,18,23,26,32,48,53,71,77,82,93,97,102,137,142,159,164,175,179,187,193,198,203,220,225,236,241,255,259,266,269,274,285,290,307,312,345,350,361,365,371,376,390,395,415,420,434,438,444,449,469,474,491,497,511,515,521,526,537,542,556,561,588,593,607,611,617,621,655,661,675,679,684,698,703,720,725,739,744,755,759,764,792,797,814,818,823,836,841,855,860,874,878,883,900,905,920,925,933,937,940,954,958,963,974,979,993,998,1012,1016,1021,1032,1037,1048,1053,1064,1069,1080,1085,1096,1101],[10,11,13],"h1",{"id":12},"mobile-app","Mobile App",[15,16,17],"p",{},"Aptli's mobile interface is designed for field workers on smartphones and tablets. Install it directly from your browser — no app store required — and get offline-first access to your assignments, a QR scanner for inventory pickups, report creation with GPS and photo capture, and map drafting. The mobile experience focuses on execution; administration tasks remain on the desktop.",[19,20,22],"h2",{"id":21},"what-is-a-pwa","What is a PWA?",[15,24,25],{},"Progressive Web App = installable website that works like a native app:",[15,27,28],{},[29,30,31],"strong",{},"Installation:",[33,34,35,39,42,45],"ol",{},[36,37,38],"li",{},"Open Aptli in mobile browser (Chrome, Safari, Edge)",[36,40,41],{},"Browser shows \"Install App\" prompt",[36,43,44],{},"Tap \"Install\" → adds icon to home screen",[36,46,47],{},"Opens in full-screen mode (no browser chrome)",[15,49,50],{},[29,51,52],{},"Benefits Over Mobile Browser:",[54,55,56,59,62,65,68],"ul",{},[36,57,58],{},"Faster launch (cached on device)",[36,60,61],{},"Works offline (service worker caching)",[36,63,64],{},"Push notifications",[36,66,67],{},"Home screen shortcuts to specific functions",[36,69,70],{},"Better performance (optimized assets)",[15,72,73,76],{},[29,74,75],{},"Extra Desktop Tools:"," some features such as bulk imports, deep editing and data export are only available on the desktop app; the mobile PWA provides a “Data‑Transfer” shortcut but export is limited to the desktop version.",[15,78,79],{},[29,80,81],{},"No App Store Required:",[54,83,84,87,90],{},[36,85,86],{},"No Apple/Google approval process",[36,88,89],{},"Updates deploy instantly (no app store review delay)",[36,91,92],{},"Same codebase as web version (maintenance efficiency)",[19,94,96],{"id":95},"mobile-scope","Mobile Scope",[15,98,99],{},[29,100,101],{},"Included - Execution Functions:",[54,103,104,107,110,113,116,119,122,125,128,131,134],{},[36,105,106],{},"✅ View assignments (all or just mine)",[36,108,109],{},"✅ Create reports from assignments",[36,111,112],{},"✅ Scan QR codes (pickup authorization)",[36,114,115],{},"✅ View map with features and tasks",[36,117,118],{},"✅ Create simple map features (point, line, polygon)",[36,120,121],{},"✅ View reports (all or just mine)",[36,123,124],{},"✅ Upload photos to reports",[36,126,127],{},"✅ Edit own user profile",[36,129,130],{},"✅ Validate phone number (2FA)",[36,132,133],{},"✅ Request help (help request form)",[36,135,136],{},"✅ Respond to help requests directed to you",[15,138,139],{},[29,140,141],{},"Excluded - Administration Functions:",[54,143,144,147,150,153,156],{},[36,145,146],{},"❌ Create assignments (desktop only)",[36,148,149],{},"❌ Modify inventory (desktop only, except for authorized staff scans)",[36,151,152],{},"❌ Register new features (simple drafts OK, bulk imports desktop only)",[36,154,155],{},"❌ Add roles to users (desktop only)",[36,157,158],{},"❌ Bulk operations (desktop only)",[15,160,161],{},[29,162,163],{},"Rationale:",[54,165,166,169,172],{},[36,167,168],{},"5% of desktop app size/complexity",[36,170,171],{},"Focus on field execution",[36,173,174],{},"Complex admin tasks better on desktop",[19,176,178],{"id":177},"mobile-interface","Mobile Interface",[15,180,181],{},[182,183],"img",{"src":184,"alt":185,"style":186},"/guide/field-operations/mobile-interface.png","Mobile PWA Interface","max-width:64%;height:auto;margin:0 0 1rem 0;",[15,188,189],{},[190,191,192],"em",{},"Mobile PWA interface — home screen, assignments, reports, and QR scanner",[15,194,195],{},[190,196,197],{},"In-app QR code scanner interface",[15,199,200],{},[29,201,202],{},"Bottom Navigation Bar:",[54,204,205,208,211,214,217],{},[36,206,207],{},"Home (quick overview)",[36,209,210],{},"Assignments (view and filter)",[36,212,213],{},"Reports (create and view)",[36,215,216],{},"Map (features, tasks, drafting)",[36,218,219],{},"Profile (account settings)",[15,221,222],{},[29,223,224],{},"Shortcuts (Long-Press Home Icon):",[54,226,227,230,233],{},[36,228,229],{},"Scanner (QR code reader)",[36,231,232],{},"Quick Report (create report from current location)",[36,234,235],{},"My Tasks (assignments with my tasks highlighted on map)",[15,237,238],{},[29,239,240],{},"Gesture Support:",[54,242,243,246,249,252],{},[36,244,245],{},"Swipe between tabs",[36,247,248],{},"Pull-to-refresh (update data)",[36,250,251],{},"Long-press for context menus",[36,253,254],{},"Pinch-zoom on map",[19,256,258],{"id":257},"scanner-function","Scanner Function",[15,260,261],{},[182,262],{"src":263,"alt":264,"style":265},"/guide/field-operations/mobile-scanner.png","Mobile QR Scanner","max-width:32%;height:auto;margin:0 0 1rem 0;",[15,267,268],{},"QR code scanner for inventory pickups and feature references:",[15,270,271],{},[29,272,273],{},"Use Cases:",[54,275,276,279,282],{},[36,277,278],{},"Scan assignment pickup QR → authorize inventory transfer",[36,280,281],{},"Scan feature QR tag → open feature detail",[36,283,284],{},"Scan help request QR → respond to specific issue",[15,286,287],{},[29,288,289],{},"Workflow:",[33,291,292,295,298,301,304],{},[36,293,294],{},"Tap scanner shortcut (or bottom nav scanner icon)",[36,296,297],{},"Camera opens with QR viewfinder",[36,299,300],{},"Point at QR code",[36,302,303],{},"Auto-detect and decode",[36,305,306],{},"Action performed (pickup, navigate to feature, etc.)",[15,308,309],{},[29,310,311],{},"Pickup Authorization:",[33,313,314,317,336,339,342],{},[36,315,316],{},"Scan assignment pickup QR",[36,318,319,320],{},"Validate:\n",[54,321,322,330,333],{},[36,323,324,325,329],{},"You're authorized recipient (or have ",[326,327,328],"code",{},"canFacilitatePickups"," permission)",[36,331,332],{},"Stock available at source site",[36,334,335],{},"GPS location (within geofence if configured)",[36,337,338],{},"Confirm pickup",[36,340,341],{},"Transfer transaction created automatically",[36,343,344],{},"Inventory added to your personal site",[15,346,347],{},[29,348,349],{},"Offline QR Scans:",[54,351,352,355,358],{},[36,353,354],{},"Scans cached while offline",[36,356,357],{},"Processed when back online",[36,359,360],{},"Prevents duplicate pickups (deduplication logic)",[19,362,364],{"id":363},"assignments-view","Assignments View",[15,366,367],{},[182,368],{"src":369,"alt":370,"style":265},"/guide/field-operations/mobile-assignments.png","Mobile Assignments",[15,372,373],{},[29,374,375],{},"Filter Options:",[54,377,378,381,384,387],{},[36,379,380],{},"All assignments",[36,382,383],{},"Assigned to me",[36,385,386],{},"Created by me",[36,388,389],{},"Status (pending, in-progress, completed)",[15,391,392],{},[29,393,394],{},"Assignment Card:",[54,396,397,400,403,406,409,412],{},[36,398,399],{},"Name and description",[36,401,402],{},"Assigned users (avatars)",[36,404,405],{},"Status badge",[36,407,408],{},"Resource targets summary",[36,410,411],{},"Progress bar",[36,413,414],{},"Due date indicator",[15,416,417],{},[29,418,419],{},"Actions:",[54,421,422,425,428,431],{},[36,423,424],{},"Tap to view details",[36,426,427],{},"Create report (quick action button)",[36,429,430],{},"View QR code (if authorized and pickup code exists)",[36,432,433],{},"Update status (in-progress → completed)",[19,435,437],{"id":436},"reports-creation","Reports Creation",[15,439,440],{},[182,441],{"src":442,"alt":443,"style":265},"/guide/field-operations/mobile-reports.png","Mobile Reports",[15,445,446],{},[29,447,448],{},"Quick Report Flow:",[33,450,451,454,457,460,463,466],{},[36,452,453],{},"From assignment → tap \"Create Report\"",[36,455,456],{},"Pre-filled: assignment, tasks, suggested consumption",[36,458,459],{},"Adjust actuals (what really happened)",[36,461,462],{},"Tap camera icon → take photos",[36,464,465],{},"GPS auto-captured (current location)",[36,467,468],{},"Submit → consumption transactions created",[15,470,471],{},[29,472,473],{},"Mobile-Optimized Fields:",[54,475,476,479,482,485,488],{},[36,477,478],{},"Large touch targets (buttons, inputs)",[36,480,481],{},"Voice-to-text for descriptions",[36,483,484],{},"Photo upload from camera or gallery",[36,486,487],{},"GPS auto-fill (or manual map selection)",[36,489,490],{},"Minimal required fields (name, work completed, consumed from)",[15,492,493,496],{},[29,494,495],{},"Offline Report Creation",":",[54,498,499,502,505,508],{},[36,500,501],{},"Create report while offline",[36,503,504],{},"Photos cached locally",[36,506,507],{},"Auto-submit when connection restored",[36,509,510],{},"Conflict resolution if data changed server-side",[19,512,514],{"id":513},"map-view","Map View",[15,516,517],{},[182,518],{"src":519,"alt":520,"style":265},"/guide/field-operations/mobile-map.png","Mobile Map View",[15,522,523],{},[29,524,525],{},"Features Displayed:",[54,527,528,531,534],{},[36,529,530],{},"All committed features (from layers)",[36,532,533],{},"Tasks near current location (proximity filter)",[36,535,536],{},"Your assignments highlighted (color-coded)",[15,538,539],{},[29,540,541],{},"Map Controls:",[54,543,544,547,550,553],{},[36,545,546],{},"Layer selector (toggle feature visibility)",[36,548,549],{},"Current location button (recenter on GPS)",[36,551,552],{},"Basemap switcher (roads, satellite, terrain)",[36,554,555],{},"Search (find feature by name/ID)",[15,557,558],{},[29,559,560],{},"Simple Drafting:",[54,562,563,570,573,576,579,582],{},[36,564,565,566,569],{},"Tap the ",[29,567,568],{},"+"," floating action button; the first tap reveals the drawing tools, the second tap activates the selected tool (this two‑level behaviour keeps the UI uncluttered on small screens)",[36,571,572],{},"Choose geometry type (point, line, polygon)",[36,574,575],{},"Tap map to add points",[36,577,578],{},"Fill basic properties",[36,580,581],{},"Save to draft version",[36,583,584,587],{},[29,585,586],{},"Note:"," drafts created on mobile participate in the same version/commit system as desktop.  Mobile users can request commit, but only admins can approve; finalized versions are visible to everyone once approved.",[15,589,590],{},[29,591,592],{},"Offline Map Tiles:",[54,594,595,598,601,604],{},[36,596,597],{},"Map tiles cached (30-day expiration)",[36,599,600],{},"CacheFirst strategy (fast load)",[36,602,603],{},"Works without internet connection",[36,605,606],{},"Syncs features when back online",[19,608,610],{"id":609},"stock-transfer-authorized-staff-only","Stock Transfer (Authorized Staff Only)",[15,612,613,614,616],{},"Staff with ",[326,615,328],{}," permission:",[15,618,619],{},[29,620,289],{},[33,622,623,626,629,632,649,652],{},[36,624,625],{},"Worker arrives at warehouse",[36,627,628],{},"Shows assignment QR code",[36,630,631],{},"Staff scans QR on behalf of worker",[36,633,634,635],{},"System validates:\n",[54,636,637,640,646],{},[36,638,639],{},"Worker is authorized recipient",[36,641,642,643,645],{},"Staff has ",[326,644,328],{}," permission",[36,647,648],{},"Stock available",[36,650,651],{},"Transfer performed",[36,653,654],{},"Transaction records who performed the scan, on whose behalf, and the scan method (self vs. staff-assisted)",[15,656,657,660],{},[29,658,659],{},"Manual Transfer Creation:","\nStaff can create manual transfers:",[54,662,663,666,669,672],{},[36,664,665],{},"Select source site",[36,667,668],{},"Select recipient",[36,670,671],{},"Select resources and volumes",[36,673,674],{},"Confirm → transaction created",[19,676,678],{"id":677},"profile-management","Profile Management",[15,680,681],{},[29,682,683],{},"Editable Fields:",[54,685,686,689,692,695],{},[36,687,688],{},"Name, title, division",[36,690,691],{},"Phone number (with validation)",[36,693,694],{},"Notification preferences",[36,696,697],{},"Language selection",[15,699,700],{},[29,701,702],{},"Phone Validation:",[33,704,705,708,711,714,717],{},[36,706,707],{},"Enter phone number",[36,709,710],{},"Tap \"Send Code\"",[36,712,713],{},"Receive SMS with 6-digit code",[36,715,716],{},"Enter code",[36,718,719],{},"Phone validated (enables SMS notifications)",[15,721,722],{},[29,723,724],{},"Two-Factor Authentication:",[54,726,727,730,733,736],{},[36,728,729],{},"Enable 2FA from profile",[36,731,732],{},"Scan TOTP QR with authenticator app",[36,734,735],{},"Enter 6-digit code to confirm",[36,737,738],{},"Required on future logins",[15,740,741],{},[29,742,743],{},"Cannot Edit on Mobile:",[54,745,746,749,752],{},[36,747,748],{},"Email (security restriction)",[36,750,751],{},"Roles (admin function)",[36,753,754],{},"Admin rights (admin function)",[19,756,758],{"id":757},"help-requests","Help Requests",[15,760,761],{},[29,762,763],{},"Create Help Request:",[33,765,766,769,786,789],{},[36,767,768],{},"Tap \"Request Help\" (from profile or menu)",[36,770,771,772],{},"Fill form:\n",[54,773,774,777,780,783],{},[36,775,776],{},"Subject line",[36,778,779],{},"Description (voice-to-text supported)",[36,781,782],{},"Category (technical, access, materials, etc.)",[36,784,785],{},"Priority (low, medium, high, urgent)",[36,787,788],{},"Optional: Add photos",[36,790,791],{},"Submit → notification sent to appropriate team",[15,793,794],{},[29,795,796],{},"Respond to Help Requests:",[54,798,799,802,805,808,811],{},[36,800,801],{},"View requests directed to you",[36,803,804],{},"Add comments/notes",[36,806,807],{},"Update status",[36,809,810],{},"Upload response photos",[36,812,813],{},"Close when resolved",[19,815,817],{"id":816},"offline-capabilities","Offline Capabilities",[15,819,820],{},[29,821,822],{},"Service Worker Caching:",[54,824,825,828,830,833],{},[36,826,827],{},"API responses cached (1-hour expiration)",[36,829,597],{},[36,831,832],{},"App shell cached (instant load)",[36,834,835],{},"Images and assets cached",[15,837,838],{},[29,839,840],{},"Offline-First Actions:",[54,842,843,846,849,852],{},[36,844,845],{},"Create reports (submit when online)",[36,847,848],{},"Take photos (upload when online)",[36,850,851],{},"Draft map features (sync when online)",[36,853,854],{},"View cached assignments/reports",[15,856,857],{},[29,858,859],{},"Sync Indicators:",[54,861,862,865,868,871],{},[36,863,864],{},"Online: Green dot",[36,866,867],{},"Offline: Gray dot + \"X items pending sync\"",[36,869,870],{},"Syncing: Spinner + \"Syncing X items...\"",[36,872,873],{},"Last sync time displayed",[19,875,877],{"id":876},"installation-instructions","Installation Instructions",[15,879,880],{},[29,881,882],{},"iOS (Safari):",[33,884,885,888,891,894,897],{},[36,886,887],{},"Open aptli.com in Safari",[36,889,890],{},"Tap Share button (box with arrow)",[36,892,893],{},"Scroll and tap \"Add to Home Screen\"",[36,895,896],{},"Tap \"Add\"",[36,898,899],{},"App icon appears on home screen",[15,901,902],{},[29,903,904],{},"Android (Chrome):",[33,906,907,910,913,916,918],{},[36,908,909],{},"Open aptli.com in Chrome",[36,911,912],{},"Tap menu (three dots)",[36,914,915],{},"Tap \"Add to Home Screen\"",[36,917,896],{},[36,919,899],{},[15,921,922],{},[29,923,924],{},"Alternatively:",[54,926,927,930],{},[36,928,929],{},"Browser shows \"Install App\" banner automatically",[36,931,932],{},"Tap \"Install\" when prompted",[19,934,936],{"id":935},"updates","Updates",[15,938,939],{},"PWA updates automatically:",[54,941,942,945,948,951],{},[36,943,944],{},"No app store updates needed",[36,946,947],{},"New version downloads in background",[36,949,950],{},"Prompt to refresh when update ready",[36,952,953],{},"Instant deployment of fixes/features",[19,955,957],{"id":956},"security-considerations","Security Considerations",[15,959,960],{},[29,961,962],{},"On-Device Storage:",[54,964,965,968,971],{},[36,966,967],{},"Session data is secured on the device",[36,969,970],{},"No sensitive data is stored in plain text",[36,972,973],{},"All local data is cleared on logout",[15,975,976],{},[29,977,978],{},"GPS Privacy:",[54,980,981,984,987,990],{},[36,982,983],{},"Location accessed only when needed (reports, QR pickups)",[36,985,986],{},"Permission requested explicitly",[36,988,989],{},"Can decline (manual location entry supported)",[36,991,992],{},"GPS data encrypted in transit (HTTPS)",[15,994,995],{},[29,996,997],{},"Photo Privacy:",[54,999,1000,1003,1006,1009],{},[36,1001,1002],{},"Photos stored locally until uploaded",[36,1004,1005],{},"Deleted after successful upload",[36,1007,1008],{},"Server storage encrypted",[36,1010,1011],{},"Access controlled by permissions",[19,1013,1015],{"id":1014},"best-practices","Best Practices",[15,1017,1018],{},[29,1019,1020],{},"Install the PWA:",[54,1022,1023,1026,1029],{},[36,1024,1025],{},"Faster than mobile browser",[36,1027,1028],{},"Works offline",[36,1030,1031],{},"Better experience",[15,1033,1034],{},[29,1035,1036],{},"Enable Notifications:",[54,1038,1039,1042,1045],{},[36,1040,1041],{},"Receive assignment updates",[36,1043,1044],{},"Help request responses",[36,1046,1047],{},"Pickup code expirations",[15,1049,1050],{},[29,1051,1052],{},"Sync Regularly:",[54,1054,1055,1058,1061],{},[36,1056,1057],{},"Open app daily (even if offline)",[36,1059,1060],{},"Queued actions process automatically",[36,1062,1063],{},"Prevents large backlog",[15,1065,1066],{},[29,1067,1068],{},"Use Camera:",[54,1070,1071,1074,1077],{},[36,1072,1073],{},"Photos prove work completed",[36,1075,1076],{},"Document quality issues",[36,1078,1079],{},"Faster than typing descriptions",[15,1081,1082],{},[29,1083,1084],{},"Report from Field:",[54,1086,1087,1090,1093],{},[36,1088,1089],{},"Submit while still on-site",[36,1091,1092],{},"Fresh memory = accurate details",[36,1094,1095],{},"GPS auto-capture (don't forget location)",[15,1097,1098],{},[29,1099,1100],{},"Cache Map Tiles:",[54,1102,1103,1106,1109],{},[36,1104,1105],{},"Open map in service area while online",[36,1107,1108],{},"Tiles cache for 30 days",[36,1110,1111],{},"Map usable offline",{"title":1113,"searchDepth":1114,"depth":1114,"links":1115},"",2,[1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130],{"id":21,"depth":1114,"text":22},{"id":95,"depth":1114,"text":96},{"id":177,"depth":1114,"text":178},{"id":257,"depth":1114,"text":258},{"id":363,"depth":1114,"text":364},{"id":436,"depth":1114,"text":437},{"id":513,"depth":1114,"text":514},{"id":609,"depth":1114,"text":610},{"id":677,"depth":1114,"text":678},{"id":757,"depth":1114,"text":758},{"id":816,"depth":1114,"text":817},{"id":876,"depth":1114,"text":877},{"id":935,"depth":1114,"text":936},{"id":956,"depth":1114,"text":957},{"id":1014,"depth":1114,"text":1015},"Aptli's mobile app installs directly from the browser (no app store required) and gives field workers offline-first access to their assignments, QR pickup scanning, report submission, and map drafting.","md",{},true,"/en/user/field-operations/mobile-pwa",{"title":5,"description":1131},"en/user/field-operations/mobile-pwa","aEOoid8HGoho9z9joRkaEx-_w6dkXb46VTDikjip7E4",1776295548840]