{"id":25144446,"url":"https://github.com/openmf/ph-ee-operations-web","last_synced_at":"2025-07-07T12:10:36.023Z","repository":{"id":37089374,"uuid":"243861555","full_name":"openMF/ph-ee-operations-web","owner":"openMF","description":"Operations web application front-end","archived":false,"fork":false,"pushed_at":"2025-06-24T23:51:08.000Z","size":7650,"stargazers_count":5,"open_issues_count":9,"forks_count":34,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-06-25T00:28:55.173Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openMF.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,"zenodo":null}},"created_at":"2020-02-28T21:57:41.000Z","updated_at":"2024-09-10T13:23:47.000Z","dependencies_parsed_at":"2023-10-17T12:13:38.840Z","dependency_job_id":"c24625f0-a2ab-4307-b748-abde83848a11","html_url":"https://github.com/openMF/ph-ee-operations-web","commit_stats":null,"previous_names":[],"tags_count":43,"template":true,"template_full_name":"openMF/ph-ee-start-here","purl":"pkg:github/openMF/ph-ee-operations-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openMF%2Fph-ee-operations-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openMF%2Fph-ee-operations-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openMF%2Fph-ee-operations-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openMF%2Fph-ee-operations-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openMF","download_url":"https://codeload.github.com/openMF/ph-ee-operations-web/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openMF%2Fph-ee-operations-web/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264075705,"owners_count":23553512,"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":[],"created_at":"2025-02-08T19:46:22.157Z","updated_at":"2025-07-07T12:10:30.995Z","avatar_url":"https://github.com/openMF.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Payment Hub EE - UI\n\nUI component for the Payment Hub EE application.\n\nThis project is based on the **openMF/web-app** to provide the same UX as we have for Fineract 1.x.\n\n\n## Getting started\n\n1. Ensure you have the following installed in your system:\n\n    [`git`](https://git-scm.com/downloads)\n\n    [`npm`](https://nodejs.org/en/download/)\n\n2. Install [angular-cli](https://github.com/angular/angular-cli) globally.\n```\nnpm install -g @angular/cli@16.2.3\n```\n\n3. Clone the project locally into your system.\n```\ngit clone https://github.com/openMF/ph-ee-operations-web.git\n```\n\n4. `cd` into project root directory and make sure you are on the master branch.\n\n5. Install the dependencies.\n```\nnpm install\n```\n\n6. Before to run the app, set the environment variables as you need it, please see the environment variable details above\n\n7. To preview the app, run the following command and navigate to `http://localhost:4200/`.\n```\nng serve\n```\n\nThe application is using the demo server with basic authentication by default. The credentials for the same are:\n \n    Username - mifos\n    Password - password\n\n\n### Development server\n\nRun `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.\n\n### Code scaffolding\n\nRun `ng generate component component-name` to generate a new component. You can also use\n`ng generate directive|pipe|service|class|guard|interface|enum|module`.\n\n### Build\n\nRun `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.\n\n\n## Environment variables\n\nYou can set the parameters now using environment variables:\nPlease modify them accordingly your needs (serverUrl, authServerUrl, etc.)\n\nThe environment variables to be set are:\n\n\n`PH_OPS_BACKEND_SERVER_URL`\nSetting for the Payment Hub server url to Operations backend services\n\n`PH_OPS_BULK_CONNECTOR_URL`\nSetting for the Payment Hub server url to Bulk Import Batch creation backend services\n\n`PH_OPS_BATCH_KEY`\nSetting for the Private Key used to sign the Bulk Import Batch creation\n\n`PH_VOU_BACKEND_SERVER_URL`\nSetting for the Payment Hub server url to Vouchers backend services\n\n`PH_VOU_CALLBACK_URL`\nSetting for the callback url to Vouchers creation process\n\n`PH_ACT_BACKEND_SERVER_URL`\nSetting for the Payment Hub server url to Account Management backend services\n\n`PH_PLATFORM_TENANT_ID`\nSetting for the Platform Tenant Identifier used in the APIs calls, Default value `phdefault`\n\n`PH_OAUTH_ENABLED`\nBoolean value to Enable or Disable the OAuth authentication\n\n`PH_OAUTH_SERVER_URL`\nSetting for the server url to OAuth services\n\n`PH_OAUTH_BASIC_AUTH`\nBoolean value to Enable or Disable the Basic Authentication for OAuth\n\n`PH_OAUTH_BASIC_AUTH_TOKEN`\nSetting the Authentication Token for OAuth authentication\n\n`PH_OAUTH_TYPE`\nSet the OAuth authentication type, currently is only supported keycloak\n\n`PH_OAUTH_REALM`\nFor the OAuth authentication with keycloak we need to define the realm\n\n`PH_OAUTH_CLIENT_ID`\nFor the OAuth authentication with keycloak we need to define the client identifier to be used\n\n`PH_OAUTH_CLIENT_SECRET`\nFor the OAuth authentication with keycloak we could to define the client secret to be used\n\n`PH_DEFAULT_LANGUAGE`\nSetting for Languages (i18n) still under development\nDefault language to be used, by default `en` (English US)\n\n`PH_SUPPORTED_LANGUAGES`\nLanguage list of available languages, splited by colon, like en,fr,es\n\n## Profiles\n\nThere are 3 profiles at the moment:\n- DEV (default): `environment.ts` \n- PROD: `environment.prod.ts`\n- KUBERNETES: `environment.kubernetes.ts`\n\nYou can define various settings based on these profiles.\n\n### Usage\n\n`npm [build|server] --configuration [prod|kubernetes]`\n\nTo build the application with the kubernetes profile: `npm build --configuration kubernetes`\n\n## Docker compose\nIt is possible to do a 'one-touch' installation of Mifos X Web App using containers (AKA \"Docker\").\nFineract now packs the Mifos community-app web UI in it's docker deploy.\n\nAs Prerequisites, you must have `docker` and `docker-compose` installed on your machine; see\n[Docker Install](https://docs.docker.com/install/) and\n[Docker Compose Install](https://docs.docker.com/compose/install/).\n\nNow to run a new MifosX Web App instance you can simply:\n\n1. `git clone https://github.com/openMF/ph-ee-operations-web.git ; cd ph-ee-operations-web`\n\n1. for windows, use `git clone https://github.com/openMF/ph-ee-operations-web.git --config core.autocrlf=input ; cd ph-ee-operations-web`\n\n2. `docker-compose up -d`\n\n3. Access the webapp on http://localhost:4200 in your browser.\n\n## Mocked backend\n\nTo use mocked responses please do the following modifications:\n\n\n### Authentication Service\n\nChange\n\n    login(loginContext: LoginContext) {\n        this.alertService.alert({ type: 'Authentication Start', message: 'Please wait...' });\n        this.rememberMe = loginContext.remember;\n        this.storage = this.rememberMe ? localStorage : sessionStorage;\n        this.authenticationInterceptor.setTenantId(loginContext.tenant);\n        let httpParams = new HttpParams();\n        httpParams = httpParams.set('username', loginContext.username);\n        httpParams = httpParams.set('password', loginContext.password);\n        //httpParams = httpParams.set('tenantIdentifier', loginContext.tenant);\n        if (environment.oauth.enabled === 'true') {\n\n            httpParams = httpParams.set('grant_type', 'password');\n            if (environment.oauth.basicAuth) {\n                this.authenticationInterceptor.setAuthorization(`Basic ${environment.oauth.basicAuthToken}`);\n            }\n            return this.http.disableApiPrefix().post(`${environment.oauth.serverUrl}/oauth/token`, {}, { params: httpParams })\n                .pipe(\n                map((tokenResponse: OAuth2Token) =\u003e {\n                    // TODO: fix UserDetails API\n                    this.storage.setItem(this.oAuthTokenDetailsStorageKey, JSON.stringify(tokenResponse));\n                    this.onLoginSuccess({ username: loginContext.username, accessToken: tokenResponse.access_token, authenticated: true, tenantId: loginContext.tenant } as any);\n                    return of(true);\n                })\n                );\n        } else {\n            return this.http.post('/authentication', {}, { params: httpParams })\n                .pipe(\n                map((credentials: Credentials) =\u003e {\n                    this.onLoginSuccess(credentials);\n                    return of(true);\n                })\n                );\n        }\n    }\n\nTo\n\n   \n    login(loginContext: LoginContext) {\n        this.alertService.alert({ type: 'Authentication Start', message: 'Please wait...' });\n        this.rememberMe = loginContext.remember;\n        this.storage = this.rememberMe ? localStorage : sessionStorage;\n        this.authenticationInterceptor.setTenantId(loginContext.tenant);\n        let httpParams = new HttpParams();\n        httpParams = httpParams.set('username', loginContext.username);\n        httpParams = httpParams.set('password', loginContext.password);\n        //httpParams = httpParams.set('tenantIdentifier', loginContext.tenant);\n       \n        this.onLoginSuccess({} as any);\n        return of(true);\n    }\n\n#Auto\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmf%2Fph-ee-operations-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenmf%2Fph-ee-operations-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmf%2Fph-ee-operations-web/lists"}