- go-sample-frontend: the React front end, shared by all three sample apps.
- go-sample-backend-java: the Java backend.
- go-sample-backend-typescript: the TypeScript backend.
What this tutorial covers
By the end, you’ll have an account opening application that:- Starts a verification journey through the Go Journey API v2.
- Renders each screen from the journey’s own configuration, rather than from hardcoded forms.
- Collects identity details, contact details, an address, a photo ID, and a selfie.
- Screens the applicant against PEPs and sanctions lists.
- Polls for the outcome and shows the decision, including a referral to manual review.
Prerequisites
- Access to the Go dashboard, with permission to create and publish journeys.
- Licences for the modules this tutorial uses. Licences are assigned to your department by GBG, and an unlicensed module shows a warning icon in the Journey builder.
- An API client. See Manage API clients for how to create one and get your client ID and secret.
- Node.js v18 or higher, for the front end and the TypeScript backend.
- JDK 21 and Maven, only if you choose the Java backend.
- Git, to clone the sample repositories.
Part 1: Build the journey
The application renders its screens from whatever your journey collects, so the journey comes first. An account opening journey does more than confirm who someone is. It also screens them against sanctions and PEPs lists, and it gives a reviewer a way to resolve the cases that sit between accept and reject. The finished journey looks like this. Eight modules run in sequence, then three evaluation nodes route the applicant to accept, reject, or a manual review that a person resolves.
The banking account opening journey
Add the modules
Set the country on Address Verification
- Click the Address Verification (Global) module in the journey.
- Click Settings.
- In the Country field, enter the ISO3 code for the country you verify addresses in, for example
GBR. - Click Save all settings.
GBR, FRA or DEU. An ISO2 code such as GB is also accepted. For US addresses, use the dedicated US variant instead, which is certified for USPS DPV and CASS.Set the dataset on PEPs and Sanctions
- Click the PEPs and Sanctions Standard module in the journey.
- Click Settings.
- Click the Datasets field and select Politically Exposed Persons. Remove any other dataset, so it’s the only one listed.
- Click Save all settings.
Add the first evaluation
positive renders an approval, negative a decline, and neutral a referral to manual review.Give the Reject and Accept branches an End of journey node.Add the manual review branch
- A Document Attachments module, so the reviewer has the captured document to look at.
- A second Evaluation node with one decision, Manual review with classification Neutral and All Match, where Document Attachments is ATTACHED.
- A Manual Review module on that branch, configured as a two-button review.
Add the review outcome evaluation
Publish to Preview
Copy the resource ID and version
<resourceId>@<version>, for example:Part 2: Set up the backend
Clone the backend in the language you prefer. Both expose the same HTTP API, so the front end works with either.- Java
- TypeScript
.env.local in the repository root:src/main/resources/application-northbank.yml and set your journey:http://localhost:8081. The script finds JDK 21, loads .env.local, and starts the right profile.live command is what switches them to your real journey.
Set your region
The samples default to the EU platform. If your tenant was provisioned elsewhere, then change the base URL and the region together:- Java
- TypeScript
application-northbank.yml:Part 3: Set up the front end
The front end is one repository holding three applications. This tutorial uses the banking one.apps/northbank/.env.local:
NEXT_PUBLIC_* values are compiled into the browser bundle. Never put credentials here. They belong in the backend’s .env.local.http://localhost:3000. With the backend already running, you’ll land on the first screen of your own journey.
Troubleshooting
The document screen is skipped
The document screen is skipped
outstanding. The sample marks that screen always-collect in the Java config, or alwaysCollect in TypeScript, so it renders from collects regardless.If you build your own screen plan and the document screen never appears, this is why.The app shows a generic 'A few more details' form
The app shows a generic 'A few more details' form
No screen mapped for outstanding elements, which names the unmapped elements, then add them to the screen plan.A screen asks for details the customer already entered
A screen asks for details the customer already entered
collects after every republish rather than assuming the shape holds.Every request fails with an expired session
Every request fails with an expired session
sessionStorage, so reloading resumes the journey, but a new tab starts a fresh one.Authentication succeeds but journey calls fail
Authentication succeeds but journey calls fail
region and base-url name the same region.A module returns an error rather than a decision
A module returns an error rather than a decision