{"id":20908685,"url":"https://github.com/cms-enterprise/mint-app","last_synced_at":"2026-03-18T00:02:50.048Z","repository":{"id":36985598,"uuid":"467206098","full_name":"CMS-Enterprise/mint-app","owner":"CMS-Enterprise","description":"MINT App","archived":false,"fork":false,"pushed_at":"2025-06-25T20:48:14.000Z","size":231348,"stargazers_count":3,"open_issues_count":7,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-25T21:35:07.327Z","etag":null,"topics":["graphql","serverless"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/CMS-Enterprise.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-03-07T18:07:06.000Z","updated_at":"2025-06-23T15:56:55.000Z","dependencies_parsed_at":"2023-10-26T21:24:15.291Z","dependency_job_id":"14f4dddd-74d6-4d21-9ffb-ef8f33c0a442","html_url":"https://github.com/CMS-Enterprise/mint-app","commit_stats":null,"previous_names":["cms-enterprise/mint-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CMS-Enterprise/mint-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CMS-Enterprise%2Fmint-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CMS-Enterprise%2Fmint-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CMS-Enterprise%2Fmint-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CMS-Enterprise%2Fmint-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CMS-Enterprise","download_url":"https://codeload.github.com/CMS-Enterprise/mint-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CMS-Enterprise%2Fmint-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262545037,"owners_count":23326660,"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":["graphql","serverless"],"created_at":"2024-11-18T14:08:28.033Z","updated_at":"2026-03-18T00:02:50.033Z","avatar_url":"https://github.com/CMS-Enterprise.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CMS MINT Application\n\nThis repository contains the application code for CMS MINT (Model Innovation Tool).\n\nThis application has the following main components:\n- A React frontend, using [Apollo](https://www.apollographql.com/docs/react/).\n- A Go backend that provides REST and GraphQL APIs.\n- A Postgres database.\n- A few lambda functions for PDF generation and file upload virus scanning.\n\n## Documentation\n\n- [Development environment setup](./docs/dev_environment_setup.md)\n- [Contributing](./CONTRIBUTING.md)\n- [Architecture Decision Records (ADRs)](./docs/adr)\n- [Frontend docs](./src/README.md)\n- [Backend docs](./pkg/README.md)\n- [Running development tasks with `scripts/dev`](./docs/dev_script_usage.md) - includes instructions on running the application locally\n- GraphQL development\n  - [Playground usage](./docs/graphql_playground.md)\n  - [Schema modification and backend code](./pkg/README.md#graphql-graph)\n  - [Frontend code](./src/README.md#graphql)\n- [Working with the database](./docs/database.md) - includes instructions on modifying the database schema\n- [Testing locally](./docs/local_testing.md)\n- [Docker Compose files and usage](./docs/docker_compose.md)\n- [Deployment Process](./docs/operations/deployment_process.md)\n- [Interacting with CEDAR](./docs/cedar.md) - CEDAR is a CMS system whose API we interact with; this includes instructions on how to connect to it\n- [Background Worker (Faktory)](./docs/faktory.md) - Faktory is our background job server and processor.\n\n\n## Repository Structure\n\nThis repository has several major subfolders:\n\n- `.github` contains GitHub-related configuration; notably, `.github/workflows` contains the workflow definitions for CI/CD through GitHub Actions.\n- `.storybook` contains configuration for [Storybook](https://storybook.js.org/), which can be used for viewing and designing React components in isolation.\n- `.vscode` contains settings and suggested extensions for developing in VS Code.\n- `cmd` contains Go CLI scripts for various utilities.\n- `config/tls` contains certificates that need to be trusted by the MINT backend.\n- `cypress` contains end-to-end/functional tests using [Cypress][https://www.cypress.io/], as well as necessary configuration.\n- `docs` contains general documentation for the MINT application; the `docs/adr` subfolder contains records of architectural decisions, while `docs/operations` contains information on operational procedures such as deploying the application.\n- `migrations` contains SQL files that together define the database schema; these are deployed using [Flyway](https://flywaydb.org/).\n- `pkg` contains the Go source code for the application's backend.\n- `public` contains static assets for the frontend.\n- `scripts` contains Bash and Ruby scripts used for various development and operational tasks.\n- `src` contains the TypeScript source code for the application's React frontend.\n\n## Optional Setup\n\n### LaunchDarkly\n\nThe app uses LaunchDarkly to control feature flags in deployed environments. By default the application run in offline mode and uses default values for all flags. To enable loading the flags from LaunchDarkly, add the following to `.envrc.local`:\n\n```bash\nexport LD_SDK_KEY=sdk-0123456789\nexport FLAG_SOURCE=LAUNCH_DARKLY\n```\n\nThese values can be obtained from the LaunchDarkly settings page or from 1Password.\n\nTo modify the default flags being used, edit [`src/views/FlagsWrapper/index.tsx`](./src/views/FlagsWrapper/index.tsx). In the call to `asyncWithLDProvider()` inside `useEffect()`, modify the values being passed as the `flags` option.\n\n### 1Password\n\n_See also:\n[ADR on how we share secrets](./docs/adr/0019-use-1password-for-sharing-secrets.md)_\n\nTruss have set up an [EASi 1Password vault](https://cmseasi.1password.com) for EASi and\nMINT engineers to securely share secrets, such as API keys. You will need to be\ninvited to generate login credentials.\n\nIf you need access to a secret that is not in the EASi vault, please ask for\nsomeone to add it to the vault.\n\n### Cloud Services\n\nYou may need to access cloud service to develop the application. This allows\naccess to AWS resources (ex. SES Email).\n\nFollow the instructions in the infra repo\n[here](https://github.com/CMS-Enterprise/mint-infra#ctkey-wrapper). You'll need to add\nthe infra account environment variables to your `.envrc.local`. You can then run\nthe `ctkey` command to get/set AWS environment variables.\n\n```bash\nhttps_proxy=localhost:8888 \\\\\nctkey --username=$CTKEY_USERNAME \\\\\n--password=$CTKEY_PASSWORD \\\\\n--account=$AWS_ACCOUNT_ID \\\\\n--url=$CTKEY_URL \\\\\n--idms=$CT_IDMS \\\\\n--iam-role=$CT_AWS_ROLE setenv\n```\n\nEventually, we will move this over to wrapper so developers do not need to\nmanually run these commands.\n\n## Development and Debugging\n\n(#authentication)\n### Authentication\n\nThe application has two authentication modes. The main mode is to use Okta to\nauthenticate using hosted services. The second is to use a local-only login mode\nthat avoids this network dependency.\n\nTo sign in using local mode, Click the **Use Local Auth** button on the sign in\npage. This is only provided when running the app locally.\n\nTo enable Okta authentication locally, add the following values to\n`.envrc.local`:\n\n```bash\nexport OKTA_TEST_USERNAME=\nexport OKTA_TEST_PASSWORD=\nexport OKTA_TEST_SECRET=\n```\n\nThese values can be found in 1Password under \"CMS IDM Test Account\".\n\n### Routes Debugging\n\nSetting the `DEBUG_ROUTES` environment variable, and upon startup, this will log\nout a representation of all routes that have been registered.\n\n```shell\n$ DEBUG_ROUTES=1 ./bin/mint serve\n...\nROUTE: /api/v1/healthcheck\nPath regexp: ^/api/v1/healthcheck$\nQueries templates:\nQueries regexps:\n\nROUTE: /api/graph/playground\nPath regexp: ^/api/graph/playground$\nQueries templates:\nQueries regexps:\n...\n```\n\n### Minio\n\n[MinIO](https://min.io/) is an S3 compatible object store. It ships as a Docker\ncontainer and accepts normal AWS S3 API requests. This allows us to test file\nuploading functionality in our local development environments without needing to\ninteract with CMS AWS accounts.\n\nThe container is configured as part of our `docker-compose.yml` and should be\nrunning when you `scripts/dev up`.\n\nThe container is accessed from the browser using the hostname `minio`. To make\nthis work, run `scripts/dev hosts:check` and press enter to setup this hostname\non your machine.\n\nYou can use `scripts/dev minio:clean`, `scripts/dev minio:infected`, or\n`scripts/dev minio:pending` to modify the virus scanning status of files in\nminio during development.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcms-enterprise%2Fmint-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcms-enterprise%2Fmint-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcms-enterprise%2Fmint-app/lists"}