Ampol-CodeChallenge

by Dmitrii Zverev. 20 March 2023

Given Instructions:

• The app’s main page should be a dashboard that displays key information to the user in the form of blocks or modules. Examples of this can include:

• Most recent fuel transactions

• Recent charge sessions

• In store offers

• Upcoming Energy Bills

• Home energy usage

• Blocks or modules should show high level detail that the user might want immediately, whilst giving them the option to navigate into more detail.

Examples of this can include:

• Recent fuel transactions shows only the 2 most recent transactions. A “See all” button on the module could take the user to a detail view with all their previous transactions.

• Recent charge session shows only the location and price of the charge, tapping into the module could take the user to a detail view that shows further details about their charge including but not limited to:

• Price

• Amount of time and Charge rate (kWh)

• Discount

• In store offers could show a targeted offer, whilst tapping into the module takes them to show all offers available.

• With the goal of creating a seamless experience for 3 products in a single application, blocks and modules should have complementary design and colours, and should communicate a single experience across the differing products.

• Upload your source code to a public repo and provide a link to the exercise, please include how long you spent on this exercise.

iOS:

  • Pure SwiftUI 3+ (iOS 15 minimum target) application

  • Combine + Swift Modern Concurrency (async await)

  • SwiftUI application lifecycle

  • Swift Package Manager - NO NEED FOR THAN

  • In house design system and component library

  • Functional design and immutable state