{"id":33179443,"url":"https://github.com/vinyldns/vinyldns","last_synced_at":"2026-03-03T22:08:39.201Z","repository":{"id":33635388,"uuid":"142474323","full_name":"vinyldns/vinyldns","owner":"vinyldns","description":"DNS automation and governance for streamlining DNS operations and enabling safe and secure DNS self-service","archived":false,"fork":false,"pushed_at":"2025-12-04T02:15:53.000Z","size":33798,"stargazers_count":354,"open_issues_count":107,"forks_count":106,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-12-05T06:22:26.488Z","etag":null,"topics":["automation","ddns","dns"],"latest_commit_sha":null,"homepage":"http://vinyldns.io/","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vinyldns.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":"MAINTAINERS.md","copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-07-26T17:43:18.000Z","updated_at":"2025-11-12T15:57:01.000Z","dependencies_parsed_at":"2024-06-18T20:05:02.024Z","dependency_job_id":"98f62365-20cd-4e4e-9e8c-785de3381ab0","html_url":"https://github.com/vinyldns/vinyldns","commit_stats":{"total_commits":1419,"total_committers":66,"mean_commits":21.5,"dds":0.773784355179704,"last_synced_commit":"372e7db7bcb42a6e27834546e91af5a6115ef797"},"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"purl":"pkg:github/vinyldns/vinyldns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinyldns%2Fvinyldns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinyldns%2Fvinyldns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinyldns%2Fvinyldns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinyldns%2Fvinyldns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vinyldns","download_url":"https://codeload.github.com/vinyldns/vinyldns/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinyldns%2Fvinyldns/sbom","scorecard":{"id":922873,"data":{"date":"2025-08-11","repo":{"name":"github.com/vinyldns/vinyldns","commit":"736b2b15380785af56457ae3bf9ae0b7d7f71d49"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Maintained","score":10,"reason":"8 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":6,"reason":"Found 9/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release-beta.yml:56","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yml:52","Warn: no topLevel permission defined: .github/workflows/notify.yml:1","Warn: no topLevel permission defined: .github/workflows/publish-site.yml:1","Warn: no topLevel permission defined: .github/workflows/release-beta.yml:1","Warn: no topLevel permission defined: .github/workflows/release-vnext.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/verify.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":5,"reason":"badge detected: Passing","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.21.3-beta.1 not signed: https://api.github.com/repos/vinyldns/vinyldns/releases/190302756","Warn: release artifact v0.21.2 not signed: https://api.github.com/repos/vinyldns/vinyldns/releases/189607274","Warn: release artifact v0.21.2-beta.1 not signed: https://api.github.com/repos/vinyldns/vinyldns/releases/189031210","Warn: release artifact v0.21.1 not signed: https://api.github.com/repos/vinyldns/vinyldns/releases/185682300","Warn: release artifact v0.21.0 not signed: https://api.github.com/repos/vinyldns/vinyldns/releases/185465693","Warn: release artifact v0.21.3-beta.1 does not have provenance: https://api.github.com/repos/vinyldns/vinyldns/releases/190302756","Warn: release artifact v0.21.2 does not have provenance: https://api.github.com/repos/vinyldns/vinyldns/releases/189607274","Warn: release artifact v0.21.2-beta.1 does not have provenance: https://api.github.com/repos/vinyldns/vinyldns/releases/189031210","Warn: release artifact v0.21.1 does not have provenance: https://api.github.com/repos/vinyldns/vinyldns/releases/185682300","Warn: release artifact v0.21.0 does not have provenance: https://api.github.com/repos/vinyldns/vinyldns/releases/185465693"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/notify.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/notify.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/notify.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/notify.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-site.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/publish-site.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-beta.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-beta.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-beta.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-beta.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-beta.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-beta.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-beta.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-beta.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-beta.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-beta.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-beta.yml:128: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-beta.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-beta.yml:134: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-beta.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-vnext.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-vnext.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-vnext.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-vnext.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-vnext.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-vnext.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-vnext.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-vnext.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-vnext.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release-vnext.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:88: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:94: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:123: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:129: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/verify.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/verify.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/verify.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/verify.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/verify.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/verify.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/verify.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/verify.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/verify.yml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/vinyldns/vinyldns/verify.yml/master?enable=pin","Warn: containerImage not pinned by hash: build/docker/api/Dockerfile:2","Warn: containerImage not pinned by hash: build/docker/api/Dockerfile:15: pin your Docker image by updating openjdk:11-slim to openjdk:11-slim@sha256:868a4f2151d38ba6a09870cec584346a5edc8e9b71fde275eb2e0625273e2fd8","Warn: containerImage not pinned by hash: build/docker/portal/Dockerfile:1","Warn: containerImage not pinned by hash: build/docker/portal/Dockerfile:23: pin your Docker image by updating openjdk:11-slim to openjdk:11-slim@sha256:868a4f2151d38ba6a09870cec584346a5edc8e9b71fde275eb2e0625273e2fd8","Warn: containerImage not pinned by hash: test/api/functional/Dockerfile:2","Warn: containerImage not pinned by hash: test/api/functional/Dockerfile:17: pin your Docker image by updating vinyldns/build:base-test to vinyldns/build:base-test@sha256:ce2d9e989628bdabc6c643369ac0ac2d7695618c2cfd119a738f22700a960ea3","Warn: containerImage not pinned by hash: test/api/integration/Dockerfile:4","Warn: containerImage not pinned by hash: test/api/integration/Dockerfile:20","Warn: containerImage not pinned by hash: test/portal/functional/Dockerfile:1: pin your Docker image by updating vinyldns/build:base-test-portal to vinyldns/build:base-test-portal@sha256:1358717dfa517283b17dcc31a5b0a96313b0dfc240d517397c1499c16153a331","Warn: containerImage not pinned by hash: utils/admin/Dockerfile:1","Warn: containerImage not pinned by hash: utils/admin/Dockerfile:12: pin your Docker image by updating vinyldns/build:base-build to vinyldns/build:base-build@sha256:fbdb8e7ef9936b92741b486a6aed6c12e12af73696bbf97e8a0eb342b4e8452e","Warn: pipCommand not pinned by hash: utils/admin/Dockerfile:15","Warn: npmCommand not pinned by hash: modules/portal/prepare-portal.sh:7","Warn: npmCommand not pinned by hash: modules/portal/prepare-portal.sh:8","Warn: npmCommand not pinned by hash: test/portal/functional/run.sh:14","Info:   0 out of  13 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  14 third-party GitHubAction dependencies pinned","Info:   0 out of  11 containerImage dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned","Info:   0 out of   3 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-25T06:16:20.959Z","repository_id":33635388,"created_at":"2025-08-25T06:16:20.959Z","updated_at":"2025-08-25T06:16:20.959Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27521030,"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-12-05T02:00:07.920Z","response_time":54,"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":["automation","ddns","dns"],"created_at":"2025-11-16T03:00:36.831Z","updated_at":"2025-12-15T10:02:01.181Z","avatar_url":"https://github.com/vinyldns.png","language":"Scala","funding_links":[],"categories":["网络编程"],"sub_categories":[],"readme":"[![VinylDNS Release](https://img.shields.io/github/v/release/vinyldns/vinyldns?label=latest%20release\u0026logo=github)](https://github.com/vinyldns/vinyldns/releases/latest)\n[![VinylDNS API Docker Image](https://img.shields.io/github/v/release/vinyldns/vinyldns?color=brightgreen\u0026label=API%20Image\u0026logo=docker\u0026logoColor=white\u0026cacheSeconds=300)](https://hub.docker.com/r/vinyldns/api/tags?page=1\u0026ordering=last_updated)\n[![VinylDNS Portal Docker Image](https://img.shields.io/github/v/release/vinyldns/vinyldns?color=brightgreen\u0026label=Portal%20Image\u0026logo=docker\u0026logoColor=white\u0026cacheSeconds=300)](https://hub.docker.com/r/vinyldns/portal/tags?page=1\u0026ordering=last_updated)\n\n\u003cp align=\"left\"\u003e\n  \u003ca href=\"https://www.vinyldns.io/\"\u003e\n    \u003cimg\n      alt=\"VinylDNS\"\n      src=\"img/vinyldns_optimized.svg\"\n      width=\"400\"\n    /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# VinylDNS\n\nVinylDNS is a vendor-agnostic front-end for enabling self-service DNS and streamlining DNS operations. VinylDNS manages\nmillions of DNS records supporting thousands of engineers in production at [Comcast](http://www.comcast.com). The\nplatform provides fine-grained access controls, auditing of all changes, a self-service user interface, secure RESTful\nAPI, and integration with infrastructure automation tools like Ansible and Terraform. It is designed to integrate with\nyour existing DNS infrastructure, and provides extensibility to fit your installation.\n\nVinylDNS helps secure DNS management via:\n\n- AWS Sig4 signing of all messages to ensure that the message that was sent was not altered in transit\n- Throttling of DNS updates to rate limit concurrent updates against your DNS systems\n- Encrypting user secrets and TSIG keys at rest and in-transit\n- Recording every change made to DNS records and zones\n\nIntegration is simple with first-class language support including:\n\n- Java\n- Python\n- Go\n- JavaScript\n\n## Table of Contents\n\n* [Quickstart](#quickstart)\n    - [Quickstart Optimization](#quickstart-optimization)\n* [Things to Try in the Portal](#things-to-try-in-the-portal)\n    + [Verifying Your Changes](#verifying-your-changes)\n    + [Other things to note](#other-things-to-note)\n* [Code of Conduct](#code-of-conduct)\n* [Developer Guide](#developer-guide)\n* [Contributing](#contributing)\n* [Maintainers and Contributors](#maintainers-and-contributors)\n* [Credits](#credits)\n\n## Quickstart\n\nDocker images for VinylDNS live on Docker Hub at \u003chttps://hub.docker.com/u/vinyldns/\u003e. To start up a local instance of\nVinylDNS on your machine with docker:\n\n1. Ensure that you have [docker](https://docs.docker.com/install/)\n   and [docker-compose](https://docs.docker.com/compose/install/)\n1. Clone the repo: `git clone https://github.com/vinyldns/vinyldns.git`\n1. Navigate to repo: `cd vinyldns`\n1. Run `./quickstart/quickstart-vinyldns.sh`. This will start up the api at `localhost:9000` and the portal\n   at `localhost:9001`\n1. See [Things to Try in the Portal](#things-to-try-in-the-portal) for getting familiar with the Portal\n1. To stop the local setup, run `./utils/clean-vinyldns-containers.sh`.\n\nThere exist several clients at \u003chttps://github.com/vinyldns\u003e that can be used to make API requests, using the\nendpoint `http://localhost:9000`.\n\n#### Quickstart Optimization\n\nIf you are experimenting with Quickstart, you may encounter a delay each time you run it. This is because the API and\nPortal are rebuilt every time you launch Quickstart. If you'd like to cache the builds of the API and Portal, you may\nwant to first run:\n\n| Script                     | Description                                                                  |\n|----------------------------|------------------------------------------------------------------------------|\n| `build/assemble_api.sh`    | This will create the API `jar` file which will then be used by Quickstart    |\n| `build/assemble_portal.sh` | This will create the Portal `zip` file which will then be used by Quickstart |\n\nOnce these scripts are run, the artifacts are placed into the `artifacts/` directory and will be reused for each\nQuickstart launch. If you'd like to regenerate the artifacts, simply delete them and rerun the scripts above.\n\n## Things to Try in the Portal\n\n1. View the portal at \u003chttp://localhost:9001\u003e in a web browser\n2. Login with the credentials `professor` and `professor`\n3. Navigate to the `groups` tab: \u003chttp://localhost:9001/groups\u003e\n4. Click on the **New Group** button and create a new group, the group id is the uuid in the url after you view the\n   group\n5. Connect a zone by going to the `zones` tab: \u003chttp://localhost:9001/zones\u003e.\n    1. Click the `-\u003e Connect` button\n    2. For `Zone Name` enter `ok` with an email of `test@test.com`\n    3. For `Admin Group`, choose a group you created from the previous step\n    4. Leave everything else as-is and click the `Connect` button at the bottom of the form\n6. A new zone `ok` should appear in your `My Zones` tab _(you may need to refresh your browser)_\n7. You will see that some records are preloaded in the zone already, this is because these records are preloaded in the\n   local docker DNS server and VinylDNS automatically syncs records with the backend DNS server upon zone connection\n8. From here, you can create DNS record sets in the **Manage Records** tab, and manage zone settings and ***ACL rules***\n   in the **Manage Zone** tab\n9. To try creating a DNS record, click on the **Create Record Set** button under\n   Records, `Record Type = A, Record Name = my-test-a, TTL = 300, IP Addressess = 1.1.1.1`\n10. Click on the **Refresh** button under Records, you should see your new record created\n\n### Verifying Your Changes\n\nVinylDNS will synchronize with the DNS backend. For the Quickstart this should be running on port `19001` on `localhost`\n.\n\nTo verify your changes, you can use a DNS resolution utility like `dig`\n\n```bash\n$ dig @127.0.0.1 -p 19001 +short my-test-a.ok\n1.1.1.1\n```\n\nThis tells `dig` to use `127.0.0.1` as the resolver on port `19001`. The `+short` just makes the output a bit less\nverbose. Finally, the record we're looking up is `my-test-a.ok`. You can see the returned output of `1.1.1.1` matches\nthe record data we entered.\n\n### Other things to note\n\n1. Upon connecting to a zone for the first time, a zone sync is executed to provide VinylDNS a copy of the records in\n   the zone\n1. Changes made via VinylDNS are made against the DNS backend, you do not need to sync the zone further to push those\n   changes out\n1. If changes to the zone are made outside of VinylDNS, then the zone will have to be re-synced to give VinylDNS a copy\n   of those records\n1. If you wish to modify the url used in the creation process from `http://localhost:9000`, to\n   say `http://vinyldns.yourdomain.com:9000`, you can modify the `quickstart/.env` file before execution.\n1. Further configuration can be ac https://www.vinyldns.io/operator/config-portal\n   \u0026 https://www.vinyldns.io/operator/config-api\n\n## Code of Conduct\n\nThis project, and everyone participating in it, are governed by the [VinylDNS Code Of Conduct](CODE_OF_CONDUCT.md). By\nparticipating, you agree to this Code.\n\n## Developer Guide\n\nSee [DEVELOPER_GUIDE.md](DEVELOPER_GUIDE.md) for instructions on setting up VinylDNS locally.\n\n## Contributing\n\nSee the [Contributing Guide](CONTRIBUTING.md).\n\n## Maintainers and Contributors\n\nThe current maintainers (people who can merge pull requests) are:\n\n- Arpit Shah ([@arpit4ever](https://github.com/arpit4ever))\n- Nick Spadaccino ([@nspadaccino](https://github.com/nspadaccino))\n- Jayaraj Velkumar ([@Jay07GIT](https://github.com/Jay07GIT))\n\nSee [AUTHORS.md](AUTHORS.md) for the full list of contributors to VinylDNS.\n\nSee [MAINTAINERS.md](MAINTAINERS.md) for documentation specific to maintainers\n\n## Credits\n\nVinylDNS would not be possible without the help of many other pieces of open source software. Thank you open source\nworld!\n\nGiven the Apache 2.0 license of VinylDNS, we specifically want to call out the following libraries and their\ncorresponding licenses shown below.\n\n- [h2 database](http://h2database.com)\n    - [Mozilla Public License, version 2.0](https://www.mozilla.org/MPL/2.0/)\n- [pureconfig](https://github.com/pureconfig/pureconfig)\n    - [Mozilla Public License, version 2.0](https://www.mozilla.org/MPL/2.0/)\n- [pureconfig-macros](https://github.com/pureconfig/pureconfig)\n    - [Mozilla Public License, version 2.0](https://www.mozilla.org/MPL/2.0/)\n- [junit](https://junit.org/junit4/)\n    - [Eclipse Public License 1.0](https://www.eclipse.org/legal/epl-v10.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinyldns%2Fvinyldns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvinyldns%2Fvinyldns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinyldns%2Fvinyldns/lists"}