[{"data":1,"prerenderedAt":516},["ShallowReactive",2],{"navigation":3,"security":133},[4,16,31,61,87,109,119],{"title":5,"path":6,"stem":7,"children":8,"icon":15},"Getting Started","/docs/getting-started","1.docs/1.getting-started/1.index",[9,11],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Quick Start","/docs/getting-started/quick-start","1.docs/1.getting-started/2.quick-start","i-lucide-book-open",{"title":17,"icon":18,"path":19,"stem":20,"children":21,"page":30},"Core Concepts","i-lucide-lightbulb","/docs/core-concepts","1.docs/2.core-concepts",[22,26],{"title":23,"path":24,"stem":25},"Data Structure","/docs/core-concepts/data-structure","1.docs/2.core-concepts/1.data-structure",{"title":27,"path":28,"stem":29},"Roles & Permissions","/docs/core-concepts/roles-and-permissions","1.docs/2.core-concepts/2.roles-and-permissions",false,{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":30},"Managing Assets","i-lucide-package","/docs/managing-assets","1.docs/3.managing-assets",[37,41,45,49,53,57],{"title":38,"path":39,"stem":40},"Asset List","/docs/managing-assets/asset-list","1.docs/3.managing-assets/1.asset-list",{"title":42,"path":43,"stem":44},"Add & Edit Assets","/docs/managing-assets/add-edit-asset","1.docs/3.managing-assets/2.add-edit-asset",{"title":46,"path":47,"stem":48},"Statuses & Conditions","/docs/managing-assets/asset-status","1.docs/3.managing-assets/3.asset-status",{"title":50,"path":51,"stem":52},"Photos","/docs/managing-assets/photos","1.docs/3.managing-assets/4.photos",{"title":54,"path":55,"stem":56},"Geolocation","/docs/managing-assets/geolocation","1.docs/3.managing-assets/5.geolocation",{"title":58,"path":59,"stem":60},"Barcode Scanning","/docs/managing-assets/barcode-scanning","1.docs/3.managing-assets/6.barcode-scanning",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":30},"Data Management","i-lucide-database","/docs/data-management","1.docs/4.data-management",[67,71,75,79,83],{"title":68,"path":69,"stem":70},"Categories & Types","/docs/data-management/categories-and-types","1.docs/4.data-management/1.categories-and-types",{"title":72,"path":73,"stem":74},"Locations","/docs/data-management/locations","1.docs/4.data-management/2.locations",{"title":76,"path":77,"stem":78},"Import","/docs/data-management/import","1.docs/4.data-management/3.import",{"title":80,"path":81,"stem":82},"Export","/docs/data-management/export","1.docs/4.data-management/4.export",{"title":84,"path":85,"stem":86},"Reports","/docs/data-management/reports","1.docs/4.data-management/5.reports",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":30},"Organisation","i-lucide-building-2","/docs/organisation","1.docs/5.organisation",[93,97,101,105],{"title":94,"path":95,"stem":96},"Organisation Settings","/docs/organisation/organisation-settings","1.docs/5.organisation/1.organisation-settings",{"title":98,"path":99,"stem":100},"Members","/docs/organisation/members","1.docs/5.organisation/2.members",{"title":102,"path":103,"stem":104},"Custom Configuration","/docs/organisation/custom-configuration","1.docs/5.organisation/3.custom-configuration",{"title":106,"path":107,"stem":108},"Your Profile","/docs/organisation/your-profile","1.docs/5.organisation/4.your-profile",{"title":110,"icon":111,"path":112,"stem":113,"children":114,"page":30},"Mobile & Sync","i-lucide-smartphone","/docs/mobile-and-sync","1.docs/6.mobile-and-sync",[115],{"title":116,"path":117,"stem":118},"Mobile App","/docs/mobile-and-sync/mobile-app","1.docs/6.mobile-and-sync/1.mobile-app",{"title":120,"icon":121,"path":122,"stem":123,"children":124,"page":30},"Troubleshooting","i-lucide-wrench","/docs/troubleshooting","1.docs/7.troubleshooting",[125,129],{"title":126,"path":127,"stem":128},"Common Issues","/docs/troubleshooting/common-issues","1.docs/7.troubleshooting/1.common-issues",{"title":130,"path":131,"stem":132},"Clear Browser Cache","/docs/troubleshooting/clear-browser-cache","1.docs/7.troubleshooting/2.clear-browser-cache",{"id":134,"title":135,"body":136,"description":509,"extension":510,"meta":511,"navigation":30,"path":512,"seo":513,"stem":514,"__hash__":515},"security/7.security.md","Security Overview",{"type":137,"value":138,"toc":492},"minimark",[139,143,150,153,160,174,177,182,219,221,225,245,247,251,277,285,287,291,294,297,299,303,323,325,329,348,350,354,365,367,371,403,405,409,415,417,421,432,438,440,444,447,455,457,461,464,466,470,484,486],[140,141,135],"h1",{"id":142},"security-overview",[144,145,146],"p",{},[147,148,149],"em",{},"Last updated: 29 June 2026",[144,151,152],{},"This page explains, at a high level, how we keep batapp and your data secure.",[144,154,155,159],{},[156,157,158],"strong",{},"The short version:"," Your data is hosted in the EU, encrypted in transit, kept on access-controlled infrastructure with encrypted backups, and reachable only through role-based access that we limit and log.",[144,161,162,163,168,169,173],{},"By using batapp you also agree to our ",[164,165,167],"a",{"href":166},"/terms-conditions","Terms & Conditions"," and ",[164,170,172],{"href":171},"/privacy-policy","Privacy Policy",".",[175,176],"hr",{},[178,179,181],"h2",{"id":180},"where-batapp-runs","Where batapp runs",[183,184,185,199,209],"ul",{},[186,187,188,191,192,195,196,173],"li",{},[156,189,190],{},"Hosting:"," Our production systems run on dedicated infrastructure at a ",[156,193,194],{},"Hetzner"," data centre in ",[156,197,198],{},"Nuremberg, Germany (EU)",[186,200,201,204,205,208],{},[156,202,203],{},"Edge & storage:"," We use ",[156,206,207],{},"Cloudflare"," for edge security and DDoS protection, and Cloudflare R2 (in the EU) for object and backup storage.",[186,210,211,214,215,218],{},[156,212,213],{},"Database:"," Our database platform is ",[156,216,217],{},"self-hosted by Albertec"," on our own infrastructure — it is not operated for us by a third party.",[175,220],{},[178,222,224],{"id":223},"encryption","Encryption",[183,226,227,233,239],{},[186,228,229,232],{},[156,230,231],{},"In transit:"," All traffic to and from batapp is encrypted with TLS (HTTPS). The mobile apps use the same encrypted connections.",[186,234,235,238],{},[156,236,237],{},"At rest:"," Backups are encrypted before storage, and uploaded files (such as asset photos) are encrypted at rest in object storage. The production database runs on dedicated, access-controlled infrastructure in the EU.",[186,240,241,244],{},[156,242,243],{},"Passwords:"," Stored hashed — a one-way scramble that is never reversible and never stored in plain text.",[175,246],{},[178,248,250],{"id":249},"backups","Backups",[183,252,253,263,270],{},[186,254,255,256,168,259,262],{},"Backups are ",[156,257,258],{},"automated",[156,260,261],{},"encrypted"," before storage.",[186,264,265,266,269],{},"They're stored ",[156,267,268],{},"separately"," from the live application, so a problem with one doesn't take out the other.",[186,271,272,273,276],{},"We ",[156,274,275],{},"test restores"," periodically.",[144,278,279,280,284],{},"Backup frequency depends on your plan — see ",[164,281,283],{"href":282},"/pricing","Pricing"," and, for Enterprise, your SLA.",[175,286],{},[178,288,290],{"id":289},"service-continuity","Service continuity",[144,292,293],{},"Because backups are encrypted and stored separately from the live system, we can recover from a failure of the primary infrastructure. If a disruption occurs, our aim is to restore service promptly and keep affected customers informed.",[144,295,296],{},"Defined recovery-time targets and tailored continuity commitments are available to Enterprise customers as part of an SLA.",[175,298],{},[178,300,302],{"id":301},"access-control","Access control",[183,304,305,311,317],{},[186,306,307,310],{},[156,308,309],{},"Role-based access (RBAC):"," Within your organisation, what a person can see and do depends on their role (Viewer, Scanner, Editor, Admin). Your admins control who has access, and least-privilege roles let you give people only the access they need.",[186,312,313,316],{},[156,314,315],{},"Multi-tenant separation:"," batapp is a multi-tenant service — organisations share the same underlying infrastructure, but each organisation's data is logically separated and isolated so that one organisation can never access another's data.",[186,318,319,322],{},[156,320,321],{},"Staff access:"," Access to production is limited to the staff who need it to run and support the service, and is logged and reviewed periodically. Helping you can require broad access to your organisation's data, so our support staff use a separate Support role that only Albertec can assign — your admins can't grant it. That access is given only when needed, kept temporary, and used solely for troubleshooting.",[175,324],{},[178,326,328],{"id":327},"authentication","Authentication",[183,330,331,334,341],{},[186,332,333],{},"Users sign in with an email address and password, or with Google or Apple sign-in.",[186,335,336,337,340],{},"Passwords are stored hashed (see ",[164,338,224],{"href":339},"#encryption",").",[186,342,343,344,347],{},"batapp does ",[156,345,346],{},"not"," currently offer SAML/SSO or directory federation. We can consider it for Enterprise customers on request.",[175,349],{},[178,351,353],{"id":352},"monitoring-vulnerabilities-and-application-security","Monitoring, vulnerabilities and application security",[183,355,356,359,362],{},[186,357,358],{},"We monitor the service for errors and suspicious activity.",[186,360,361],{},"We track and remediate vulnerabilities in our systems and dependencies, and apply security updates on a regular basis.",[186,363,364],{},"The application validates input and isolates each organisation's data.",[175,366],{},[178,368,370],{"id":369},"how-we-build-batapp","How we build batapp",[183,372,373,379,385,391,397],{},[186,374,375,378],{},[156,376,377],{},"Separate environments:"," Development and testing happen separately from the live production system.",[186,380,381,384],{},[156,382,383],{},"Tested before release:"," Changes are tested before they go live.",[186,386,387,390],{},[156,388,389],{},"Data used in testing:"," Development and testing normally use non-production or synthetic data. Where a copy of production data is needed to reproduce or fix a specific issue, it's used only in a controlled environment, limited to authorised staff, and destroyed once the work is done.",[186,392,393,396],{},[156,394,395],{},"Cryptography:"," We rely on standard, well-established cryptographic libraries — we don't write our own cryptography.",[186,398,399,402],{},[156,400,401],{},"Security in development:"," Security is considered as part of how we design and ship changes.",[175,404],{},[178,406,408],{"id":407},"data-deletion","Data deletion",[144,410,411,412,414],{},"When you delete data or your account, it's removed from the live system and ages out of our backups in line with our backup cycle. Retention periods and how deletion works are set out in full in our ",[164,413,172],{"href":171},". Some records are kept longer where the law requires.",[175,416],{},[178,418,420],{"id":419},"mobile-apps","Mobile apps",[183,422,423,426,429],{},[186,424,425],{},"The apps request only the permissions they need — camera (for scanning and photos), storage, location (where your organisation requires it), and notifications. You control these in your device settings.",[186,427,428],{},"We don't use background or continuous location tracking.",[186,430,431],{},"Data stored on the device for offline use is held in the app's local storage, protected by your device's own security, and syncs to our servers over an encrypted connection when you reconnect.",[144,433,434,435,437],{},"See the ",[164,436,172],{"href":171}," for the full breakdown of permissions and offline behaviour.",[175,439],{},[178,441,443],{"id":442},"responding-to-incidents","Responding to incidents",[144,445,446],{},"If something goes wrong, we investigate, contain it, and notify affected customers and the Information Regulator where POPIA (or the GDPR, where it applies) requires it — without undue delay.",[144,448,449,450,454],{},"To report a vulnerability, suspected compromise, or abuse, see our ",[164,451,453],{"href":452},"/security-contact","Security Contact"," page.",[175,456],{},[178,458,460],{"id":459},"enterprise-assurance","Enterprise assurance",[144,462,463],{},"Need more than this page covers? For Enterprise customers we can share deeper detail about our controls under NDA, as part of an Enterprise agreement.",[175,465],{},[178,467,469],{"id":468},"questions","Questions",[183,471,472,477],{},[186,473,474,475],{},"Security reports: see ",[164,476,453],{"href":452},[186,478,479,480],{},"Everything else: ",[164,481,483],{"href":482},"mailto:support@batapp.co.za","support@batapp.co.za",[175,485],{},[144,487,488],{},[164,489,491],{"href":490},"/","Back Home",{"title":493,"searchDepth":494,"depth":494,"links":495},"",2,[496,497,498,499,500,501,502,503,504,505,506,507,508],{"id":180,"depth":494,"text":181},{"id":223,"depth":494,"text":224},{"id":249,"depth":494,"text":250},{"id":289,"depth":494,"text":290},{"id":301,"depth":494,"text":302},{"id":327,"depth":494,"text":328},{"id":352,"depth":494,"text":353},{"id":369,"depth":494,"text":370},{"id":407,"depth":494,"text":408},{"id":419,"depth":494,"text":420},{"id":442,"depth":494,"text":443},{"id":459,"depth":494,"text":460},{"id":468,"depth":494,"text":469},"How batapp protects your data — hosting, encryption, backups, access control, and how we respond to incidents","md",{},"/security",{"title":135,"description":509},"7.security","KsUnCYOiOov0QUn5opqPplsWt1aQRUB-qr95bGuGzxQ",1782842427793]