About
Screenshots
Installation and Setup
After Install
Support / Improvement / Suggestions
License
A web application supporting multiple user experience (UX) research methods.
- Card Sorting
- Tree Testing
- Product Reaction Cards
- System Usability Scale (SUS)
- Net Promoter Score (NPS)
See the website for more information.
![](https://raw.githubusercontent.com/carlsonp/kort/master/docs/cs.png)
![](https://raw.githubusercontent.com/carlsonp/kort/master/docs/tt.png)
![](https://raw.githubusercontent.com/carlsonp/kort/master/docs/prc.png)
![](https://raw.githubusercontent.com/carlsonp/kort/master/docs/sus.png)
![](https://raw.githubusercontent.com/carlsonp/kort/master/docs/nps.png)
-
Use one of the following:
- Use Git to clone the code (
git clone https://github.com/carlsonp/kort.git
) - Download a release archive from Github
- Install from the published npm package via
npm install @carlsonp/kort
- Use Git to clone the code (
-
Edit
app.js
and optionally set theadminUser
and set your own username. -
Edit the
adminPassword
value inapp.js
. -
Optionally set
allowUserRegistration
inapp.js
to allow users to register. Otherwise users can only be created by accounts with 'admin' access. -
Optionally setup Google authentication. See the wiki for details.
-
Continue installation via source or via Docker.
-
Install Node.js
-
Install MongoDB (3.0 or higher) or provide a connection to an existing server by editing the
app.js
file and setting themongoURL
. Kort uses the Mongoose package. To optionally secure your MongoDB with a username and password, create a user for thekort
database by doing the following:Open a Mongo commandline shell:
mongo --port 27017
Select the database:
use kort
Create the new user:
db.createUser( { user: "kort", pwd: "123", roles: [ { role: "readWrite", db: "kort" } ] } )
Then edit
/etc/mongodb.conf
and enableauth=true
. Restart the service. Make sure to set themongoURL
with the appropriate username and password. -
Run
npm install
on the commandline. This will install the dependencies into thenode_modules
folder. -
Run
npm run build
on the commandline. This will setup browserify bundle, which is needed for browser imports of modules. You will seebundle.js
in thedist
folder. -
Run
node app.js
from the main directory. This will start the NodeJS server on the default port 3000.
-
Ensure you create a
.env
file in the root of the project directory with the required environment variables (Seeexample.env
). If you choose to set the environment variables directly, remove any refences to the.env
file indocker-compose.yml
to prevent docker compose looking for it at build time.If you wish to secure the connection between the
kort
andmongo
containers, uncomment theMONGO_INITDB_ROOT_USERNAME
,MONGO_INITDB_ROOT_PASSWORD
,MONGO_INITDB_DATABASE
,MONGO_KORT_USERNAME
andMONGO_KORT_PASSWORD
values in the.env
file and define the required credentials.If you need to specify connection options for the connection from the
kort
to themongo
containers, uncomment theMONGO_OPTIONS
value in the.env
file and define the required connection options in url parameter format. -
Build the containers
docker-compose build
-
Start the containers (use -d to run in detached mode)
docker-compose up
-
Stop the containers (when using detached mode)
docker-compose down
Data from MongoDB is persisted and mounted as a Docker volume in the ./data/
folder.
-
You can connect via http://localhost:3000
-
The admin username and password for Kort can be set using environment variables
KORT_ADMIN_USER
andKORT_ADMIN_PASSWORD
. These can be set in the.env
file or directly as environment variables. Please note that if you define these variables using both methods, the environment variables will take precedence. If the variables are not set, then a default usename and password ofadmin
/admin
will be used. -
The
RATE_LIMIT
variable relates to the maximum number of requests that the server will allow over a 10 second period. By default the rate is set at 120. This can be edited in the.env
file or as an environment variable. Please note that if you define these variables using both methods, the environment variables will take precedence. Please note this rate includes any requests the application makes to serve the ui pages such as css and js files, and can make over 20 requests per page. -
The
ENVIRONMENT
variable controls the Helmet settings. When the variable is set todevelopment
, we override certain security headers to facilitate load testing. In any other mode, it defaults toproduction
and applies the strict security headers defined by Helmet.
Open a Github issue.
Kort is licensed under the GPLv3.