The webapp is configured via environment variables. The following variables are available:
-
NEXT_PUBLIC_DEPARTURE_DATE_MIN_DAYS
: The minimum number of days in the future for the departure date -
NEXT_PUBLIC_DEPARTURE_DATE_MAX_DAYS
: The maximum number of days in the future for the departure date -
NEXT_PUBLIC_AIRPORTS_WHITELIST
: A comma-separated list of airport codes of whitelisted airports. At least the departure or the arrival airport must be in this list. -
NEXT_PUBLIC_AIRPORTS_BLACKLIST
: A comma-separated list of airport codes of blacklisted airports. If the departure or the arrival airport is in this list, no policy can be created. -
PREMIUM
: Set the premium in wei. Defaults to15000000
. -
NEXT_PUBLIC_APP_BASE_URL
: The base URL where the webapp is deployed (without trailing slash). Defaults tohttps://flightdelay.app
-
NEXT_PUBLIC_PRODUCT_CONTRACT_ADDRESS
: The address of the product contract -
NEXT_PUBLIC_PRODUCT_TOKENHANDLER_CONTRACT_ADDRESS
: The address of the product token handler contract -
NEXT_PUBLIC_POOL_CONTRACT_ADDRESS
: The address of the flight pool contract -
NEXT_PUBLIC_ORACLE_CONTRACT_ADDRESS
: The address of the flight oracle contract -
NEXT_PUBLIC_FLIGHT_NFT_CONTRACT_ADDRESS
: The address of the flight NFT contract -
NEXT_PUBLIC_ERC20_TOKEN_CONTRACT_ADDRESS
: The address of the ERC20 token contract to pay the premium with -
NEXT_PUBLIC_ERC20_TOKEN_VERSION
: Token version, default is "1", needs to be set to "2" for USDC on Base -
NEXT_PUBLIC_PREMIUM_TOKEN_SYMBOL
: The symbol of the premium token -
NEXT_PUBLIC_PREMIUM_TOKEN_DECIMALS
: The number of decimals of the premium token -
NEXT_PUBLIC_CONTRACTS_BADGE_TEXT
: The badge text to show on the contracts page (optional). Used to indicate the environment (e.g. "test", ...) -
STATISTICS_PROVIDER_MNEMONIC
: The mnemonic of the statistics provider. This account is used to create the policies. -
STATISTICS_PROVIDER_MIN_BALANCE
: The minimum balance of the statistics provider. If the balance is below this value, the provider will not be able to create new policies and the readiness check will fail. -
STATUS_PROVIDER_MIN_BALANCE
: The minimum balance of the status provider. If the balance is below this value, the provider will not be able to send oracle responses and the readiness check will fail. -
STATUS_PROVIDER_MNEMONIC
: The mnemonic of the status provider. This account is used to send the oracle response transactions. -
RISKPOOL_MIN_CAPACITY
: The minimum capacity of the risk pool in wei. If the capacity is below this value, the policy creation will not be possible. -
ORACLE_ARRIVAL_CHECK_DELAY_SECONDS
: The delay in seconds for the oracle to check the arrival status after the exected arrival time -
GAS_LIMIT
: The gas limit for oracle responses (defaults to5000000
) -
RISKPOOL_MAX_PAYOUT_CHECK_LOOKAHEAD_SECONDS
: The lookahead time in seconds for the risk pool maximum payout check (executed during readyness checks). Defaults to 172800 seconds (2 days). -
NEXT_PUBLIC_EXPECTED_CHAIN_ID
: The expected chain ID -
NEXT_PUBLIC_EXPECTED_CHAIN_NAME
: The expected chain name (optional, required for automatic chain adding) -
NEXT_PUBLIC_EXPECTED_CHAIN_RPC_NODE_URL
: The expected chain RPC node URL (optional, required for automatic chain adding) -
NEXT_PUBLIC_EXPECTED_CHAIN_BLOCK_EXPLORER_URL
: The expected chain block explorer URL (optional, required for automatic chain adding) -
NEXT_PUBLIC_EXPECTED_CHAIN_TOKEN_NAME
: The expected chain native token name (optional, required for automatic chain adding) -
NEXT_PUBLIC_EXPECTED_CHAIN_TOKEN_SYMBOL
: The expected chain native token symbol (optional, required for automatic chain adding) -
NEXT_PUBLIC_EXPECTED_CHAIN_TOKEN_DECIMALS
: The expected chain native token decimals (optional, required for automatic chain adding) -
FLIGHTSTATS_BASE_URL
: The base URL for the Flightstats API -
FLIGHTSTATS_APP_ID
: The Flightstats API application ID -
FLIGHTSTATS_APP_KEY
: The Flightstats API application key -
LOG_API_PROXY
: set thetrue
to log proxy requests on the backend -
LOG_LEVEL
: The log level for the backend api (debug, info, warn, error) -
NEXT_PUBLIC_GA_MEASUREMENT_ID
: The Google Analytics measurement ID. No tracking is done if this value is not set -
NEXT_PUBLIC_GA_ENVIRONMENT_ID
: The Google Analytics environment identifier -
CSP_ENABLED
: Set totrue
to enable the Content Security Policy
The webapp uses Typechain to generate smart contract bindings. The generated files are stored in the src/contracts
directory (which is not commited to git, to ensure the latest artifacts are used). The generation is done automatically after running npm install
.
Currently not all smart contracts are compiled automatically, due to the huge number of classes this would generate.
Which contracts are compiled is defined in the package.json
file in tasks typechainOpenzeppelinTypes
, typechainGif
and typechainFlight
.
npm run dev
Important: This project requires a fontawesome pro license. Please set your auth token in the FONTAWESOME_NPM_AUTH_TOKEN
environment variable.
curl -X POST http://localhost:3000/api/oracle -H "Content-Type: application/json" -d {} -w " %{http_code}\n"
npm run test
(or)
npm run testLoop
Via container created by executing
docker build -t flightdelay-ui-webapp .
Important: This project requires a fontawesome pro license. Please set your auth token in the FONTAWESOME_NPM_AUTH_TOKEN
environment variable.
This repository uses Gitflow as branching strategy. The main branches are:
main
: The main branch for production releasesdevelop
: The main branch for development
Feature branches are created from develop
and merged back into develop
via pull requests (or git merge). Hotfix branches are created from main
and merged back into develop
and main
via pull requests (or git merge).
Assumption: the current branch is develop
and the branch is up-to-date and contains the latest changes.
git switch main
git pull
git merge develop
Now the main
branch contains the latest changes from develop
and the production system can be updated from the main
branch.
Assumption: a hotfix is required for the production system.
git switch main
git pull
git switch -c hotfix/<branch name>
# implement the hotfix on that branch
Assumption: the hotfix branch is up-to-date and contains the latest changes.
git switch main
git pull
git merge hotfix/<branch name>
git switch develop
git pull
git merge hotfix/<branch name>
Now the hotfix is merged into main
and develop
and the hotfix branch can be deleted. Production can be updated from the main
branch and the development can continue on the develop
branch.