{"id":23066941,"url":"https://github.com/dvsa/cvs-svc-preparers","last_synced_at":"2025-04-03T09:13:58.345Z","repository":{"id":37444848,"uuid":"157564887","full_name":"dvsa/cvs-svc-preparers","owner":"dvsa","description":"Manages authorised vehicle preparers","archived":false,"fork":false,"pushed_at":"2024-10-24T10:14:33.000Z","size":1373,"stargazers_count":0,"open_issues_count":14,"forks_count":1,"subscribers_count":11,"default_branch":"develop","last_synced_at":"2024-10-24T23:04:47.962Z","etag":null,"topics":["app-dev","cvs-project"],"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/dvsa.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-14T14:56:28.000Z","updated_at":"2024-08-27T13:31:02.000Z","dependencies_parsed_at":"2023-09-22T21:14:14.796Z","dependency_job_id":"ab5ccab6-e59e-46e0-a1b5-674e1fc8763b","html_url":"https://github.com/dvsa/cvs-svc-preparers","commit_stats":null,"previous_names":[],"tags_count":2662,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvsa%2Fcvs-svc-preparers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvsa%2Fcvs-svc-preparers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvsa%2Fcvs-svc-preparers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvsa%2Fcvs-svc-preparers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dvsa","download_url":"https://codeload.github.com/dvsa/cvs-svc-preparers/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246970323,"owners_count":20862509,"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","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":["app-dev","cvs-project"],"created_at":"2024-12-16T05:15:38.821Z","updated_at":"2025-04-03T09:13:58.311Z","avatar_url":"https://github.com/dvsa.png","language":"TypeScript","readme":"# cvs-svc-preparers\n\n## Introduction\n\nThe preparers defects microservice contains some reference data to be used for CVS services and [mobile application](https://github.com/dvsa/cvs-app-mobile) for DVSA.\n\nThe reference data is used in ... part of the application.\n\n---\n\n## Dependencies\n\nThe project runs on node \u003e18.x with typescript and serverless framework. For further details about project dependencies, please refer to the `package.json` file.\n[nvm](https://github.com/nvm-sh/nvm/blob/master/README.md) is used to managed node versions and configuration explicitly done per project using an `.npmrc` file.\n\n---\n\n### Prerequisites\n\nPlease install and run the following security programs as part of your development process:\n\n- [git-secrets](https://github.com/awslabs/git-secrets)\n  After installing, do a one-time set up with `git secrets --register-aws`. Run with `git secrets --scan`.\n\nThese will be run as part of your projects hooks so you don't accidentally introduce any new security vulnerabilities.\n\n---\n\n## Architecture\n\nData is used is made available to VTA for searching a vehicle.\nPlease refer to the the [docs](./docs/README.md) for the API specification and samples of postman requests.\n\n### End to end design\n\n[All in one view](https://wiki.dvsacloud.uk/pages/viewpage.action?pageId=79254695)\n\n### Preparers microservice\n\nMore information about technical designs can be found under the [Preparers Microservice](https://wiki.dvsacloud.uk/display/HVT/Preparers+Microservice) section.\n\n---\n\n## Getting started\n\nSet up your nodejs environment running `nvm use` and once the dependencies are installed using `npm i`, you can run the scripts from `package.json` to build your project.\nThis code repository uses [serverless framework](https://www.serverless.com/framework/docs/) to mock AWS capabilities for local development only.\nYou will also require to install dynamodb serverless to run your project with by running the following command `npm run setup` in your preferred shell.\nOnce dynamoDB is installed, you will need a local serverless profile to be created so that you can start developping locally.\nThe profiles are stored under `~/.aws/credentials`.\n\n```sh\n# ~/.aws/credentials\n\n# Please not only serverless is used to develop locally, not deployment of services are done with this framework\n# It might look like this\n[default]\naws_access_key_id=\u003cyourDummyAccesskey\u003e\naws_secret_access_key=\u003cyourDummySecret\u003e\n\n```\n\nPlease refer to the local development section to [configure your project locally](#developing-locally).\n\n### Environmental variables\n\nThe `BRANCH` environment variable indicates in which environment is this application running. Use `BRANCH=local` for local development. This variable is required when starting the application or running tests.\n\n### Scripts\n\nThe following scripts are available, however you can refer to the `package.json` to see the details:\n\n- install dependencies: `npm install` or `npm i`\n- local development: `npm start`\n- build: `npm run build`\n- unit tests: `npm test` or `npm t`\n- integration tests: `npm run test-i`\n\n### DynamoDB and seeding\n\nIf you want the database to be populated with mock data on start, in your `serverless.yml` file, you need to set `seed` to `true`. You can find this setting under `custom \u003e dynamodb \u003e start`, however please note that the `start` script will already handle that for you!\n\nIf you choose to run the DynamoDB instance separately, you can send the seed command with the following command:\n\n`sls dynamodb seed --seed=preparers`\n\nUnder `custom \u003e dynamodb \u003e seed` you can define new seed operations with the following config:\n\n```yml\ncustom:\n  dynamodb:\n    seed:\n      [SEED NAME HERE]:\n        sources:\n          - table: [TABLE TO SEED]\n            sources: [./path/to/resource.json]\n```\n\n### Developing locally\n\nDynamo should not require further configuration and a local instance with serverless framework will provide a mock you.\n\nDefault local configuration in `serverless.yml` file:\n\n```yml\nmigrate: true\n  seed: true\n  noStart: false\n```\n\n### Debugging\n\nThe following environmental variables can be given to your serverless scripts to trace and debug your service:\n\n```shell\nAWS_XRAY_CONTEXT_MISSING = LOG_ERROR\nSLS_DEBUG = *\nBRANCH = local\n```\n\n---\n\n## Testing\n\nJest is used for unit testing.\nPlease refer to the [Jest documentation](https://jestjs.io/docs/en/getting-started) for further details.\n\n### Unit test\n\nIn order to test, you need to run the following:\n\n```sh\nnpm run test # unit tests\n```\n\n### Integration test\n\nIn order to test, you need to run the following, with the service running locally:\n\n```sh\nnpm run test-i # for integration tests\n```\n\n### End to end\n\n- [Automation test repository](https://github.com/dvsa/cvs-auto-svc)\n- [Java](https://docs.oracle.com/en/java/javase/11/)\n- [Serenity Cucumber with Junit](https://serenity-bdd.github.io/theserenitybook/latest/junit-basic.html)\n\n---\n\n## Infrastructure\n\nWe follow a [gitflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) approach for development.\nFor the CI/CD and automation please refer to the following pages for further details:\n\n- [Development process](https://wiki.dvsacloud.uk/display/HVT/CVS+Pipeline+Infrastructure)\n- [Pipeline](https://wiki.dvsacloud.uk/pages/viewpage.action?pageId=36870584)\n\n---\n\n## Contributing\n\n### Hooks and code standards\n\nThe projects has multiple hooks configured using [husky](https://github.com/typicode/husky#readme) which will execute the following scripts: `security-checks`, `audit`, `tslint`, `prepush`.\nThe codebase uses [typescript clean code standards](https://github.com/labs42io/clean-code-typescript), tslint as well as sonarqube for static code analysis.\n\nSonarQube is available locally, please follow the instructions below if you wish to run the service locally (brew is the preferred approach).\n\n### Static code analysis\n\n_Brew_ (recommended):\n\n- Install sonarqube using brew\n- Change `sonar.host.url` to point to localhost, by default, sonar runs on `http://localhost:9000`\n- run the sonar server `sonar start`, then perform your analysis `npm run sonar-scanner`\n\n_Manual_:\n\n- [Download sonarqube](https://www.sonarqube.org/downloads/)\n- Add sonar-scanner in environment variables in your profile file add the line: `export PATH=\u003cPATH_TO_SONAR_SCANNER\u003e/sonar-scanner-3.3.0.1492-macosx/bin:$PATH`\n- Start the SonarQube server: `cd \u003cPATH_TO_SONARQUBE_SERVER\u003e/bin/macosx-universal-64 ./sonar.sh start`\n- In the microservice folder run the command: `npm run sonar-scanner\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvsa%2Fcvs-svc-preparers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdvsa%2Fcvs-svc-preparers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvsa%2Fcvs-svc-preparers/lists"}