{"id":20038756,"url":"https://github.com/defra/ffc-grants-file-sender","last_synced_at":"2026-02-08T03:08:05.149Z","repository":{"id":37045043,"uuid":"343376009","full_name":"DEFRA/ffc-grants-file-sender","owner":"DEFRA","description":"ffc-grants-file-sender","archived":false,"fork":false,"pushed_at":"2024-10-21T14:47:53.000Z","size":1046,"stargazers_count":1,"open_issues_count":6,"forks_count":1,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-07-31T00:48:50.344Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DEFRA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2021-03-01T10:28:43.000Z","updated_at":"2024-10-21T14:44:56.000Z","dependencies_parsed_at":"2023-01-24T10:15:14.688Z","dependency_job_id":"f594f246-58db-46e0-946e-fa80923080a3","html_url":"https://github.com/DEFRA/ffc-grants-file-sender","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":"DEFRA/ffc-template-node","purl":"pkg:github/DEFRA/ffc-grants-file-sender","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DEFRA%2Fffc-grants-file-sender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DEFRA%2Fffc-grants-file-sender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DEFRA%2Fffc-grants-file-sender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DEFRA%2Fffc-grants-file-sender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DEFRA","download_url":"https://codeload.github.com/DEFRA/ffc-grants-file-sender/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DEFRA%2Fffc-grants-file-sender/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29218670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T02:25:35.815Z","status":"ssl_error","status_checked_at":"2026-02-08T02:24:27.970Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2024-11-13T10:32:35.297Z","updated_at":"2026-02-08T03:08:05.135Z","avatar_url":"https://github.com/DEFRA.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FFC Grants File Sender\n\nFFC Grants file sender microservice - This service will pickup file from azure blob storage and send it to sharepoint.\n\n## Prerequisites\n\n- Access to an instance of an\n[Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/)(ASB).\n- Docker\n- Docker Compose\n\nOptional:\n\n- Kubernetes\n- Helm\n\n### Azure Service Bus\n\nThis service depends on a valid Azure Service Bus connection string for\nasynchronous communication.  The following environment variables need to be set\nin any non-production (`!config.isProd`) environment before the Docker\ncontainer is started. When deployed into an appropriately configured AKS\ncluster (where [AAD Pod Identity](https://github.com/Azure/aad-pod-identity) is\nconfigured) the micro-service will use AAD Pod Identity through the manifests\nfor\n[azure-identity](./helm/ffc-grants-claim-service/templates/azure-identity.yaml)\nand\n[azure-identity-binding](./helm/ffc-grants-claim-service/templates/azure-identity-binding.yaml).\n\n| Name                   | Description                                                                                |\n| ----                   | -----------                                                                                |\n| SERVICE_BUS_HOST       | Azure Service Bus hostname, e.g. `myservicebus.servicebus.windows.net`                     |\n| SERVICE_BUS_PASSWORD   | Azure Service Bus SAS policy key                                                           |\n| SERVICE_BUS_USER       | Azure Service Bus SAS policy name, e.g. `RootManageSharedAccessKey`                        |\n\n## Environment variables\n\nThe following environment variables are required by the application container.\nValues for development are set in the Docker Compose configuration. Default\nvalues for production-like deployments are set in the Helm chart and may be\noverridden by build and release pipelines.\n\n| Name                                      | Description                               | Required  | Default            | Valid                       | Notes                                                                             |\n| ----                                      | -----------                               | :-------: | -------            | -----                       | -----                                                                             |\n| APPINSIGHTS_CLOUDROLE                     | Role used for filtering metrics           | no        |                    |                             | Set to `ffc-grants-file-sender` in docker compose files                               |\n| APPINSIGHTS_INSTRUMENTATIONKEY            | Key for application insight               | no        |                    |                             | App insights only enabled if key is present. Note: Silently fails for invalid key |\n| NODE_ENV                                  | Node environment                          | no        | development        | development,test,production |                                                                                   |\n| PORT                                      | Port number                               | no        | 3000               |                             |                                      |\n| PROTECTIVE_MONITORING_URL                 | protective monitoring url                 | no        | url                |                             |                                                                                   |\n| SHAREPOINT_TENANT_ID                      | sharepoint tenant id                      | no        |                    |                             |                                                                                   |\n| SHAREPOINT_CLIENT_ID                      | sharepoint client id                      | no        |                    |                             |                                                                                   |\n| SHAREPOINT_CLIENT_SECRET                  | sharepoint client secret                  | no        |                    |                             |                                                                                   |\n| SHAREPOINT_HOSTNAME                       | sharepoint host name                      | no        |                    |                             |                                                                                   |\n| SHAREPOINT_SITE_PATH                      | sharepoint site path                      | no        |                    |                             |                                                                                   |\n| SHAREPOINT_DOCUMENT_LIBRARY               | sharepoint document lib path              | no        |                    |                             |                                                                                   |\n\nRunning the integration tests locally requires access to ASB, this can be\nachieved by setting the following environment variables:\n`SERVICE_BUS_HOST`, `SERVICE_BUS_USER`, `SERVICE_BUS_PASSWORD` must be set to a valid, developer specific queue that is\navailable on ASB e.g. `ffc-grants-file-sender-\u003cinitials\u003e` where `\u003cinitials\u003e` are the\ninitials of the developer.\n\n## Test structure\n\nThe tests have been structured into subfolders of ./test as per the\n[Microservice test approach and repository structure](https://eaflood.atlassian.net/wiki/spaces/FPS/pages/1845396477/Microservice+test+approach+and+repository+structure)\n\n## How to run tests\n\nA convenience script is provided to run automated tests in a containerised\nenvironment. This will rebuild images before running tests via docker-compose,\nusing a combination of `docker-compose.yaml` and `docker-compose.test.yaml`.\nThe command given to `docker-compose run` may be customised by passing\narguments to the test script.\n\nExamples:\n\n```bash\n# Run all tests\nscripts/test\n\n# Run tests with file watch\nscripts/test -w\n# or\nscripts/test --watch\n```\n\n## Running the application\n\nThe application is designed to run in containerised environments, using Docker\nCompose in development and Kubernetes in production.\n\n- A Helm chart is provided for production deployments to Kubernetes.\n\n### Build container image\n\nContainer images are built using Docker Compose, with the same images used to\nrun the service with either Docker Compose or Kubernetes.\n\nWhen using the Docker Compose files in development the local `app` folder will\nbe mounted on top of the `app` folder within the Docker container, hiding the\nCSS files that were generated during the Docker build.  For the site to render\ncorrectly locally `npm run build` must be run on the host system.\n\nBy default, the start script will build (or rebuild) images so there will\nrarely be a need to build images manually. However, this can be achieved\nthrough the Docker Compose\n[build](https://docs.docker.com/compose/reference/build/) command:\n\n```bash\n# Build container images\ndocker-compose build\n```\n\n### Start and stop the service\n\nUse Docker Compose to run service locally.\n\n`docker-compose up`\n\nAdditional Docker Compose files are provided for scenarios such as linking to\nother running services.\n\nLink to other services:\n\n```bash\ndocker-compose -f docker-compose.yaml -f docker-compose.override.yaml -f docker-compose.link.yaml up\n```\n\n#### Accessing the pod\n\nThe service is exposed via a Kubernetes ingress, which requires an ingress\ncontroller to be running on the cluster. For example, the NGINX Ingress\nController may be installed via Helm.  \n\nAlternatively, a local port may be forwarded to the pod:\n\n```bash\n# Forward local port to the Kubernetes deployment\nkubectl port-forward --namespace=ffc-grants deployment/ffc-grants-file-sender 3000:3000\n```\n\nOnce the port is forwarded or an ingress controller is installed, the service\ncan be accessed and tested in the same way as described in the\n[Test the service](#test-the-service) section above.\n\n#### Probes\n\nThe service has both an Http readiness probe and an Http liveness probe\nconfigured to receive at the below end points.\n\nReadiness: `/healthy`\nLiveness: `/healthz`\n\n## CI pipeline\n\nThis service uses the [FFC CI pipeline](https://github.com/DEFRA/ffc-jenkins-pipeline-library)\n\n## Licence\n\nTHIS INFORMATION IS LICENSED UNDER THE CONDITIONS OF THE OPEN GOVERNMENT LICENCE found at:\n\n\u003chttp://www.nationalarchives.gov.uk/doc/open-government-licence/version/3\u003e\n\nThe following attribution statement MUST be cited in your products and applications when using this information.\n\n\u003e Contains public sector information licensed under the Open Government license v3\n\n### About the licence\n\nThe Open Government Licence (OGL) was developed by the Controller of Her Majesty's Stationery Office (HMSO) to enable information providers in the public sector to license the use and re-use of their information under a common open licence.\n\nIt is designed to encourage use and re-use of information freely and flexibly, with only a few conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefra%2Fffc-grants-file-sender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdefra%2Fffc-grants-file-sender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefra%2Fffc-grants-file-sender/lists"}