Born in Luton, Bedfordshire, Justin joined Luton Town in 2005 and progressed through the club's youth system. He was part of the under-11 team that beat Bayern Munich 3–2 to win the Aarau Masters in 2009. Justin was called up to the under-18 team as an under-16 due to injuries to other players, playing at right back despite being a central midfielder. Following his breakthrough into the under-18 team, Justin also played regularly for the club's development squad that ended 2014–15 as champions of The Central LeagueSouthern Division. Justin signed his first professional contract on 4 November 2015 which contracted him to the club until the end of 2016–17. He was named in the matchday squad for the first time on 19 December, remaining an unused substitute in Luton's 3–2 win away to Exeter City. Justin was a member of the under-18 team that won the Youth Alliance South East title and the Youth Alliance Cup in 2015–16, and also reached the quarter-finals of the FA Youth Cup, in which they lost 1–0 to Blackburn Rovers. He made his professional debut as an 83rd-minute substitute for Stephen O'Donnell in a 4–1 win at home to Exeter City on the final day of 2015–16. Justin broke into the first team in 2016–17, making his full debut at left back in a 3–1 win at home to newly relegated Championship club Aston Villa in the EFL Cup first round on 10 August 2016. He suffered a calf injury in the warm up before Luton's 2–1 win away to Leyton Orient on 15 October, and returned to the team for a 3–1 victory away to Exeter City in the FA Cup first round on 5 November. After making 14 appearances in all competitions during the first half of the season playing in a number of different positions including at right back and as a left winger, Justin signed a new two-and-a-half-year contract to keep him at Luton until the summer of 2019, with the option of a further year. He was named Luton Town Young Player of the Season, selected by the Luton Town management team. Justin scored his first professional goal in a 4–1 victory away to Accrington Stanley on 29 April 2017, but was stretchered off after he suffered an ankle ligament sprain in the following match, a 3–1 win at home to Morecambe. However, he recovered in time to play against Blackpool in the play-off semi-final, and started in both legs of the 6–5 aggregate defeat. Justin finished the season with 39 appearances and one goal. On 12 July 2017, Luton rejected a bid of £1 million for Justin from Championship club Nottingham Forest. Later that month, Justin signed a contract extension with Luton until 2020, with the option of a further year. His contract was extended by a further year at the end of the 2017–18 season after a promotion clause was triggered as a result of Luton's promotion to League One.
Leicester City
Justin signed for Premier League club Leicester City on 28 June 2019 on a five-year contract for an undisclosed fee. He scored on his debut in a 4–0 away victory over his former club Luton in the EFL Cup third round on 24 September.
Justin primarily plays as a right back, although he has been described as being "versatile" and "attack-minded" and is able to play as a left back, central midfielder, right midfielder and a left winger.