Switch branches/tags
9-integrate-ad-verification 37-01pc-prebid 56-amp-krux 62-prebid-safeframe-cleanup 64-mpu-clash 64-safeframe-ab 69-topbanner-same 77-ozone-lotame 77-prebid-has-a-whiteboard-s2s-adapter 78-bigpop 85-pb-dfp-auctionid 90-appnexus-customData 99-amp-personal-ad 107-serve-prebid-creatives-in-safeframes 111-dfp-consent-as-key-value 116-prebid-on-release-1120 120-prebid-on-release-1150 122-bidWon-event 124-logo-links-on-paid-galleries-work 125-pbtest 143-sonobi-render 145-shorten-vendorlistjs 153-amp-unruly 155-whitebeard-openx-sample US-climate-epic-copy a11y-extension aa-chart-atoms aa-youtube-player-colour abtest-hide-image-audio-page add-free-facia add-pod-links add-podcast-link add-reader-revenue-dev-utils add-reader-revenue-documentation af-tmp-football-fixes ak-email-headers always-ask-if-tagged-at-top-of-test-selector amp-resizing-html at-australia-email-banners at-callout-css-change at-crossword-btn-colour-change at-email-society-weekly at-email-the-guardian-today at-film-weekly-email-banner-2 at-film-weekly-email-banner at-greenlight-email-banners at-hosted-content-social-icons at-midterms-minute-email-banners at-opinion-australia-email-banner at-paidcontent-link-caption-colour at-paidcontent-link-change at-paidcontent-video-socialicons at-uk-au-email-banners atoms-use-master-asset audio-ab-to-50 audio-design-fixes audio-fake-wave audio-series-design-bug audio-square-images audio-tag-fix audio-tag-page audio-test-2 audio-test-3 audio-test-data-fix audit-common australia-epic-test aw-a11y aw-amp-cleaner-better-log aw-amp-cleaner aw-amp-switch aw-article-test aw-babel-fun aw-brighter-media-caption aw-cancellation-page aw-change-account-messaging-url aw-change-navlinks aw-data-model-role-ismandatory aw-dcr-soundcloud aw-delivery-to-correspondence aw-dont-auto-focus-search aw-fix-guui-json aw-fix-instagram aw-fix-membership-messaging-ga aw-interview-without-grid aw-issue-md aw-quiet-a11y aw-remove-start-url-pwa aw-shrink-giant-pin aw-split-elements aw-stars-screen-readers aw-support-safari aw-tweet-element b-adge-bl badger-badger-badger banner-design banner-with-ticker bt-clearthrough bump-id-lib bump-scala-client bump_identity_lib callout-fix callout-waiting-state cambridge-analytica-custom-epic-test capi-element-support cc-conditional-show-password-field cc-identity-backend-ab cc-reffer-policy-frontend check-contributions-footer-traffic circles-epic clean-up-page-checks comdev-codeowners commercial-client-logging-expiry-push commonsdivision-fixes container-test-tweak contrib-banner-position data-event-fix dcdm-validation dcg-news-pillar-newsletters disallowed-strings-validate-head discussion-on-audio do-not-use-localstorage-for-ab-tests double-banner-as-one drive-aud-traffic-to-support drive-traffic-row em-cs-banner-redeploy em-deploy-banner-by-region em-google-doc em-us-eoy-test-six em-us-epic-test-round-4 email-daily-uppercase-headline email-docs email-front-improvements email-fronts-container-improvements email-remove-trails emmachabane-test-liveblog epic-on-interactives epic-post-one-million epic-test-wip exclusion-list-for-epic extend-articles-switch extend-audio-test-switch extend-cambridge-analytica-test extend-expiries extend-header-test-switch extend-subscribe-header-test facia-press-improvements farmed feedback-status-alert fetch-campaigns-in-applications fetch-tests-from-google-docs fh-add-padding-to-inline-2-ad-slot-on-showcase-article-pages fix-banner fix-commentcount-flake fix-crossword-input-validation fix-epic-styling fix-ff-bug fix-formstack fix-header-podcast fix-js-error fix-midterms fix-signout-function fix-stretched-payment-logos fix-stupid-mistake fix-theobserver-title fix-us-epic-copy fixing-things font-revamp football-admin-improvements football-fixes footer-capitals frank-switch front-ab-test gd-contributions-cookie gd-engagement-banner-acknowledge gd-engagement-banner-ad-block gd-engagement-banner-update gd-epic-ad-slot-test gd-extend-test gd-no-pw-set-cookie-for-new-flow gd-optimize-spike gd-optimize-test-update gd-rm-dfp-v3-test gd-us-gun-campaign-epic-regulars get-control-epic-copy-from-google-doc gh-css-components-service-worker gh-fix-search-styles gh-foundation-footer gh-remove-preload-links gh-webfonts-route gp-es6-convert-story-questions gtrufitt-patch-1 guardiantoday-liquid-template guardiantoday-small-changes gun-campaign-expiry hack-day-a11y header-link immersive-badge immersive-caption inline-player interactives-byline jdr-immersive-credit-fix je-extend-commercial-client-logging jp-ad-free-audio-server-side-only jp-ad-free-digipack-fix jp-ad-free-enable-for-digi-pack-subscribers jp-ad-free-glabs-only jp-ad-free-no-audio-no-acast jp-ad-free-no-page-skins jp-ad-free-remove-paid-content-items jp-ad-free-remove-paid-for-content-from-async-loaded-facia-cards jp-add-ad-free-class-to-dynamic-mpu-container jp-datacomics-hack-explore jp-dfp-for-ad-free-videos jp-limit-most-popular-width-ad-free jp-make-support-circles-live jp-minimise-commercial-module-load-ad-free jp-no-carrot-traffic-driver-for-ad-free jp-noads-af-temp-cookie jp-noads-af jp-remove-ad-free-kill-switch jp-remove-commercial-thrashers-for-ad-free jp-remove-paid-for-rich-links-for-ad-free jp-switch-no-ads-into-ad-free-compatibility-mode jp-use-dfp-to-suppress-video-ads jr-17p-banner jr-REDEP-BAN jr-banner-just-a-min jr-big-banner jr-cambridge-copy-final jr-cambridge-copy jr-fix-eurpoe jr-fix-highlight jr-liveblog-world-cip jr-refactor-epic-copy jr-remove-17p jr-remove-border-test jr-remove-double-highlight jr-sync-liveblog-and-article-epic-control jr-turn-always-ask-always-on jranks123-patch-1 jranks123-patch-2 js-better-animation js-clean-up-epic-styles js-default-us-to-high-performing-variant js-epic-for-one-million-campaign js-fix-banner-closing js-fix-copy js-pay-in-epic js-remaining-epic-clean-up js-rename-signin-test js-us-epic-fixes js-variable-test-variants js-when-two-become-one jsonld-articebody-fallback kc-pb kw-181017-Config-type kw-181114-lotame-perf kw-181205-lotame label-colour less-fastdom-for-liveblog-epic line-height liveblog-copy logging-campaign-cache main-media-caption master mbarton/preview-rich-links mc-quick-runtime-error-fix mchv-patch-1 media-icon-bl mjw-prbuilds2-test mk-theme-colour more-banner-tweaks more-comdev-ownership most-pop-prebid most-popular-padding most-viewed-since neilsen-analytics new-audio-page new-audio-player newGuardianUniversities nicl/add-dokr-link nicl/add-football-to-wc-subnav nicl/add-nav-to-json-response nicl/amp-guui nicl/amp-nav-edition nicl/amp-party nicl/attempt-to-fix-snaps-height nicl/bespoke-training nicl/build-speed nicl/cache-clean-attempt-2 nicl/clean-headers nicl/comment-element nicl/cors-issue nicl/drop-is-social-field nicl/features-collection nicl/fix-amp-edition-links nicl/fix-duplication-group-name nicl/fix-sport-comment-meta nicl/fix-weather-autocomplete nicl/football-admin-tweaks nicl/football-fixes nicl/football-liveblog-embeds nicl/football-snap-fix nicl/football-snap-live-styling nicl/football-snap-styling nicl/football-snaps-on-fronts-fix niclhttps://github.com/json-components nicl/lazy-load-images nicl/lowercase-amp-edition nicl/mega-most-viewed nicl/minor-pr nicl/missing-football-tables nicl/more-logging-reduction nicl/more-wc-nav-changes nicl/more-wc-tweaks nicl/nav-changes nicl/new-football-competitions nicl/open-graph nicl/optimised-banners nicl/pass-host-to-dotcom-rendering nicl/refactor-article-controller nicl/refactor-cleaners nicl/remove-left-col-live-scores nicl/remove-switch nicl/scalafix nicl/spider-orderings nicl/team-name-wrapping nicl/temp-extend-wc-switch nicl/test-caching-behaviour nicl/wallchart-snap nicl/wc-cleanup nicl/wc-custom-subnav nicl/wc-nav-change nicl/wc-nav nicl/wc-overview-copy nicl/wc-spider-testing nl-log-async nl-revert-sbt-1 no-fastdom-for-href-manipulation observer-overlays one-million-campaign-copy-and-tracking only-fetch-epic-and-banner-copy-when-needed oops-https-please pcolley/config_paramstore_pointers pcolley/facia_perf_improvements pcolley/fix-flaky-archive-test ph-20170905-switches ph-20170921-1118-publisher-optimization-tag ph-20180719-1401-amp-add-free ph-20180805-0842-ad-free-plus-buttons ph-20181103-1319-wsl pick-multiple-banners pick-winning-us-banner-variant pick-winning-us-epic-variant pillar-tracking-ga player-card-update pm-add-skimlinks-cleaner pm-affiliate-links pm-better-error-logging pm-bylinelogic-model pm-disable-affiliatelinks-adfree pm-email-image-quality pm-faciapress-alert-jsonfailure pm-fix-gallery-captions pm-improve-lightbox-nav-2 pm-improve-lightbox-nav pm-move-diagnostics pm-ph-fix-email-play-overlay pm-random-tidying pm-remove-asset-monitor pm-remove-lightbox-restriction pm-seriesbadge-priority pm-submeta-in-model pm-true-is-false pm-zindex-standfirst podcast-container-test politics-weekly-front-test politics-weekly-player-test pressDependentPaths-robust redeploy-banner-from-admin-console redeploy-engagement-banner-jan-2018 remove-NZ-from-ROW-tests remove-adblock-banners remove-banner-control remove-banner-highlight-test remove-broken-tests remove-dead-css remove-google-docs-test remove-header-test remove-terrifying-epic remove-testimonial-and-add-google-doc-variant remove-unneeded-styles render-callouts-2 rendertierpicker-no-amp replace-all-currency-symbol-occurrences revert-18398-jr-banner-2-fix revert-18884-nl-fix-archive-compilation revert-19429-at-paidcontent-link-caption-colour revert-19724-nicl/clean-headers revert-20038-nicl/fix-og-image revert-20093-feedback-fallback revert-20209-bump-scala-client revert-20225-revert-20209-bump-scala-client revert-20618-audio-design-fixes revert-20619-rp-interactive-header revert-20770-aw-article-test right-most-popular-headline rk-atom-pillars rk-campaigns-submission rp-US-midterms rp-a-b-test-subscribe-header-link rp-add-soulmates-to-header rp-extend-interactive-switch rp-fix-edition-logic rp-header-link-text-change rp-identity-remove-gplus rp-remove-header-link-test rp-remove-homelessness-us rp-remove-world-cup-nav sa-a11y sa-test-opera-mini safer-bid-responses sbt-coursier send-newsletters-directly-to-idapi separate-epic-from-ab-tests side-margins simple-pay simplify-acquisitions-copy-data-structure snyk-fix-exsguw snyk-fix-gi4w8b snyk-fix-gwkm3m snyk-fix-ls9q7m snyk-fix-ncoaya snyk-fix-rsoitk social-overlays tag-page-meta-image tag-refactor-attempt2 tbonnin/navigation-refactor tbonnin/pillar-contenttype-enumeratum tbonnin/remove-ab-image-test-service-test tbonnin/tag-pages-refactor-jan18rebase tbonnin/time-rendering tbonnin/update-config-guimcode team-values test-code-owners test-epic-in-iframe-without-optimize test tf-new-ticker thank-you-epic-for-us-gun-campaign threeNewBanners tweak-campaigns tweak-mobile-banner twitter-base64-images update-banner-control update-email-docs update-email-readme us-end-of-year-epic-round-2 us-epic-test use-fetch-shim we-are-still-humans world-cup-2018 world-cup-svg worldcup-overview
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update pull request template: add ad-free section Sep 3, 2018
.prbuilds Update prbuilds config to work with new version Dec 3, 2018
.vscode Add VSCode workspace config Oct 9, 2018
__mocks__ convert breaking news tests Jun 27, 2017
admin Merge remote-tracking branch 'origin/master' into kc-test-go Dec 10, 2018
applications Restore more link Dec 18, 2018
archive When taking down pressed pages, purge both the url and its normalised… Sep 25, 2018
article Add additional required fields for AMP work Dec 10, 2018
bin Merge branch 'master' of http://www.oddjack.com/?certs=guardian/frontend into jd… Dec 11, 2017
commercial Revert "Revert "sign the image urls"" Dec 6, 2018
common Remove Old Audio Page experiement Dec 18, 2018
data Fix tests Nov 6, 2018
dev-build Remove commercial perf logging experiment Nov 21, 2018
dev fix flow server issues on teamcity by forcing restart Jul 2, 2018
diagnostics Remove commercial perf logging experiment Nov 21, 2018
discussion Removed mention of Guardian Witness from account deletion page and re… Oct 8, 2018
docs Add reader revenue documentation (#20833) Dec 11, 2018
facia-press Log out entire front when pressing/rendering on CODE. Nov 21, 2018
facia better landmarks on fronts Dec 3, 2018
git-hooks fix toc generation Jun 11, 2018
identity remove all "new" references from styles related to header/footer Nov 22, 2018
nginx Fix spelling Apr 6, 2018
onward Fix AMP edition links Dec 10, 2018
preview Support AMP GUUI endpoint is explicitly requested Nov 8, 2018
project Add guardianBaseURL to guui json Dec 10, 2018
prout prout should report the correct kibana dashboard, not the old one Jun 25, 2018
rss prevent the logback appender from blocking the thread making the log Feb 5, 2018
sanity-tests/test Changed trait to sealed trait Jun 24, 2014
sport reorder football tables list Dec 19, 2018
static Pad scores for live matches on facia snaps Dec 19, 2018
tools remove all "new" references from styles related to header/footer Nov 22, 2018
.babelrc browser support for ios Oct 31, 2018
.editorconfig scala 2.12 upgrade Nov 10, 2017
.eslintignore remove javascript-legacy Nov 24, 2017
.eslintrc.js Fix outstanding problems Oct 23, 2017
.flowconfig Add config for Flow Strict and start using it in Commercial modules Aug 4, 2018
.gitignore Targeting by series works in unit test Mar 12, 2018
.nvmrc node 8.5 Sep 13, 2017
.prout.json Remove trailing comma in .prout.json Jun 13, 2017
.sass-lint.yml fix lint Mar 2, 2018
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Apr 4, 2018
LICENSE Bump date in LICENSE Aug 22, 2018
README.md Update link to application architecture Jul 27, 2018
build.sbt Add guardianBaseURL to guui json Dec 10, 2018
cla-corporate.txt Add Contributor License Agreements to the project Apr 19, 2013
cla-individual.txt Add Contributor License Agreements to the project Apr 19, 2013
disallowed-strings.js Add linter for disallowed strings (#17980) Oct 17, 2017
makefile fix width in guardian today emails by setting width on the td and not… Sep 13, 2018
package.json Bump Prebid dependency Dec 18, 2018
riff-raff.yaml Revert "Don't deploy diagnostics with the rest of the apps" Oct 12, 2018
sbt Merge branch 'master' of http://www.oddjack.com/?certs=guardian/frontend into jd… Dec 12, 2017
scalastyle-config.xml Remove scalastyle change Nov 30, 2018
setup.sh Favour Open JDK Dec 5, 2018
values.md First draft of values and behaviours Aug 2, 2018
variables Convert magic numbers into variables Jun 12, 2017
webpack.config.atoms.js Improve atoms bootstrap modules compilation Oct 20, 2017
webpack.config.dev.js fix webpack js reload Apr 26, 2018
webpack.config.js ignoe vendor folder, not vendorlist.js Oct 31, 2018
webpack.config.prod.js fix webpack js reload Apr 26, 2018
yarn.lock Bump Prebid dependency Dec 18, 2018

README.md

Known Vulnerabilities

We're hiring!

Ever thought about joining us? https://workforus.theguardian.com/careers/digital-development/

Frontend

The Guardian website frontend.

For everybody who engages with our journalism, theguardian.com is an industry-best news website that is fast, accessible and easy to use. Unlike other ways of developing products, ours puts the audience first.

Frontend is a set of Play Framework 2 Scala applications. It is built in two parts, using make for the client side asset build and SBT for the Play Framework backend.

Documentation

All documentation notes and useful items can be found in the docs folder.

Core Development Principles (lines in the sand)

These principles apply to all requests on www.theguardian.com and api.nextgen.guardianapps.co.uk (our Ajax URL)

On the server

  • Every request can be cached and has an appropriate Cache-Control header set.
  • Each request may only perform one I/O operation on the backend. (you cannot make two calls to the content API or any other 3rd party)
  • The average response time of any endpoint is less than 500ms.
  • Requests that take longer than two seconds will be terminated.

New developers

Welcome! The best place to start is here

To get set up, please follow the installation guide.

Fixes for common problems can be found here.

Please, read the development tips document to learn about more about development process.

Deploying

Follow the steps described in the How to deploy document.