A server that makes the task of contributing new keyboards to https://keyman.com/ easier without requiring an initial download of 1 GB of data.
The backend is implemented with nest, the included frontend with angular.
Install node version 12.x and npm version 6.13.x. Then run the following commands:
# Install nestjs and angular
$ npm i -g @nestjs/cli @angular/cli gulp-cli
# Install dependencies
$ gulp installBefore you'll be able to run the app, you'll have to create a development.env or production.env
file. You can take the existing test.env file as template.
You'll also have to create an OAuth App on GitHub.
Use http://localhost:3000 as Homepage URL and Authorization callback URL.
In the *.env file replace the values for CLIENT_ID and CLIENT_SECRET with the Client ID and
Client Secret that GitHub displays for the app. You should also replace the value for
SESSION_SECRET with a random value.
If you want to run all e2e tests, you'll have to create a test user on GitHub. Fork keymanapp/test_kdo_khmer_angkor to your test account and set two environment variables before running the e2e tests:
export TEST_GITHUB_USER=<GitHubTestUser>
export TEST_GITHUB_TOKEN=<PersonalAccessTokenForGitHubTestUser># Building (front- and backend)
$ gulp build
# Build backend (watching for changes)
$ npm run build:watch
# Build frontend (watching for changes)
$ cd frontend
$ npm run build:watchNote: You can use the gulp default target to install, build, and run unit and
e2e tests on back- and frontend with a single command:
$ gulpVarious components can print debug output. To enable the debug output, check the component
you're interested in and set the DEBUG environment variable.
For example, git.service.ts contains the following line close to the top of the file:
const debug = debugModule('debug');
const trace = debugModule('kdo:git');To get the trace output you can set the environment variable:
$ export DEBUG=kdo:git# unit tests (front- and backend)
$ gulp test
# e2e tests (front- and backend)
$ gulp e2e
# test coverage (backend)
$ npm run test:covNOTE: You might have to set the CHROMEDRIVER_VERSION environment variable to the
installed Chrome version, e.g. export CHROMEDRIVER_VERSION=76.0.3809.100.
Note: you'll have to build the frontend first!
# development (http://localhost:3000)
$ npm run start
# watch mode
$ npm run start:watch:dev
# production mode
$ npm run start:prodWe use Docker to create a container that can be deployed to wherever:
$ docker-compose buildBefore you can deploy to production, you'll have to create an OAuth App on GitHub and edit the file
production.env (see above). Then you can run:
$ export NODE_ENV=production
$ docker-compose up -dKeyman Developer Online is MIT licensed.