1 - Platforms

Platform documentation and stack information

Documentation for the various platforms and infrastructure stacks used across our applications.

1.1 - Heroku

Heroku platform and stack documentation

Heroku is a cloud platform that enables companies to build, deliver, monitor and scale apps. This section covers the different Heroku stacks (runtime environments) and their support lifecycles.

Stack Overview

Heroku stacks are the different runtime environments available for applications. Each stack is based on a specific Ubuntu LTS version and has a defined support lifecycle.

Current Stacks

  • Heroku-24: Default stack (Ubuntu 24.04) - Supported until April 2029
  • Heroku-22: Active (Ubuntu 22.04) - Supported until April 2027
  • Heroku-20: End of Life (April 30, 2025)
  • Heroku-18: End of Life (April 30, 2023)
  • Heroku-16: End of Life (May 1, 2021)

1.1.1 - heroku-24

Heroku-24 stack based on Ubuntu 24.04 - Current default stack

Overview

Heroku-24 is the current default stack for new Heroku applications, based on Ubuntu 24.04 LTS.

Support Timeline

  • General Availability: June 2024
  • Default Stack: December 2024
  • End of Life: April 2029

Key Features

Base Image Optimizations

  • Reduced base image size by removing less frequently used packages (Bazaar, Mercurial)
  • Build tools (GCC, Make, Git, system Python) available only at build time, not at runtime
  • More efficient resource utilization

Multi-Architecture Support

  • Published images support both amd64 and arm64 architectures
  • Default Linux user changed from root to heroku

Build and Runtime Changes

  • Git available only at build time (not at runtime)
  • Limited locale support: C, C.utf8, POSIX, and en_US.utf8 only
  • APT sources list uses new deb822 format at /etc/apt/sources.list.d/ubuntu.sources
  • Reduced timezone data (only geographical regions and city names)

Fir Apps

  • Only heroku/builder:24 is supported for Fir apps
  • Heroku-24 is the exclusive base image for new Fir applications

Upgrading to Heroku-24

Applications should be upgraded to Heroku-24 to benefit from the latest security updates, performance improvements, and extended support timeline.

References

1.1.2 - heroku-22

Heroku-22 stack based on Ubuntu 22.04 - Active support

Overview

Heroku-22 is based on Ubuntu 22.04 LTS and is currently in active support.

Support Timeline

  • Release: June 2022
  • Superseded by: Heroku-24 (June 2024)
  • End of Life: April 2027

Key Changes from Heroku-20

OpenSSL Version

  • Ships with OpenSSL 3.0
  • OpenSSL 1.1 is not available as a runtime library
  • Applications depending on OpenSSL 1.1 must be updated

Ubuntu Base

  • Based on Ubuntu 22.04 (Jammy Jellyfish)
  • Upgraded from Ubuntu 20.04 in Heroku-20

Migration Considerations

Applications should plan migration to Heroku-24 before April 2027 to ensure continued security updates and support.

References

1.1.3 - heroku-20

Heroku-20 stack based on Ubuntu 20.04 - END OF LIFE

⚠️ End of Life Notice

Heroku-20 reached end of life on April 30, 2025.

Overview

Heroku-20 was based on Ubuntu 20.04 LTS.

Support Timeline

  • Release: 2020
  • Deprecated: June 2024
  • End of Life: April 30, 2025
  • Build Cutoff: Approximately May 30, 2025

Post-EOL Status

  • Existing apps continue to run at customer’s own risk
  • No security updates provided
  • No new builds/deployments allowed after build cutoff
  • Limited technical support available

Required Action

All applications on Heroku-20 must be upgraded to Heroku-22 or Heroku-24 immediately.

Running applications on an end-of-life stack exposes them to security vulnerabilities and compliance risks.

Migration Path

  1. Test application on Heroku-24 (recommended) or Heroku-22
  2. Update dependencies and configurations as needed
  3. Deploy to new stack
  4. Monitor for any runtime issues

References

1.1.4 - heroku-18

Heroku-18 stack based on Ubuntu 18.04 - END OF LIFE

⚠️ End of Life Notice

Heroku-18 reached end of life on April 30, 2023.

Overview

Heroku-18 was based on Ubuntu 18.04 LTS (Bionic Beaver).

Support Timeline

  • Release: 2018
  • Deprecated: June 22, 2022
  • End of Life: April 30, 2023
  • Build Cutoff: May 1, 2023

Post-EOL Status

  • Existing apps continue to run at customer’s own risk
  • No security updates since April 30, 2023
  • No new builds/deployments allowed since May 1, 2023
  • No technical support available

Critical Action Required

All applications still on Heroku-18 are severely outdated and must be upgraded immediately.

This stack has been unsupported for over 2 years and poses significant security and compliance risks.

Migration Path

Applications on Heroku-18 should be upgraded directly to Heroku-24 to ensure the longest support timeline.

References

1.1.5 - heroku-16

Heroku-16 stack based on Ubuntu 16.04 - END OF LIFE

⚠️ End of Life Notice

Heroku-16 reached end of life on May 1, 2021.

Overview

Heroku-16 was based on Ubuntu 16.04 LTS (Xenial Xerus).

Support Timeline

  • Release: 2016
  • Deprecated: December 11, 2020
  • End of Life: May 1, 2021
  • Build Cutoff: June 1, 2021

Post-EOL Status

  • Existing apps continue to run at customer’s own risk
  • No security updates since May 1, 2021
  • No new builds/deployments allowed since June 1, 2021
  • No technical support available

Critical Action Required

Applications on Heroku-16 are critically outdated (4+ years unsupported) and represent a severe security risk.

Immediate upgrade to Heroku-24 is essential for security, compliance, and operational stability.

Migration Path

Direct upgrade to Heroku-24 is strongly recommended. Given the age of this stack, significant application updates will likely be required.

References

2 - Applications

2.1 - Adrian Flux

Adrian Flux Applications

2.1.2 - fakertrail

Placeholder description

Application URLs

2.1.3 - flux-bannerclick-app

Placeholder description

Application URLs

2.1.4 - flux-buying-pages-tour-caravan

Placeholder description

Application URLs

2.1.5 - flux-callback-service

Placeholder description

Application URLs

2.1.9 - flux-epa-laravel-car

Placeholder description

Application URLs

2.1.10 - flux-epa-laravel-car-docker

Placeholder description

Application URLs

2.1.11 - flux-epa-laravel-laid-bike

Placeholder description

Application URLs

2.1.12 - flux-epa-laravel-laid-bike-doc

Placeholder description

Application URLs

2.1.13 - flux-epa-laravel-van

Placeholder description

Application URLs

2.1.14 - flux-epa-laravel-van-docker

Placeholder description

Application URLs

2.1.15 - flux-epa-learner

Placeholder description

Application URLs

2.1.16 - flux-epa-learner-docker

Placeholder description

Application URLs

2.1.19 - flux-epa-service-new

Placeholder description

Application URLs

2.1.22 - flux-geodata-service

Placeholder description

Application URLs

2.1.25 - flux-jam

Placeholder description

Application URLs

2.1.26 - flux-policy-documents-service

Placeholder description

Application URLs

2.1.27 - flux-redirects-service

Placeholder description

Application URLs

2.1.28 - flux-regabi-data-live

Placeholder description

Application URLs

2.1.31 - flux-sources-service

Placeholder description

Application URLs

2.1.32 - flux-worker-service

Worker service for Adrian Flux brand requests.

Application URLs

Overview

This is a Django based app with no frontend. It’s primary purpose is to provide a backend interface (Django Admin) to provide metadata type variable values such as “FLUX_HOME_INSURANCE_SAVING_PERCENTAGE” to inject into Adrian Flux brand pages.

The db stored values (postgres) sync up with a Cloudflare KV store, which a Cloudflare Worker uses to do shortcode style replacements like [[ FLUX_HOME_INSURANCE_SAVING_PERCENTAGE ]] which do the actual replacement in usually, Wordpress content pages.

2.1.33 - hut-app-launcher

Placeholder description

Application URLs

2.1.34 - proxy-bikesure

Placeholder description

Application URLs

2.1.35 - proxy-flux

Placeholder description

Application URLs

2.1.36 - proxy-sterling

Placeholder description

Application URLs

2.1.38 - sterling-epa-laravel-car

Placeholder description

Application URLs

2.1.39 - sterling-epa-laravel-car-docke

Placeholder description

Application URLs

2.1.40 - sterling-epa-laravel-van

Placeholder description

Application URLs

2.1.41 - sterling-epa-laravel-van-docke

Placeholder description

Application URLs

3 - Example Page

A short lead description about this content page. It can be bold or italic and can be split over multiple paragraphs.

This is a placeholder page. Replace it with your own content.

Texts can be bold, italic, or strikethrough. Links should be blue with no underlines (unless hovered over).

There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.

90’s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps kale chips.

There should be no margin above this first sentence.

Blockquotes should be a lighter gray with a border along the left side in the secondary color.

There should be no margin below this final sentence.

First Header 2

This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier craft beer. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven’t heard of them copper mug, crucifix green juice vape single-origin coffee brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!

Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.

On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.

Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&B. I love this life we live in.

Second Header 2

This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.

Header 3

This is a code block following a header.

Next level leggings before they sold out, PBR&B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.

Header 4

  • This is an unordered list following a header.
  • This is an unordered list following a header.
  • This is an unordered list following a header.
Header 5
  1. This is an ordered list following a header.
  2. This is an ordered list following a header.
  3. This is an ordered list following a header.
Header 6
WhatFollows
A tableA header
A tableA header
A tableA header

There’s a horizontal rule above and below this.


Here is an unordered list:

  • Liverpool F.C.
  • Chelsea F.C.
  • Manchester United F.C.

And an ordered list:

  1. Michael Brecker
  2. Seamus Blake
  3. Branford Marsalis

And an unordered task list:

  • Create a Hugo theme
  • Add task lists to it
  • Take a vacation

And a “mixed” task list:

  • Pack bags
  • ?
  • Travel!

And a nested list:

  • Jackson 5
    • Michael
    • Tito
    • Jackie
    • Marlon
    • Jermaine
  • TMNT
    • Leonardo
    • Michelangelo
    • Donatello
    • Raphael

Definition lists can be used with Markdown syntax. Definition headers are bold.

Name : Godzilla

Born : 1952

Birthplace : Japan

Color : Green


Tables should have bold headings and alternating shaded rows.

ArtistAlbumYear
Michael JacksonThriller1982
PrincePurple Rain1984
Beastie BoysLicense to Ill1986

If a table is too wide, it should scroll horizontally.

ArtistAlbumYearLabelAwardsSongs
Michael JacksonThriller1982Epic RecordsGrammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-ClassicalWanna Be Startin’ Somethin’, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life
PrincePurple Rain1984Warner Brothers RecordsGrammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with VocalLet’s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I’m a Star, Purple Rain
Beastie BoysLicense to Ill1986Mercury RecordsnoawardsbutthistablecelliswideRhymin & Stealin, The New Style, She’s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill

Code snippets like var foo = "bar"; can be shown inline.

Also, this should vertically align with this and this.

Code can also be shown in a block element.

foo := "bar";
bar := "foo";

Code can also use syntax highlighting.

func main() {
  input := `var foo = "bar";`

  lexer := lexers.Get("javascript")
  iterator, _ := lexer.Tokenise(nil, input)
  style := styles.Get("github")
  formatter := html.New(html.WithLineNumbers())

  var buff bytes.Buffer
  formatter.Format(&buff, style, iterator)

  fmt.Println(buff.String())
}
Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.

Inline code inside table cells should still be distinguishable.

LanguageCode
Javascriptvar foo = "bar";
Rubyfoo = "bar"{

Small images should be shown at their actual size.

Large images should always scale down and fit in the content container.

The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.

Components

Alerts

Another Heading

Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.

This Document

Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam eripitur? Sitim noceat signa probat quidem. Sua longis fugatis quidem genae.

Pixel Count

Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.

Contact Info

Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.

Stumptown PBR&B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.

This is the final element on the page and there should be no margin below this.