wq.app is a suite of JavaScript modules created to facilitate the rapid deployment of offline-capable HTML5 mobile and desktop data collection apps. Potential use cases include surveys, geographic data capture & management, and crowdsourcing/citizen science. wq.app is the client component of the wq framework, and can be used with a wq.db server or adapted for use with any API.
Installation
wq.app is available via both npm (as @wq/app) and PyPI (as wq.app). To facilitate rapid deployment with wq.db and Django, the wq.app Python package comes with pre-bundled builds of @wq/app’s core dependencies and recommended plugins.
Python
# Recommended: create virtual environment
# python3 -m venv venv
# . venv/bin/activate
# Install entire wq suite (recommended)
python3 -m pip install wq
# Install only wq.app
python3 -m pip install wq.app
Node
# Install @wq/app and recommended plugins
npm install wq
# Install only @wq/app core libraries
npm install @wq/app
See the documentation for more information.
API
wq.app provides a complete suite of JavaScript modules for offline GIS data collection and management. These include the core @wq/app package and its dependencies, as well as plugins for UI renderers and map engines. See the notes in Getting Started for more information about setting up a project layout that utilizes wq.app and/or the @wq/* JavaScript libraries.
Core Stack
name | description |
---|---|
@wq/app | High-level application controller and configuration-driven CRUD client |
@wq/store | Redux-based store with pre-configured offline persistence |
@wq/router | Responds to URL changes with local and/or server data |
@wq/model | Provides a client-side ORM for collections retrieved from a REST API (such as wq.db) |
@wq/outbox | Saves form submissions while offline and syncs to the server later |
Plugins
UI Renderers
As of wq.app 1.3, UI rendering is handled via plugins, with two main alternative renderers available. This is part of the roadmap for wq.app 2.0.
module | description |
---|---|
@wq/react+@wq/material | New Material Design renderer based on React and React Native |
@wq/jquery-mobile | Legacy renderer based on jQuery Mobile and Mustache.js, used in wq.app 1.2 and all earlier versions |
When installing @wq/app directly from NPM, one of the two renderers should be installed and registered explicitly. When using the wq.app PyPI package, a default renderer will be provided based on the version of wq create / wq start used to create the project. (New ESM-based projects will default to the @wq/material renderer, while older AMD/RequireJS projects will default to the @wq/jquery-mobile renderer.)
Map Engines
wq.app also provides optional map plugins for projects needing interactive GIS capabilities such as GPS point collection. In wq.app 1.3, there are two alternative map engines available.
module | description |
---|---|
@wq/map+@wq/map-gl | Mapbox GL JS integration for web and Mapbox Maps SDK for Android & iOS. |
@wq/map+@wq/leaflet | Leaflet integration (web only). Compatible with @wq/map 1.2 and earlier |