This project started as an analogue questionnaire which was designed to help social workers from Volkshilfe to conduct professional conversations with people who take care of a family member with dementia at home. Our task was to digitise this questionnaire and to redesign the visualisations of the evaluation.
This folder contains the data which is used to configure the questionnaire and the visualisations.
The sequence of the sections is defined in _inhaltsverzeichnis.yml
. Each section corresponds to a .yml
-file which contains information about the section and its fields.
The file visualisation.yml
defines properties for the visualisations.
mail.yml
contains the text for the prefilled mail.
_converter.js
is the script which compiles the data and saves it to src/data
.
Contains static files such as favicons or the index.html
.
assets
: Assets are resources passed through Webpackfonts
: Open Sans Regular (400) + Bold (700)icons
: miscellaneous vector graphics for form / visualisationsimages
: images in the assets folder are passed through Webpack as opposed to thepublic
folderstyles
:_variables.scss
defines SCSS variables which are available in thestyle
-tags of the Single File Components. Includes predefined colors and media queries.- The styles of
base.scss
are available on all views. _grid.scss
generates grid helper classes which are imported to thebase.scss
components
: Vue components used by theviews
AnField.vue
: Wrapper component for thefields
-componentsfields
: Components which represent the field types of the questionnaire datanote
: Notepad and notepad open buttonui
: UI elementsvisualisations
: Components of the visualisations
data
: receives the compiled data files from the folder data in the build processhelpers
: contains helper functions which are used by various componentsmixins
: contains the filesfield.js
andvisualisation.js
which defines shared logic for thefields
and thevisualisations
respectivelyrouter
: defines the routes which are supplied tovue-router
store
: configures the Vuex store which holds and manages the user inputs and shared variablesviews
: views for the routesApp.vue
andmain.js
: are the entry point for the applicationregisterServiceWorker.js
: registers service worker for offline usage, comes from vue-cli
.editorconfig
: defines settings for code editors — official docsjsconfig.json
: editors might need this file for code navigation (looking at you VSCode)vue.config.js
: configuration of the Vue Cli Tools- webpack: svgs can be imported like vue components using the
?inline
suffix - css: source maps generation for css gets enabled and
_variables.scss
will be prepended on each component - pwa: as the web app has offline capabilities, name, icon and colors need to be configured here — official docs
- webpack: svgs can be imported like vue components using the
package.json
:- scripts: See Development lifecycle
- eslintConfig (+ prettier) — official docs
- components inside of vue template tags have to be PascalCase
- props have to be kebab-case
- objects don't have a trailing comma after the last value
- single quotes get replaced with double quotes when possible
- and much more ... (component order, max line length)
- browserlist: only the last two versions for browsers which have a market share higher then 1% are supported — list of browsers
-
install the dependencies
npm install
-
starts the project in development mode
npm run serve
-
creates production build in
dist
folder for deploymentnpm run build
-
calls data converter → see data
npm run data
-
calls data converter before each build to ensure correct data
npm run prebuild npm run preserve
-
shows / fixes eslint error → see different files
npm run lint npm run lintfix
When the develop
branch updates, a new build will be automatically generated and deployed from Netlify.
For previewing the capabilities of the app visit the route /demo
. It will prefill the questionnaire. This can be also used for faster development to skip the step of filling out all the fields.
Demo data can be found in src/demo.json
and is simply a 1:1 copy from LocalStorage.