diff --git a/contributors/Hac144/client/Demo.jsx b/contributors/Hac144/client/Demo.jsx
new file mode 100644
index 00000000..1723ae42
--- /dev/null
+++ b/contributors/Hac144/client/Demo.jsx
@@ -0,0 +1,11 @@
+import TrialCard from "./TrialCard";
+
+export default function Demo() {
+ const demoSub = {
+ name: "Netflix",
+ isTrial: true,
+ trialEndsAt: "2026-01-26"
+ };
+
+ return ;
+}
diff --git a/contributors/Hac144/client/TrialCard.jsx b/contributors/Hac144/client/TrialCard.jsx
new file mode 100644
index 00000000..270c9866
--- /dev/null
+++ b/contributors/Hac144/client/TrialCard.jsx
@@ -0,0 +1,39 @@
+export default function TrialCard({ subscription }) {
+ const today = new Date();
+ const end = new Date(subscription.trialEndsAt);
+ const daysLeft = Math.ceil((end - today) / (1000 * 60 * 60 * 24));
+
+ const endingSoon = daysLeft <= 3;
+
+ return (
+
+
+ {subscription.isTrial && (
+
+ FREE TRIAL
+
+ )}
+
+
{subscription.name}
+
+ {subscription.isTrial && (
+
+ {endingSoon
+ ? `Trial ending in ${daysLeft} days`
+ : `Trial ends in ${daysLeft} days`}
+
+ )}
+
+ );
+}
diff --git a/contributors/Hac144/client/index.html b/contributors/Hac144/client/index.html
new file mode 100644
index 00000000..fd0d9cb2
--- /dev/null
+++ b/contributors/Hac144/client/index.html
@@ -0,0 +1,116 @@
+
+
+
+
+ Free Trial Highlighting
+
+
+
+
+
+
+
+
+
Netflix Subscription
+
+
+ FREE TRIAL
+
+
+
+
+ Cancel anytime before the trial ends to avoid charges.
+
+
+
+
+
+
+
diff --git a/contributors/Hac144/client/ui.html b/contributors/Hac144/client/ui.html
new file mode 100644
index 00000000..4d200f79
--- /dev/null
+++ b/contributors/Hac144/client/ui.html
@@ -0,0 +1,131 @@
+
+
+
+
+ Subscriptions - Filters & Sorting
+
+
+
+
+
+My Subscriptions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+