This is a mock website which integrates with Encore's APIs and runs a user journey from stock availability until creating a booking. The static config will run for the show "Wicked" as follows:
- get a week's availability from today for the requested quantity - inventory API - summary availability
- get performance seats' availability for the wanted quantity - inventory API - seats availability
- create and add seats to basket after agent authentication - EAPI - create/add to basket
- delete reservation from basket. For the purpose of this demo, it is a static call to delete the only added reservation - EAPI - delete from basket
- create booking. This will confirm reservation with the venue, capture customer details and add booking to the agent account to be invoiced. EAPI - create booking
For the purpose of this demo, the mock site uses static data for environment and data inputs in config.js
as follows:
// staging environment
const env = {
inventory: {
host: 'https://inventory-service.stagingtixuk.io/',
affiliateId: '',
},
eapi: {
host: 'https://eapi.staging.aws.encoretix.co.uk/api/v1/xtest',
affiliateId: '',
affiliatePassword: '',
agentId: '',
agentPassword: '',
env: 'test',
}
};
const inputs = {
productId: 1587,
venueId: 138,
ticketQuantity: 2,
periodAvailability: 7 //days
}
module.exports.env = env;
module.exports.inputs = inputs;
The values left as empty ''
are the API credentials which Encore will provide. The API hosts are environment-specific.
productId
: is the Encore ID for "Wicked"venueId
: is the Encore ID for "Apollo Victoria Theatre"ticketQuantity
: is the wanted number of tickets (this will affect the availability calls - so they need to be dynamic)periodAvailability
: for this demo, I am using a dynamic dates range from the day the demo is run and for a period or days equal to this variable. In this demo, it is set for a week from today.
For creating booking, the API will require customer details, for the purpose of the example, a static json object in customerData.json
which will be used rather than using a form to capture the data.
note: once deployed to prod, hosts and credentials will change and the env
will have to change from test
to live
This demo was developed and run with:
- node (v13.3.0) and npm (6.13.2)
- macOS Catalina (10.15.2)
However, this demo should work on any OS with latest node installed.
This application do not use environment variables but static config.js
to make this simple and easy to test on multiple environments
This application is built with expressJS
(for routing) and Pug
, formally known as Jade
(template engine for view)
In order to run this demo, please do the following:
- Ask Encore to provide API's credentials for both the capability APIs (inventory) and the Entertain API (basket and booking)
- Copy
config.js.dist
toconfig.js
and use the above credentials to fill in the empty credentials (see above description in code example) - From your terminal, navigate to the code folder and run:
> npm i
this would install the application dependencies. Then start the application:
> npm run dev
the website will run on your localhost port 3000: http://localhost:3000/
For the purpose of the demo, this website deals with happy paths and doesn't handle specific errors but catches generic errors and renders a static error template. You would be able to check logs in the terminal which you started the application on.