Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

GOV.UK Mainstream, Home & Search Frontend

Application to serve some mainstream formats and the homepage for GOV.UK.

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.

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

If you are using docker to run the application (which is advised) it will be available on the host at

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


which uses a local copy of static and content from production.

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./

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_calendars

If you're using govuk-docker, you may need to govuk-docker-up on publishing-api in a separate shell. You may also need to run the rake task a couple of times if you encounter timeouts.

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