Table of Contents

ChalkUp Specification

This is a small specification which describes the ChalkUp application.

Motivation

ChalkUp is the software which is used for management of checklists (surveys or questionnaires).

ChalkUp have two UI parts:

The Database Structure

For saving data ChalkUp core uses a relational database. The database consists of following tables:

questionnaire Table

CREATE TABLE questionnaire
(
   id INT PRIMARY KEY NOT NULL,
   org_id INT NOT NULL,
   title longtext,
   json longtext,
   template longtext,
   createdAt DECIMAL(13,0) NOT NULL,
   createdBy INT NOT NULL,
   updatedAt DECIMAL(13,0) NOT NULL,
   updatedBy INT NOT NULL,
   deletedAt DECIMAL(13,0) NOT NULL,
   deletedBy INT NOT NULL,
   TEMPORARY INT DEFAULT 0
);

qnrresult Table

The qnrresult table contains information about questionnaires which are already filled out.

CREATE TABLE qnrresult
(
   id INT PRIMARY KEY NOT NULL,
   org_id INT NOT NULL,
   qnr_id INT NOT NULL,
   title longtext,
   qnrJson longtext,
   resJson longtext,
   createdAt DECIMAL(13,0) NOT NULL,
   createdBy INT NOT NULL,
   updatedAt DECIMAL(13,0) NOT NULL,
   updatedBy INT NOT NULL,
   deletedAt DECIMAL(13,0) NOT NULL,
   deletedBy INT NOT NULL
);

REST API

The REST API is used by both: the web UI and mobile application.

TODO: describe the REST API here

ChalkUp Web UI

ChalkUp web UI should be realized on the base of Angular framework.

Screens:

questionnaires list

The list screen is the first screen of the web application.

The list screen is used to:

questionnaire details

This screens is used to edit questionnaires details.

The editable fields are:

Also the details screen contains buttons to delete and copy the selected questionnaire.

results list

A list screen for questionnaire results.

The list contains following columns:

It should be possible to filter entries by:

The following operations should be possible:

In the later versions maybe it would make sense to have also the printing functionality on the list screen.

result details

Details screen for one result (filled out questionnaire).

The details screens should have the following fields:

On this screen it should be possible to show and print the results of the questionnaire.

Because we use Form.io for formulars, the results can be represented as JSON and as rendered form. Also, to print results, we should use the JRServer. The printing template URL can be fetched from the questionnaire table (TODO: think about the solution for the problem if the questionnaire is already deleted).

ChalkUp mobile app

The mobile app is used by “field workers” which can fill out the surveys.

The app consists of following screens:

Necessary things which should be developed:

Screens

Results list

This screen contains the list of already filled questionnaires. The list contains :

The screen contains also an “Add” button. If the user click on this button, the “Create new result” screen should be shown.

LATER: the screen should have the “Search” functionality with at least two fields: title and date.

Create new result

On this screen the user should have the possibility to select the questionnaire to fill out and to type in the title of the result. The value of the title should be initialized with the name of the questionnaire.

Edit result details / Fill out questionnaire

This screen is normally not one screen, but the series of the screens, where one screen displays one question of the survey.

Result details

Result details contains the title and date of the result.

LATER: it should be possible to view the result in form of HTML (using Form.io) and PDF.