Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/juanmatz/inspection-form-euroautos/llms.txt

Use this file to discover all available pages before exploring further.

The Euroautos Inspection Form is designed to work reliably in environments with limited or no internet connectivity, such as workshop floors, underground garages, and rural roadside inspections where mobile signal is unreliable. Inspectors can start, complete, and generate reports for any number of inspections without ever connecting to the internet — all data is stored safely on the device and synchronised to the backend automatically when a connection becomes available.

How offline works

The app is built as a Progressive Web App (PWA). The first time an inspector opens the app in their browser, a service worker is registered and downloads the complete application shell — all HTML, CSS, JavaScript, fonts, and icons — to the browser’s cache. On every subsequent visit, the app loads instantly from this local cache, bypassing the network entirely. Inspection data (form entries, photos, signatures, and metadata) is persisted in IndexedDB, the browser’s built-in structured storage database. IndexedDB is separate from the network cache and survives browser restarts, device reboots, and even browser updates. The combination of the service worker cache (for the app itself) and IndexedDB (for inspection data) means the app is fully functional from the moment it is opened, regardless of network state.
The service worker is registered on the first load and requires an internet connection to download the app shell. After that initial setup, the app works entirely offline. Subsequent app updates are downloaded in the background when connectivity is available and applied the next time the app is opened.

Installing as a PWA

Installing the app to the homescreen or taskbar gives inspectors the best offline experience: the app opens full-screen without a browser toolbar, camera and storage permissions are persistent, and the OS treats it like a native app.
1

Open the app in a supported browser

Navigate to the Euroautos Inspection Form URL in Google Chrome or Microsoft Edge on any device. Firefox and Safari also support PWA installation with slightly different flows (see tip below).
2

Trigger the install prompt

On desktop, look for the install icon (a monitor with a download arrow) in the browser’s address bar on the right side. Click it and select Instalar in the prompt that appears.On Android, Chrome displays an “Añadir a la pantalla de inicio” banner at the bottom of the screen automatically after a few visits, or you can trigger it manually via the browser menu (⋮) → Añadir a pantalla de inicio.
3

Confirm the installation

Confirm the installation in the system prompt. The app icon will appear on the homescreen, desktop, or app drawer depending on the platform. Open it from there for the full standalone experience.
Android vs iOS install differences:
  • On Android (Chrome), the install process is seamless and the app behaves like a native application with full service worker support, background sync, and persistent permissions.
  • On iOS (Safari), you must use Safari (not Chrome) to install: tap the Share button (box with arrow) → Añadir a pantalla de inicio. iOS PWAs have some limitations — background sync is not supported, so syncing to the backend happens only while the app is open and in the foreground. Camera and storage permissions still persist after installation.

Data persistence

All inspection data created while using the app is stored locally in IndexedDB under the database name euroautos_inspections. This includes:
  • Inspection form data (all section responses and item statuses)
  • Free-text notes and inspector comments
  • Attached photos (stored as compressed JPEG data URLs)
  • Inspector and customer signatures (stored as SVG path data)
  • Inspection status (draft, complete, synced)
  • Sync queue entries (pending mutations awaiting a connection)
Data persists across:
  • Page refreshes and tab closes
  • Browser restarts and device reboots
  • Browser updates
  • Short-term browser cache clears (IndexedDB is not cleared by “Clear browsing data” unless Cookies and site data is specifically selected)
To inspect the raw contents of the local database for debugging, open the browser’s DevTools → Application tab → IndexedDBeuroautos_inspections. This is useful for verifying that drafts have been saved and that the sync queue is empty before clearing storage.

Sync queue

When a backend API URL is configured via VITE_API_BASE_URL, every data mutation — creating a new inspection, saving a draft, updating a section, submitting a completed inspection, or deleting a record — is written to a sync queue in IndexedDB in addition to being applied locally.
# .env
VITE_API_BASE_URL="https://api.euroautos.example.com"
The sync queue is replayed automatically whenever the device transitions from offline to online. The app monitors connectivity using the browser’s navigator.onLine API and the online / offline window events. When connectivity is restored:
  1. The app detects the online event.
  2. All entries in the sync queue are replayed against the backend API in chronological order.
  3. Successfully synced entries are removed from the queue.
  4. Failed entries (e.g. due to a server error) are retried with exponential backoff on the next online event.
  5. The inspection list on the dashboard updates to reflect the synced state.
If VITE_API_BASE_URL is not set, the sync queue is disabled and the app operates in local-only mode. All data remains on the device indefinitely. This is the default configuration for offline-only deployments.

Conflict resolution

When the same inspection is edited on two different devices while offline — for example, if a second inspector adds a note before the first device has synced — the app uses a last-write-wins strategy to resolve the conflict. Each inspection record carries an updatedAt timestamp (ISO 8601, UTC). When a synced record arrives at the backend and a newer updatedAt already exists for that inspection ID, the incoming update is rejected and the device is notified to pull the latest version. If the incoming updatedAt is newer, it overwrites the stored record. This means:
  • The most recently saved version of an inspection always wins.
  • Intermediate edits from the losing device are discarded.
  • Both devices will converge to the same state after the next sync.
For workshops where two inspectors may genuinely need to work on the same inspection simultaneously (e.g. one on the exterior, one on the engine bay), a connected backend with section-level locking is recommended. Concurrent offline editing of the same inspection record is not supported in the current release.

Clearing local data

Clearing browser storage will permanently delete all locally stored inspection data, including any inspections that have not yet been synced to the backend. This action cannot be undone. Before clearing storage:
  1. Confirm that all inspections show a “Sincronizado” (Synced) badge in the dashboard.
  2. If any inspections are pending sync, ensure the device is online and wait for the sync queue to empty.
  3. Only then proceed to clear storage via Settings → Almacenamiento → Borrar datos locales, or via the browser’s own site data controls.
If you need to reset the app for a new inspector or device, use the in-app Borrar datos locales option in Settings rather than clearing storage from the browser, as the in-app option performs a clean reset of IndexedDB while preserving app configuration (workshop name, logo URL, and API settings stored in localStorage).

Limitations

  • Real-time collaboration — two inspectors working on the same inspection simultaneously requires a connected backend with active WebSocket or polling support. In offline mode, each device maintains its own independent copy of the inspection.
  • Offline mode is single-user per device — the app does not support multiple inspector accounts working in parallel on the same device without syncing between sessions.
  • iOS background sync — on iOS, the background sync API is not supported. Syncing to the backend only occurs while the app is open and active in the foreground.
  • Storage quotas — browsers may impose storage limits (typically 10–20% of available disk space). Inspections with many high-resolution photos consume more storage. Monitor storage usage in Settings → Almacenamiento and sync completed inspections regularly to free up local space.

Build docs developers (and LLMs) love