This is a simple implementation showing adding offline support to SurveyJS (https://surveyjs.io/) or (https://github.com/surveyjs/survey-library).
In our system much of this is handled dynamically using Laravel. For example the path /api/v1/inspection_form will return inspections that the user has permissions to see.
There are portions of this system that are incomplete or incorrect but we're using it as a proof of concept to use SurveyJS for an offline friendly inspection tool.