Skip to main content
Table of contents

Application: frontend

Serves the homepage, transactions and some index pages on GOV.UK


#govuk-platform-health owns the application and is responsible for updating its dependencies.


The production version of this application is hosted on AWS.

SSH Access (AWS)

gds govuk connect ssh -e integration draft_frontend
gds govuk connect ssh -e staging aws/draft_frontend
gds govuk connect ssh -e production aws/draft_frontend

Run a rake task

Example pages published by frontend

Example pages rendered by frontend


Warning The content below is pulled in directly from the repository.
Links might not function properly.

Live examples


Simple smart answer

Transaction start pages:

Hard-coded routes

Licence finders

Some examples:

Transaction done pages

Transaction done with survey pages

Standard survey:

Assisted digital satisfaction surveys:



  • format: our phrase for a type of content
  • scope: each type of calendar (eg daylight saving, bank holidays) is known as a scope. A scope has its own view templates, JSON data source and primary route.

Technical documentation

Frontend is a Ruby on Rails application that renders the citizen-facing part of formats stored in the Content Store. It looks up the passed-in slug in the Content Store.

It also serves the homepage as a hard-coded route.

See app/views/root for some bespoke transaction start pages.

Calendar JSON data files are stored in lib/data/<scope>.json, with a divisions hash for separate data per region (united-kingdom, england-and-wales, scotland or northern-ireland).

Each scope's data file contains a list of divisions, containing a list of years, each with a list of events:

  "title": "UK bank holidays",
  "description": "UK bank holidays calendar - see UK bank holidays and public holidays for 2012 and 2013",
  "divisions": {
    "england-and-wales": {
      "title": "England and Wales",
      "2011": [{
        "title": "New Year's Day",
        "date": "02/01/2011",
        "notes": "Substitute day"

The division title attribute is optional. If this is not present the slug will be humanized and used instead.


Running the application

To run the application standalone, run static and execute the following command:


which uses a local copy of static.

Note that you will have to have GOV.UK Mapit running locally. A valid dataset will have to be loaded for Mapit or postcode lookups will not succeed. This is part of the standard GOV.UK data replication steps.

To run in a full development stack (with DNS, all apps running etc.) use./

If you are using the GDS development virtual machine then the application will be available on the host at

Running the test suite

bundle exec rake runs the test suite.

Additional information for calendars

Send the calendars to the publishing-api:

bundle exec rake publishing_api:publish

Search indexing is performed automatically on data sent to publishing api.

A rake task has been created to generate the bank holidays JSON for a given year. They need to be then inserted, and modified to take into account any additions/modifications made by proclamation. Run the rake task like this:

bundle exec rake bank_holidays:generate_json[2016]

Canonical sources


MIT Licence