diff --git a/src/CouponsApp.sln b/src/CouponsApp.sln
new file mode 100644
index 0000000..e350cad
--- /dev/null
+++ b/src/CouponsApp.sln
@@ -0,0 +1,27 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31611.283
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CouponsApp", "CouponsApp\CouponsApp.csproj", "{4127B869-B395-4B84-B5F5-31968AD7D82E}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4127B869-B395-4B84-B5F5-31968AD7D82E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4127B869-B395-4B84-B5F5-31968AD7D82E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4127B869-B395-4B84-B5F5-31968AD7D82E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {4127B869-B395-4B84-B5F5-31968AD7D82E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4127B869-B395-4B84-B5F5-31968AD7D82E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4127B869-B395-4B84-B5F5-31968AD7D82E}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572}
+ EndGlobalSection
+EndGlobal
diff --git a/src/CouponsApp/Controls/TabView.xaml b/src/CouponsApp/Controls/TabView.xaml
index 3171fd8..0f2b294 100644
--- a/src/CouponsApp/Controls/TabView.xaml
+++ b/src/CouponsApp/Controls/TabView.xaml
@@ -88,6 +88,10 @@
+
+
+
diff --git a/src/CouponsApp/Platforms/Android/AndroidManifest.xml b/src/CouponsApp/Platforms/Android/AndroidManifest.xml
new file mode 100644
index 0000000..e9937ad
--- /dev/null
+++ b/src/CouponsApp/Platforms/Android/AndroidManifest.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/CouponsApp/Platforms/Android/MainActivity.cs b/src/CouponsApp/Platforms/Android/MainActivity.cs
new file mode 100644
index 0000000..17e2639
--- /dev/null
+++ b/src/CouponsApp/Platforms/Android/MainActivity.cs
@@ -0,0 +1,10 @@
+using Android.App;
+using Android.Content.PM;
+using Android.OS;
+
+namespace CouponsApp;
+
+[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
+public class MainActivity : MauiAppCompatActivity
+{
+}
diff --git a/src/CouponsApp/Platforms/Android/MainApplication.cs b/src/CouponsApp/Platforms/Android/MainApplication.cs
new file mode 100644
index 0000000..23f4d0b
--- /dev/null
+++ b/src/CouponsApp/Platforms/Android/MainApplication.cs
@@ -0,0 +1,15 @@
+using Android.App;
+using Android.Runtime;
+
+namespace CouponsApp;
+
+[Application]
+public class MainApplication : MauiApplication
+{
+ public MainApplication(IntPtr handle, JniHandleOwnership ownership)
+ : base(handle, ownership)
+ {
+ }
+
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+}
diff --git a/src/CouponsApp/Platforms/Android/Resources/values/colors.xml b/src/CouponsApp/Platforms/Android/Resources/values/colors.xml
new file mode 100644
index 0000000..c04d749
--- /dev/null
+++ b/src/CouponsApp/Platforms/Android/Resources/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #512BD4
+ #2B0B98
+ #2B0B98
+
\ No newline at end of file
diff --git a/src/CouponsApp/Platforms/MacCatalyst/AppDelegate.cs b/src/CouponsApp/Platforms/MacCatalyst/AppDelegate.cs
new file mode 100644
index 0000000..6e5a016
--- /dev/null
+++ b/src/CouponsApp/Platforms/MacCatalyst/AppDelegate.cs
@@ -0,0 +1,9 @@
+using Foundation;
+
+namespace CouponsApp;
+
+[Register("AppDelegate")]
+public class AppDelegate : MauiUIApplicationDelegate
+{
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+}
diff --git a/src/CouponsApp/Platforms/MacCatalyst/Info.plist b/src/CouponsApp/Platforms/MacCatalyst/Info.plist
new file mode 100644
index 0000000..c96dd0a
--- /dev/null
+++ b/src/CouponsApp/Platforms/MacCatalyst/Info.plist
@@ -0,0 +1,30 @@
+
+
+
+
+ UIDeviceFamily
+
+ 1
+ 2
+
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ XSAppIconAssets
+ Assets.xcassets/appicon.appiconset
+
+
diff --git a/src/CouponsApp/Platforms/MacCatalyst/Program.cs b/src/CouponsApp/Platforms/MacCatalyst/Program.cs
new file mode 100644
index 0000000..2d27e63
--- /dev/null
+++ b/src/CouponsApp/Platforms/MacCatalyst/Program.cs
@@ -0,0 +1,15 @@
+using ObjCRuntime;
+using UIKit;
+
+namespace CouponsApp;
+
+public class Program
+{
+ // This is the main entry point of the application.
+ static void Main(string[] args)
+ {
+ // if you want to use a different Application Delegate class from "AppDelegate"
+ // you can specify it here.
+ UIApplication.Main(args, null, typeof(AppDelegate));
+ }
+}
diff --git a/src/CouponsApp/Platforms/Tizen/Main.cs b/src/CouponsApp/Platforms/Tizen/Main.cs
new file mode 100644
index 0000000..8f9c0a1
--- /dev/null
+++ b/src/CouponsApp/Platforms/Tizen/Main.cs
@@ -0,0 +1,16 @@
+using System;
+using Microsoft.Maui;
+using Microsoft.Maui.Hosting;
+
+namespace CouponsApp;
+
+class Program : MauiApplication
+{
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+
+ static void Main(string[] args)
+ {
+ var app = new Program();
+ app.Run(args);
+ }
+}
diff --git a/src/CouponsApp/Platforms/Tizen/tizen-manifest.xml b/src/CouponsApp/Platforms/Tizen/tizen-manifest.xml
new file mode 100644
index 0000000..cfee87c
--- /dev/null
+++ b/src/CouponsApp/Platforms/Tizen/tizen-manifest.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+ maui-appicon-placeholder
+
+
+
+
+ http://tizen.org/privilege/internet
+
+
+
+
\ No newline at end of file
diff --git a/src/CouponsApp/Platforms/Windows/App.xaml b/src/CouponsApp/Platforms/Windows/App.xaml
new file mode 100644
index 0000000..cf96a76
--- /dev/null
+++ b/src/CouponsApp/Platforms/Windows/App.xaml
@@ -0,0 +1,8 @@
+
+
+
diff --git a/src/CouponsApp/Platforms/Windows/App.xaml.cs b/src/CouponsApp/Platforms/Windows/App.xaml.cs
new file mode 100644
index 0000000..e406034
--- /dev/null
+++ b/src/CouponsApp/Platforms/Windows/App.xaml.cs
@@ -0,0 +1,24 @@
+using Microsoft.UI.Xaml;
+
+// To learn more about WinUI, the WinUI project structure,
+// and more about our project templates, see: http://aka.ms/winui-project-info.
+
+namespace CouponsApp.WinUI;
+
+///
+/// Provides application-specific behavior to supplement the default Application class.
+///
+public partial class App : MauiWinUIApplication
+{
+ ///
+ /// Initializes the singleton application object. This is the first line of authored code
+ /// executed, and as such is the logical equivalent of main() or WinMain().
+ ///
+ public App()
+ {
+ this.InitializeComponent();
+ }
+
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+}
+
diff --git a/src/CouponsApp/Platforms/Windows/Package.appxmanifest b/src/CouponsApp/Platforms/Windows/Package.appxmanifest
new file mode 100644
index 0000000..2bcb11e
--- /dev/null
+++ b/src/CouponsApp/Platforms/Windows/Package.appxmanifest
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ $placeholder$
+ User Name
+ $placeholder$.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/CouponsApp/Platforms/Windows/app.manifest b/src/CouponsApp/Platforms/Windows/app.manifest
new file mode 100644
index 0000000..619b6a0
--- /dev/null
+++ b/src/CouponsApp/Platforms/Windows/app.manifest
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+ true/PM
+ PerMonitorV2, PerMonitor
+
+
+
diff --git a/src/CouponsApp/Platforms/iOS/AppDelegate.cs b/src/CouponsApp/Platforms/iOS/AppDelegate.cs
new file mode 100644
index 0000000..6e5a016
--- /dev/null
+++ b/src/CouponsApp/Platforms/iOS/AppDelegate.cs
@@ -0,0 +1,9 @@
+using Foundation;
+
+namespace CouponsApp;
+
+[Register("AppDelegate")]
+public class AppDelegate : MauiUIApplicationDelegate
+{
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+}
diff --git a/src/CouponsApp/Platforms/iOS/Info.plist b/src/CouponsApp/Platforms/iOS/Info.plist
new file mode 100644
index 0000000..0004a4f
--- /dev/null
+++ b/src/CouponsApp/Platforms/iOS/Info.plist
@@ -0,0 +1,32 @@
+
+
+
+
+ LSRequiresIPhoneOS
+
+ UIDeviceFamily
+
+ 1
+ 2
+
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ XSAppIconAssets
+ Assets.xcassets/appicon.appiconset
+
+
diff --git a/src/CouponsApp/Platforms/iOS/Program.cs b/src/CouponsApp/Platforms/iOS/Program.cs
new file mode 100644
index 0000000..2d27e63
--- /dev/null
+++ b/src/CouponsApp/Platforms/iOS/Program.cs
@@ -0,0 +1,15 @@
+using ObjCRuntime;
+using UIKit;
+
+namespace CouponsApp;
+
+public class Program
+{
+ // This is the main entry point of the application.
+ static void Main(string[] args)
+ {
+ // if you want to use a different Application Delegate class from "AppDelegate"
+ // you can specify it here.
+ UIApplication.Main(args, null, typeof(AppDelegate));
+ }
+}
diff --git a/src/CouponsApp/Properties/launchSettings.json b/src/CouponsApp/Properties/launchSettings.json
new file mode 100644
index 0000000..edf8aad
--- /dev/null
+++ b/src/CouponsApp/Properties/launchSettings.json
@@ -0,0 +1,8 @@
+{
+ "profiles": {
+ "Windows Machine": {
+ "commandName": "MsixPackage",
+ "nativeDebugging": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/CouponsApp/Resources/AppIcon/appicon.svg b/src/CouponsApp/Resources/AppIcon/appicon.svg
new file mode 100644
index 0000000..9d63b65
--- /dev/null
+++ b/src/CouponsApp/Resources/AppIcon/appicon.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/src/CouponsApp/Resources/AppIcon/appiconfg.svg b/src/CouponsApp/Resources/AppIcon/appiconfg.svg
new file mode 100644
index 0000000..21dfb25
--- /dev/null
+++ b/src/CouponsApp/Resources/AppIcon/appiconfg.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/src/CouponsApp/Resources/Fonts/Poppins-Light.ttf b/src/CouponsApp/Resources/Fonts/Poppins-Light.ttf
new file mode 100644
index 0000000..2ab0221
Binary files /dev/null and b/src/CouponsApp/Resources/Fonts/Poppins-Light.ttf differ
diff --git a/src/CouponsApp/Resources/Fonts/Poppins-Medium.ttf b/src/CouponsApp/Resources/Fonts/Poppins-Medium.ttf
new file mode 100644
index 0000000..e90e87e
Binary files /dev/null and b/src/CouponsApp/Resources/Fonts/Poppins-Medium.ttf differ
diff --git a/src/CouponsApp/Resources/Fonts/Poppins-Regular.ttf b/src/CouponsApp/Resources/Fonts/Poppins-Regular.ttf
new file mode 100644
index 0000000..be06e7f
Binary files /dev/null and b/src/CouponsApp/Resources/Fonts/Poppins-Regular.ttf differ
diff --git a/src/CouponsApp/Resources/Fonts/Poppins-SemiBold.ttf b/src/CouponsApp/Resources/Fonts/Poppins-SemiBold.ttf
new file mode 100644
index 0000000..dabf7c2
Binary files /dev/null and b/src/CouponsApp/Resources/Fonts/Poppins-SemiBold.ttf differ
diff --git a/src/CouponsApp/Resources/Images/adidas.png b/src/CouponsApp/Resources/Images/adidas.png
new file mode 100644
index 0000000..50b185a
Binary files /dev/null and b/src/CouponsApp/Resources/Images/adidas.png differ
diff --git a/src/CouponsApp/Resources/Images/apple.png b/src/CouponsApp/Resources/Images/apple.png
new file mode 100644
index 0000000..71b7b01
Binary files /dev/null and b/src/CouponsApp/Resources/Images/apple.png differ
diff --git a/src/CouponsApp/Resources/Images/back_icon.png b/src/CouponsApp/Resources/Images/back_icon.png
new file mode 100644
index 0000000..111c6d2
Binary files /dev/null and b/src/CouponsApp/Resources/Images/back_icon.png differ
diff --git a/src/CouponsApp/Resources/Images/chips.png b/src/CouponsApp/Resources/Images/chips.png
new file mode 100644
index 0000000..0982721
Binary files /dev/null and b/src/CouponsApp/Resources/Images/chips.png differ
diff --git a/src/CouponsApp/Resources/Images/coffee.png b/src/CouponsApp/Resources/Images/coffee.png
new file mode 100644
index 0000000..359077e
Binary files /dev/null and b/src/CouponsApp/Resources/Images/coffee.png differ
diff --git a/src/CouponsApp/Resources/Images/domino.png b/src/CouponsApp/Resources/Images/domino.png
new file mode 100644
index 0000000..4ffdbd6
Binary files /dev/null and b/src/CouponsApp/Resources/Images/domino.png differ
diff --git a/src/CouponsApp/Resources/Images/donut.png b/src/CouponsApp/Resources/Images/donut.png
new file mode 100644
index 0000000..8d34619
Binary files /dev/null and b/src/CouponsApp/Resources/Images/donut.png differ
diff --git a/src/CouponsApp/Resources/Images/dotnet_bot.svg b/src/CouponsApp/Resources/Images/dotnet_bot.svg
new file mode 100644
index 0000000..abfaff2
--- /dev/null
+++ b/src/CouponsApp/Resources/Images/dotnet_bot.svg
@@ -0,0 +1,93 @@
+
diff --git a/src/CouponsApp/Resources/Images/dunkindonuts.png b/src/CouponsApp/Resources/Images/dunkindonuts.png
new file mode 100644
index 0000000..eefb26a
Binary files /dev/null and b/src/CouponsApp/Resources/Images/dunkindonuts.png differ
diff --git a/src/CouponsApp/Resources/Images/goby.png b/src/CouponsApp/Resources/Images/goby.png
new file mode 100644
index 0000000..723d8ad
Binary files /dev/null and b/src/CouponsApp/Resources/Images/goby.png differ
diff --git a/src/CouponsApp/Resources/Images/iphone.png b/src/CouponsApp/Resources/Images/iphone.png
new file mode 100644
index 0000000..6b93b93
Binary files /dev/null and b/src/CouponsApp/Resources/Images/iphone.png differ
diff --git a/src/CouponsApp/Resources/Images/mcdonalds.png b/src/CouponsApp/Resources/Images/mcdonalds.png
new file mode 100644
index 0000000..12e2338
Binary files /dev/null and b/src/CouponsApp/Resources/Images/mcdonalds.png differ
diff --git a/src/CouponsApp/Resources/Images/menu_icon.png b/src/CouponsApp/Resources/Images/menu_icon.png
new file mode 100644
index 0000000..c2b3de0
Binary files /dev/null and b/src/CouponsApp/Resources/Images/menu_icon.png differ
diff --git a/src/CouponsApp/Resources/Images/pizza.png b/src/CouponsApp/Resources/Images/pizza.png
new file mode 100644
index 0000000..8747ede
Binary files /dev/null and b/src/CouponsApp/Resources/Images/pizza.png differ
diff --git a/src/CouponsApp/Resources/Images/ps5.png b/src/CouponsApp/Resources/Images/ps5.png
new file mode 100644
index 0000000..bcaf064
Binary files /dev/null and b/src/CouponsApp/Resources/Images/ps5.png differ
diff --git a/src/CouponsApp/Resources/Images/scan_icon.png b/src/CouponsApp/Resources/Images/scan_icon.png
new file mode 100644
index 0000000..d9d1074
Binary files /dev/null and b/src/CouponsApp/Resources/Images/scan_icon.png differ
diff --git a/src/CouponsApp/Resources/Images/search_icon.png b/src/CouponsApp/Resources/Images/search_icon.png
new file mode 100644
index 0000000..2a6d42b
Binary files /dev/null and b/src/CouponsApp/Resources/Images/search_icon.png differ
diff --git a/src/CouponsApp/Resources/Images/send_icon.png b/src/CouponsApp/Resources/Images/send_icon.png
new file mode 100644
index 0000000..6de9eea
Binary files /dev/null and b/src/CouponsApp/Resources/Images/send_icon.png differ
diff --git a/src/CouponsApp/Resources/Images/services_icon.png b/src/CouponsApp/Resources/Images/services_icon.png
new file mode 100644
index 0000000..65cc158
Binary files /dev/null and b/src/CouponsApp/Resources/Images/services_icon.png differ
diff --git a/src/CouponsApp/Resources/Images/shoes.png b/src/CouponsApp/Resources/Images/shoes.png
new file mode 100644
index 0000000..8987e54
Binary files /dev/null and b/src/CouponsApp/Resources/Images/shoes.png differ
diff --git a/src/CouponsApp/Resources/Images/sony.png b/src/CouponsApp/Resources/Images/sony.png
new file mode 100644
index 0000000..5e5a5b9
Binary files /dev/null and b/src/CouponsApp/Resources/Images/sony.png differ
diff --git a/src/CouponsApp/Resources/Images/starbucks.png b/src/CouponsApp/Resources/Images/starbucks.png
new file mode 100644
index 0000000..daf154b
Binary files /dev/null and b/src/CouponsApp/Resources/Images/starbucks.png differ
diff --git a/src/CouponsApp/Resources/Images/toothbrush.png b/src/CouponsApp/Resources/Images/toothbrush.png
new file mode 100644
index 0000000..e5e570c
Binary files /dev/null and b/src/CouponsApp/Resources/Images/toothbrush.png differ
diff --git a/src/CouponsApp/Resources/Raw/AboutAssets.txt b/src/CouponsApp/Resources/Raw/AboutAssets.txt
new file mode 100644
index 0000000..15d6244
--- /dev/null
+++ b/src/CouponsApp/Resources/Raw/AboutAssets.txt
@@ -0,0 +1,15 @@
+Any raw assets you want to be deployed with your application can be placed in
+this directory (and child directories). Deployment of the asset to your application
+is automatically handled by the following `MauiAsset` Build Action within your `.csproj`.
+
+
+
+These files will be deployed with you package and will be accessible using Essentials:
+
+ async Task LoadMauiAsset()
+ {
+ using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt");
+ using var reader = new StreamReader(stream);
+
+ var contents = reader.ReadToEnd();
+ }
diff --git a/src/CouponsApp/Resources/Splash/splash.svg b/src/CouponsApp/Resources/Splash/splash.svg
new file mode 100644
index 0000000..21dfb25
--- /dev/null
+++ b/src/CouponsApp/Resources/Splash/splash.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/src/CouponsApp/Resources/Styles/Colors.xaml b/src/CouponsApp/Resources/Styles/Colors.xaml
new file mode 100644
index 0000000..245758b
--- /dev/null
+++ b/src/CouponsApp/Resources/Styles/Colors.xaml
@@ -0,0 +1,44 @@
+
+
+
+
+ #512BD4
+ #DFD8F7
+ #2B0B98
+ White
+ Black
+ #E1E1E1
+ #C8C8C8
+ #ACACAC
+ #919191
+ #6E6E6E
+ #404040
+ #212121
+ #141414
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #F7B548
+ #FFD590
+ #FFE5B9
+ #28C2D1
+ #7BDDEF
+ #C3F2F4
+ #3E8EED
+ #72ACF1
+ #A7CBF6
+
+
\ No newline at end of file
diff --git a/src/CouponsApp/Resources/Styles/Styles.xaml b/src/CouponsApp/Resources/Styles/Styles.xaml
new file mode 100644
index 0000000..1ec9d55
--- /dev/null
+++ b/src/CouponsApp/Resources/Styles/Styles.xaml
@@ -0,0 +1,384 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/CouponsApp/Services/CouponService.cs b/src/CouponsApp/Services/CouponService.cs
new file mode 100644
index 0000000..6f3bfae
--- /dev/null
+++ b/src/CouponsApp/Services/CouponService.cs
@@ -0,0 +1,105 @@
+using CouponsApp.Models;
+
+namespace CouponsApp.Services
+{
+ public class CouponService
+ {
+ static CouponService _instance;
+
+ public static CouponService Instance
+ {
+ get
+ {
+ _instance ??= new CouponService();
+
+ return _instance;
+ }
+ }
+
+ public List GetCoupons()
+ {
+ return new List
+ {
+ new Coupon
+ {
+ Id = 1,
+ Title = "McDonald's french",
+ Discount= -5.00,
+ CompanyLogo = "McDonalds.png",
+ Image = "Chips.png",
+ Color = Color.FromArgb("#FF4AA596")
+ },
+
+ new Coupon
+ {
+ Id = 2,
+ Title = "Donuts",
+ Discount= -0.50,
+ CompanyLogo = "DunkinDonuts.png",
+ Image = "Donut.png",
+ Color = Color.FromArgb("#FFE0E7F8"),
+ },
+
+ new Coupon
+ {
+ Id = 3,
+ Title= "Pizza",
+ Discount = -1.25,
+ CompanyLogo = "Domino.png",
+ Image = "Pizza.png",
+ Color = Color.FromArgb("#FFE5E3F2"),
+ },
+
+ new Coupon
+ {
+ Id = 4,
+ Title="iPhone",
+ Discount= -15,
+ CompanyLogo = "Apple.png",
+ Image= "iPhone.png",
+ Color= Color.FromArgb("#FFD7E2F1"),
+ },
+
+ new Coupon
+ {
+ Id = 5,
+ Title = "Cappuccino",
+ Discount = -10,
+ CompanyLogo = "Starbucks.png",
+ Image = "Coffee.png",
+ Color = Color.FromArgb("#FFEFE9EB")
+ },
+
+ new Coupon
+ {
+ Id = 6,
+ Title = "Shoes",
+ Discount = -30,
+ CompanyLogo = "Adidas.png",
+ Image = "Shoes.png",
+ Color = Color.FromArgb("#FFEBE9F1")
+ },
+
+ new Coupon
+ {
+ Id = 7,
+ Title = "Electric toothbrush",
+ Discount = -18,
+ CompanyLogo = "Goby.png",
+ Image = "Toothbrush.png",
+ Color = Color.FromArgb("#FFEDDCEE")
+ },
+
+ new Coupon
+ {
+ Id = 8,
+ Title = "Game Consoles",
+ Discount = -10,
+ CompanyLogo = "Sony.png",
+ Image = "PS5.png",
+ Color = Color.FromArgb("#FF191879")
+ },
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/CouponsApp/Services/DiscoverService.cs b/src/CouponsApp/Services/DiscoverService.cs
new file mode 100644
index 0000000..06daf89
--- /dev/null
+++ b/src/CouponsApp/Services/DiscoverService.cs
@@ -0,0 +1,31 @@
+using CouponsApp.Models;
+
+namespace CouponsApp.Services
+{
+ public class DiscoverService
+ {
+ static DiscoverService _instance;
+
+ public static DiscoverService Instance
+ {
+ get
+ {
+ _instance ??= new DiscoverService();
+
+ return _instance;
+ }
+ }
+
+ public List GetDiscover()
+ {
+ return new List
+ {
+ new Discover { Title = "Most Favourites", CouponsCount = 28, Color = Color.FromArgb("#FFEAA833") },
+
+ new Discover { Title = "Newest", CouponsCount = 20, Color = Color.FromArgb("#FF40BAF6") },
+
+ new Discover { Title = "Supermarkets", CouponsCount = 56, Color = Color.FromArgb("#FFA7D5F8") },
+ };
+ }
+ }
+}
diff --git a/src/CouponsApp/ViewModels/CouponsViewModel.cs b/src/CouponsApp/ViewModels/CouponsViewModel.cs
new file mode 100644
index 0000000..fe0edf7
--- /dev/null
+++ b/src/CouponsApp/ViewModels/CouponsViewModel.cs
@@ -0,0 +1,43 @@
+using CouponsApp.Models;
+using CouponsApp.Services;
+using System.Collections.ObjectModel;
+
+namespace CouponsApp.ViewModels
+{
+ public class CouponsViewModel : BindableObject
+ {
+ ObservableCollection _coupons;
+ ObservableCollection _discover;
+
+ public CouponsViewModel()
+ {
+ LoadData();
+ }
+
+ public ObservableCollection Coupons
+ {
+ get { return _coupons; }
+ set
+ {
+ _coupons = value;
+ OnPropertyChanged();
+ }
+ }
+
+ public ObservableCollection Discover
+ {
+ get { return _discover; }
+ set
+ {
+ _discover = value;
+ OnPropertyChanged();
+ }
+ }
+
+ void LoadData()
+ {
+ Coupons = new ObservableCollection(CouponService.Instance.GetCoupons());
+ Discover = new ObservableCollection(DiscoverService.Instance.GetDiscover());
+ }
+ }
+}
diff --git a/src/CouponsApp/Views/CouponsView.xaml b/src/CouponsApp/Views/CouponsView.xaml
new file mode 100644
index 0000000..ccdc96c
--- /dev/null
+++ b/src/CouponsApp/Views/CouponsView.xaml
@@ -0,0 +1,192 @@
+
+
+
+
+
+ #EFF1F9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/CouponsApp/Views/CouponsView.xaml.cs b/src/CouponsApp/Views/CouponsView.xaml.cs
new file mode 100644
index 0000000..305ba0f
--- /dev/null
+++ b/src/CouponsApp/Views/CouponsView.xaml.cs
@@ -0,0 +1,20 @@
+namespace CouponsApp.Views
+{
+ public partial class CouponsView : ContentPage
+ {
+ public CouponsView()
+ {
+ InitializeComponent();
+ }
+
+ private void ViewCell_Appearing(object sender, EventArgs e)
+ {
+
+ }
+
+ private void ViewCell_Disappearing(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml b/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml
new file mode 100644
index 0000000..595f604
--- /dev/null
+++ b/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml.cs b/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml.cs
new file mode 100644
index 0000000..51952a9
--- /dev/null
+++ b/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml.cs
@@ -0,0 +1,10 @@
+namespace CouponsApp.Views.Templates
+{
+ public partial class CouponItemTemplate : ContentView
+ {
+ public CouponItemTemplate()
+ {
+ InitializeComponent();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml b/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml
new file mode 100644
index 0000000..ce13d56
--- /dev/null
+++ b/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml.cs b/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml.cs
new file mode 100644
index 0000000..2bfcfcf
--- /dev/null
+++ b/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml.cs
@@ -0,0 +1,9 @@
+namespace CouponsApp.Views.Templates;
+
+public partial class DiscoverItemTemplate : ContentView
+{
+ public DiscoverItemTemplate()
+ {
+ InitializeComponent();
+ }
+}
\ No newline at end of file