Technical Overview
This document aims to detail the Mustard web application, focusing on engineering aspects such as the programming languages used, software, frameworks used, configuration and infrastructure aspects
Application Overview
The image below shows a high-level overview of the Mustard Web Application and its core components and integrations.
Frontend
The Mustard frontend consists of an Angular (v10) application configured to interface with the Mustard API.
Configuration
The Mustard Angular application has 3 configurable environments, they are located as follows:
Development: ./mustard/frontend/src/environments/environment.ts
Staging: ./mustard/frontend/src/environments/environment.staging.ts
Production: ./mustard/frontend/src/environments/environment.prod.ts
The configuration options are detailed below:
production - accepts true or false. Enables Angular production mode if true.
apiUrl - the absolute URL to the API.
algoliaId - the Algolia app ID to be used.
algoliaKey - the Algolia Key to be used
algoliaPrefix - the Algolia prefix to be used. The prefix allows differentiation of Algolia data between environments (e.g. prod_skills and staging_skills).
showcanDeactivate - accepts true or false. When true enables confirmation before moving away from a page with unsaved changes.
appUrl - the absolute URL to the web application.
linkedinClientId - the client ID of the registered LinkedIn application.
envName - either dev, staging or prod
18nUrl - absolute URL to the root location of hosted localisation files (hosted in S3), e.g. https://widget.mustard.app/staging/i18n/
avatarUrl - - absolute URL to the root location of hosted avatar image files (hosted in S3), e.g. https://widget.mustard.app/staging/avatar/
skillsLimit - the max number of skills that a user can add.
defaultCountryCode - the application default country code, e.g. IE.
talentpinAppId - Intercom App ID for Talent Pin organisation.
stripeKey - the Stripe public key.
Backend
The Mustard backend consists of the following:
Ruby on Rails API (v5)
Sidekiq (background job processing queue)
Redis Database
Postgres Database
Configuration
The configurable items are detailed below:
ALGOLIA_ANALYTIC_KEY - the Algolia analytics key.
ALGOLIA_APP_ID - the ID of the Algolia application.
ALGOLIA_ADMIN_KEY - the Algolia admin key.
ALGOLIA_PUBLIC_KEY - the Algolia public key.
AWS_KEY - access key for AWS access.
AWS_SECRET - secret key for AWS access.
S3_REGION - the AWS S3 region to use, where the bucket(s) reside.
S3_BUCKET - the name of the AWS S3 bucket to store/retrieve items.
REDIS_URL - the absolute URL to the Redis server.
DB_HOST - the hostname of the server where Postgres is running.
DB_PASSWD - the password to use to connect to the Postgres database.
DB_NAME - the name of the Postgres database to connect to.
OAUTH_LINKEDIN_REDIRECT_TO - the absolute URL configured for LinkedIn OAuth redirects.
HONEYPOT_URL
ALGOLIA_PREFIX - the Algolia prefix to be used. The prefix allows differentiation of Algolia data between environments (e.g. prod_skills and staging_skills).
PRIVATE_PEM_PASSWD - password for the private key used to decode secrets.
WEBURL - the absolute URL to the root of the Mustard web application.
DAXTRA_API - the API key to access Daxtra service.
DAXTRA_ACCOUNT - the name of the Daxtra account.
OAUTH_LINKEDIN_ID - LinkedIn OAuth app ID.
OAUTH_LINKEDIN_SECRET - LinkedIn OAuth app secret.
REMOTE_ADDRESS - remote IP used for webhook logging.
WIDGET_DISTRIBUTION - an ID used when invalidating a CloudFront distribution.
WIDGET_BUCKET - AWS S3 bucket used to store widgets.
SES_NAME - AWS Simple Email Service account username.
SES_PASSWD - AWS Simple Email Service account password.
SLACK_ERRORS_HOOK - Slack webhook used to log errors to #errors Slack channel.
EMAIL_INTERCEPTOR - an email address that if configured will be used to for all outgoing emails (development & staging environments only.
SECRET_KEY_JWT - used to verify the integrity of signed JWT tokens.
SECRET_KEY_BASE - used to verify the integrity of signed cookies.
STATSD_HOST - host url of where the application can send statsd metrics
STATSD_PORT - port for statsd host
External Services
The Mustard web application interfaces with several external services to provide additional functionality. These are listed below:
Algolia Search
The Mustard application utilises the Algolia service to provide powerful search functionality throughout the site. Algolia is used to index/search candidate profiles on Mustard.
Daxtra
The Mustard application utilises the Daxtra API to extract metadata from arbitrary CV files for post processing.
LinkedIn OAuth
The Mustard application offers users the ability to sign up / sign in via email and password or via LinkedIn OAuth authentication.
AWS
The mustard application is hosted on AWS via ECS (for API) and Cloudfront (for frontend).
Last updated
Was this helpful?