{"id":28549224,"url":"https://github.com/keymanapp/developer.keyman.com","last_synced_at":"2025-07-26T08:37:36.089Z","repository":{"id":38769727,"uuid":"179080012","full_name":"keymanapp/developer.keyman.com","owner":"keymanapp","description":"Keyman Developer Online","archived":false,"fork":false,"pushed_at":"2022-11-10T09:14:10.000Z","size":2298,"stargazers_count":3,"open_issues_count":10,"forks_count":3,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-06-10T02:08:45.075Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keymanapp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-02T13:08:07.000Z","updated_at":"2021-10-05T21:36:17.000Z","dependencies_parsed_at":"2023-01-21T02:03:41.784Z","dependency_job_id":null,"html_url":"https://github.com/keymanapp/developer.keyman.com","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/keymanapp/developer.keyman.com","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keymanapp%2Fdeveloper.keyman.com","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keymanapp%2Fdeveloper.keyman.com/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keymanapp%2Fdeveloper.keyman.com/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keymanapp%2Fdeveloper.keyman.com/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keymanapp","download_url":"https://codeload.github.com/keymanapp/developer.keyman.com/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keymanapp%2Fdeveloper.keyman.com/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267141078,"owners_count":24041979,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-10T02:08:43.688Z","updated_at":"2025-07-26T08:37:36.080Z","avatar_url":"https://github.com/keymanapp.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Keyman Developer Online\n\n## Description\n\nA server that makes the task of contributing new keyboards to https://keyman.com/ easier without requiring\nan initial download of 1 GB of data.\n\nThe backend is implemented with [nest](https://nestjs.com/), the included frontend with\n[angular](https://angular.io/).\n\n## Installation\n\nInstall `node` version 12.x and `npm` version 6.13.x. Then run the following commands:\n\n```bash\n# Install nestjs and angular\n$ npm i -g @nestjs/cli @angular/cli gulp-cli\n\n# Install dependencies\n$ gulp install\n```\n\n## Preparation\n\nBefore you'll be able to run the app, you'll have to create a `development.env` or `production.env`\nfile. You can take the existing `test.env` file as template.\n\nYou'll also have to create an [OAuth App on GitHub](https://github.com/settings/developers).\nUse `http://localhost:3000` as _Homepage URL_ and _Authorization callback URL_.\n\nIn the `*.env` file replace the values for `CLIENT_ID` and `CLIENT_SECRET` with the _Client ID_ and\n_Client Secret_ that GitHub displays for the app. You should also replace the value for\n`SESSION_SECRET` with a random value.\n\nIf you want to run all e2e tests, you'll have to create a test user on GitHub. Fork\n[keymanapp/test_kdo_khmer_angkor](https://github.com/keymanapp/test_kdo_khmer_angkor) to your test\naccount and set two environment variables before running the e2e tests:\n\n```bash\nexport TEST_GITHUB_USER=\u003cGitHubTestUser\u003e\nexport TEST_GITHUB_TOKEN=\u003cPersonalAccessTokenForGitHubTestUser\u003e\n```\n\n## Development\n\n```bash\n# Building (front- and backend)\n$ gulp build\n\n# Build backend (watching for changes)\n$ npm run build:watch\n\n# Build frontend (watching for changes)\n$ cd frontend\n$ npm run build:watch\n```\n\n**Note:** You can use the `gulp` default target to install, build, and run unit and\ne2e tests on back- and frontend with a single command:\n\n```bash\n$ gulp\n```\n\n### Debug Output\n\nVarious components can print debug output. To enable the debug output, check the component\nyou're interested in and set the `DEBUG` environment variable.\n\nFor example, `git.service.ts` contains the following line close to the top of the file:\n\n```csharp\nconst debug = debugModule('debug');\nconst trace = debugModule('kdo:git');\n```\n\nTo get the `trace` output you can set the environment variable:\n\n```bash\n$ export DEBUG=kdo:git\n```\n\n## Test\n\n```bash\n# unit tests (front- and backend)\n$ gulp test\n\n# e2e tests (front- and backend)\n$ gulp e2e\n\n# test coverage (backend)\n$ npm run test:cov\n```\n\n**NOTE:** You might have to set the `CHROMEDRIVER_VERSION` environment variable to the\ninstalled Chrome version, e.g. `export CHROMEDRIVER_VERSION=76.0.3809.100`.\n\n## Running the app\n\n**Note:** you'll have to build the frontend first!\n\n```bash\n# development (http://localhost:3000)\n$ npm run start\n\n# watch mode\n$ npm run start:watch:dev\n\n# production mode\n$ npm run start:prod\n```\n\n## Deployment\n\nWe use Docker to create a container that can be deployed to wherever:\n\n```bash\n$ docker-compose build\n```\n\nBefore you can deploy to production, you'll have to create an OAuth App on GitHub and edit the file\n`production.env` (see above). Then you can run:\n\n```bash\n$ export NODE_ENV=production\n$ docker-compose up -d\n```\n\n## License\n\nKeyman Developer Online is [MIT licensed](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeymanapp%2Fdeveloper.keyman.com","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeymanapp%2Fdeveloper.keyman.com","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeymanapp%2Fdeveloper.keyman.com/lists"}