Refactor code structure for improved readability and maintainability
All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 2m52s

This commit is contained in:
2026-03-04 17:12:04 -05:00
parent c922e1180d
commit 992dd8423f
5 changed files with 12 additions and 31 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@@ -15,10 +15,7 @@
:class="{ 'feature-row-reverse': index % 2 !== 0 }" :class="{ 'feature-row-reverse': index % 2 !== 0 }"
> >
<div class="feature-screenshot"> <div class="feature-screenshot">
<div class="screenshot-placeholder"> <img :src="feature.screenshot" :alt="feature.screenshotLabel" class="screenshot-img" />
<span class="placeholder-icon">{{ feature.icon }}</span>
<span class="placeholder-label">{{ feature.screenshotLabel }}</span>
</div>
</div> </div>
<div class="feature-text"> <div class="feature-text">
<div class="feature-tag">{{ feature.tag }}</div> <div class="feature-tag">{{ feature.tag }}</div>
@@ -35,31 +32,31 @@
const features = [ const features = [
{ {
tag: 'Points & Chores', tag: 'Points & Chores',
icon: '⭐',
title: 'Chores Worth Collecting', title: 'Chores Worth Collecting',
body: 'Create chores with fully customizable point values. Kids earn points for every task they complete, turning daily responsibilities into something genuinely satisfying to collect.', body: 'Create chores with fully customizable point values. Kids earn points for every task they complete, turning daily responsibilities into something genuinely satisfying to collect.',
screenshotLabel: 'Chore Dashboard', screenshotLabel: 'Chore Dashboard',
screenshot: '/images/feature00.png',
}, },
{ {
tag: 'Rewards', tag: 'Rewards',
icon: '🎁',
title: 'Goals Kids Actually Care About', title: 'Goals Kids Actually Care About',
body: "Set up custom rewards that mean something to your child — screen time, a special outing, a toy they've been wanting. Saving up points teaches patience and goal-setting.", body: "Set up custom rewards that mean something to your child — screen time, a special outing, a toy they've been wanting. Saving up points teaches patience and goal-setting.",
screenshotLabel: 'Reward Store', screenshotLabel: 'Reward Store',
screenshot: '/images/feature01.png',
}, },
{ {
tag: 'Child View', tag: 'Child View',
icon: '👧',
title: 'Kids Stay in the Loop', title: 'Kids Stay in the Loop',
body: 'A simple, beautiful child interface shows exactly which chores need to be done today and which rewards are within reach — no confusion, no excuses.', body: 'A simple, beautiful child interface shows exactly which chores need to be done today and which rewards are within reach — no confusion, no excuses.',
screenshotLabel: 'Child Dashboard', screenshotLabel: 'Child Dashboard',
screenshot: '/images/feature02.png',
}, },
{ {
tag: 'Parent Controls', tag: 'Parent Controls',
icon: '🔒',
title: 'Powerful Parental Controls', title: 'Powerful Parental Controls',
body: "Hidden behind a PIN, the parent panel lets you add chores, adjust rewards, review history, and manage everything — without interrupting your child's flow.", body: "Hidden behind a PIN, the parent panel lets you add chores, adjust rewards, review history, and manage everything — without interrupting your child's flow.",
screenshotLabel: 'Parent Panel', screenshotLabel: 'Parent Panel',
screenshot: '/images/feature03.png',
}, },
] ]
</script> </script>
@@ -124,30 +121,14 @@ const features = [
direction: ltr; direction: ltr;
} }
.screenshot-placeholder { .screenshot-img {
background: var(--landing-placeholder-bg); width: 100%;
border: 1.5px solid var(--landing-placeholder-border); height: auto;
display: block;
border-radius: 16px; border-radius: 16px;
aspect-ratio: 16 / 10; border: 1.5px solid var(--landing-placeholder-border);
display: flex; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.35);
flex-direction: column; object-fit: cover;
align-items: center;
justify-content: center;
gap: 0.75rem;
backdrop-filter: blur(6px);
-webkit-backdrop-filter: blur(6px);
}
.placeholder-icon {
font-size: 2.8rem;
line-height: 1;
}
.placeholder-label {
font-size: 0.85rem;
color: var(--landing-hero-subtext);
font-weight: 500;
letter-spacing: 0.04em;
} }
.feature-tag { .feature-tag {