Skip to content
VibeFather
Sign up free

3 cases built from this template

Same prompt, different [VARIABLES]. Click one to preview it above.

About this template

Daybloom is a single-page landing site for a mobile app, written around an invented habit tracker. It is built for people launching a consumer app who want the page itself to feel like the product: soft, friendly and a little playful. The page sits on a warm cream background with drifting peach, lilac, mint and butter gradient blobs, large rounded cards and a violet accent used only for actions. The centerpiece is a phone drawn entirely in CSS, with a frame, camera pill, status bar and home indicator and no device artwork. In the features section the phone stays pinned beside the copy, and its screen cross-fades between four in-app views (today's check-ins, a forgiving streak, a weekly chart and a reminder feed) as each feature scrolls past. On phones the pinned layout turns into a stacked one, with a smaller phone above each step. Below that is a working streak calendar. Visitors pick one of three habits, tap days to mark them done, and watch the current streak, longest streak and completion ring update, with a small burst of confetti dots at milestones. The rest of the page covers the usual launch needs: a slow marquee of habit chips, six testimonial cards with drawn initial avatars instead of photos or company logos, Free and Plus pricing with a sliding monthly and yearly switch, a short FAQ and a closing download card. The download buttons are plain pills drawn in code, not store badges. Everything is code-drawn or comes from Lucide, so no image licenses need tracking. To adapt it, change the brand, what the app does, who it is for, the four example habits and the Plus price. The layout, palette and motion stay the same, so a plant-care app or a study timer fits just as well.

The template prompt

The live demo was built from exactly this text — nothing added. The other cases only change the values of the [VARIABLES].

# Habit Tracker App Landing Page

Build this website exactly as described below. Replace the [VARIABLES] with your own values; keep everything else.

## Brief
A single-page landing site for Dewly, an invented mobile habit-tracking app. Light and airy on a cream background with soft drifting pastel gradient blobs. The signature pieces: a phone mockup drawn entirely in CSS that stays sticky while its screen cross-fades between four in-app views as the visitor scrolls through the features, and an interactive streak calendar visitors can tap to see their streak, longest streak and completion ring update live. Also: a habit-chip marquee, testimonials with code-drawn initial avatars, Free / Plus pricing with a monthly-yearly switch, an FAQ and a download card with code-drawn download buttons.

- Audience: Busy people who keep restarting their routines and want a tracker that feels kind rather than strict.
- Goal: Get the visitor to download the app. Every primary button leads to the download section, and the interactive demos show how the app feels before they install it.
- Tone: Warm, encouraging and lightly playful. Short sentences, no guilt and no hustle language. Feels like a friend who remembers things for you.

## Stack
- Framework: Vite 5 + React 18 + TypeScript
- Styling: Tailwind CSS 3.4
- Libraries: react 18 (MIT), react-dom 18 (MIT), motion (import from motion/react) (MIT), lucide-react (ISC), @fontsource-variable/fraunces (OFL-1.1), @fontsource-variable/plus-jakarta-sans (OFL-1.1), tailwindcss 3.4 + postcss + autoprefixer (dev) (MIT), vite 5 + @vitejs/plugin-react (dev) (MIT), typescript (dev) (Apache-2.0)
- Build: `npm run build` → static files in `dist/`. No backend, no server code, no external APIs.
- Setup:
  - Scaffold with the Vite react-ts template; package.json scripts: dev = vite, build = tsc -b && vite build, preview = vite preview.
  - vite.config.ts: plugins [react()], base: './', build: { sourcemap: false, outDir: 'dist' }.
  - tailwind.config.ts: content ['./index.html', './src/**/*.{ts,tsx}']; extend colors with every token from Design > Colors using the names cream, ink, muted, line, peach, lilac, mint, butter, violet, violet-deep, coral, frame; extend fontFamily display: ['Fraunces Variable', 'Georgia', 'serif'] and sans: ['Plus Jakarta Sans Variable', 'system-ui', 'sans-serif'].
  - Define keyframes in tailwind.config.ts: drift (translate 0,0 → 40px,-30px → -30px,20px → 0,0 over 22s ease-in-out infinite), float (translateY 0 → -8px → 0 over 6s ease-in-out infinite), marquee (translateX 0 → -50% over 40s linear infinite) and marquee-reverse (translateX -50% → 0 over 40s linear infinite); expose them as animate-drift, animate-float, animate-marquee and animate-marquee-reverse.
  - In src/index.css add a @media (prefers-reduced-motion: reduce) block that sets animation: none on .animate-drift, .animate-float, .animate-marquee and .animate-marquee-reverse, and sets html { scroll-behavior: auto }. Otherwise html { scroll-behavior: smooth } with scroll-padding-top: 88px.
  - Import '@fontsource-variable/fraunces' and '@fontsource-variable/plus-jakarta-sans' at the top of src/main.tsx. Body uses font-sans, text-ink and bg-cream.
  - All copy, habit lists, calendar seed data, testimonials, prices and FAQ live in src/content.ts, keyed by section. Components only read from it.
  - Components in src/components/: Nav, Hero, PhoneFrame, screens/TodayScreen, screens/StreakScreen, screens/WeekScreen, screens/RemindersScreen, HabitMarquee, FeatureScroll, StreakDemo, Testimonials, Pricing, Faq, DownloadCta, Footer, Logo, DownloadButtons, BackgroundBlobs.
  - PhoneFrame takes a width prop (300 on desktop, 240 on mobile) and scales all inner dimensions proportionally with a CSS transform or a scale factor, keeping a 300:620 aspect ratio.
  - Use useReducedMotion() from motion/react in every component with JS-driven motion. When it returns true, skip entrance and float animations and swap screens instantly.
  - index.html: <title>Dewly — Tiny habits, kept gently</title> (brand from [BRAND]) and <link rel="icon" href="./favicon.svg" type="image/svg+xml">; put favicon.svg (the Logo mark) in public/.

## Variables
- [BRAND] — App name (default: "Dewly"). Short, invented, one word. Used in the nav wordmark, the title and the copy.
- [APP_PURPOSE] — What the app does, in one line (default: "a gentle habit tracker that celebrates small daily wins"). Drives the hero subhead, the feature copy and the in-phone screens.
- [AUDIENCE] — Who it is for (default: "busy people who keep restarting their routines"). Shapes the testimonials (roles), the FAQ and the tone of the reminders.
- [HABIT_EXAMPLES] — Four example items tracked in the app (default: "Drink water, Read 10 pages, Stretch, Walk outside"). Exactly four, comma-separated. They fill the Today screen, the first four marquee chips and the first three streak-demo chips. Pick a fitting Lucide icon for each.
- [PLUS_PRICE] — Paid plan price (default: "$4.99 a month or $35.99 a year"). Monthly and yearly prices. Compute the per-month yearly price and the savings percentage from them, rounded to whole percent.
- [CREDIT] — keep a small "Template by VibeFather" link to https://vibefather.ai/t/habit-tracker-app-landing-page in the footer (default: yes; delete this line to remove it)

The copy under Pages & Sections is written for the default values. If your values differ, rewrite every headline, paragraph, label and image for them — same length, tone and structure. Layout, colors, type and motion stay as described.
Keep all copy, image paths and links in one content file (for example `src/content.ts`), keyed by section, so the content can be swapped later without touching components.

Pro template. The design, sections, motion and assets parts of this prompt are for Pro members. The live demo and DESIGN.md stay free.

DESIGN.md

The design system on its own — colors, type, spacing and motion. Apply this look to a project you already have.

---
name: "Habit Tracker App Landing Page"
colors:
  cream: "#FFF8F3"
  ink: "#2B2340"
  muted: "#6E6585"
  line: "#EFE6F5"
  peach: "#FFC9B5"
  lilac: "#D9C8FF"
  mint: "#BDEBD8"
  butter: "#FFE9A8"
  violet: "#7C5CFF"
  violet_deep: "#5B3FE0"
  coral: "#FF7A59"
  white: "#FFFFFF"
  frame: "#1E1A2B"
typography:
  display_h1_h2_h3_big_numbers: { family: "Fraunces Variable", weights: [500, 600] }
  body_ui_buttons_and_in_phone_text: { family: "Plus Jakarta Sans Variable", weights: [400, 500, 600, 700] }
spacing: "8px base grid. Content container max-w-6xl (1152px), px-6 mobile / px-8 desktop. Sections py-20 on mobile and py-28 on desktop. Cards use p-6 mobile / p-8 desktop. h1 is 64px/1.05 on desktop and 42px/1.08 on mobile, Fraunces 600, tracking -0.02em. h2 is 48px/1.1 desktop and 34px mobile, Fraunces 600. h3 is 26px Fraunces 500. Body is 18px/1.6 desktop and 16px mobile. Eyebrows are 13px Plus Jakarta 600 uppercase with tracking 0.12em, violet, inside a white pill with a Line border (px-3 py-1)."
radius: "Cards 28px. Inner tiles and calendar cells 14px. Buttons, chips, toggles and eyebrow pills fully rounded (9999px). Phone frame 48px outer and 38px screen at 300px width, scaled proportionally."
---

# Habit Tracker App Landing Page — Design System

Apply this design system to an existing project. It describes the look and feel only; for the full site, use prompt.md.

## Colors
- **Cream** `#FFF8F3` — Page background and phone screen background
- **Ink** `#2B2340` — Headings, body text, primary download button fill
- **Muted** `#6E6585` — Secondary text, captions, disabled calendar numbers
- **Line** `#EFE6F5` — Card borders, dividers, calendar cell borders
- **Peach** `#FFC9B5` — Gradient blob, Stretch habit color, avatar fill
- **Lilac** `#D9C8FF` — Gradient blob, Read habit color, avatar fill
- **Mint** `#BDEBD8` — Gradient blob, Water habit color, avatar fill
- **Butter** `#FFE9A8` — Gradient blob, streak flame backdrop, avatar fill
- **Violet** `#7C5CFF` — Primary accent: CTAs, toggle pill, active dots, today ring, focus rings
- **Violet Deep** `#5B3FE0` — Hover and pressed state of violet elements
- **Coral** `#FF7A59` — Streak flame icon, savings badge, confetti dots, star ratings
- **White** `#FFFFFF` — Card surfaces, secondary download button, phone notification cards
- **Frame** `#1E1A2B` — CSS phone frame and camera pill

## Typography
- **Display (h1, h2, h3, big numbers)** — Fraunces Variable (OFL), weights 500/600. Self-host the font files.
- **Body, UI, buttons and in-phone text** — Plus Jakarta Sans Variable (OFL), weights 400/500/600/700. Self-host the font files.

## Spacing & shape
- Spacing: 8px base grid. Content container max-w-6xl (1152px), px-6 mobile / px-8 desktop. Sections py-20 on mobile and py-28 on desktop. Cards use p-6 mobile / p-8 desktop. h1 is 64px/1.05 on desktop and 42px/1.08 on mobile, Fraunces 600, tracking -0.02em. h2 is 48px/1.1 desktop and 34px mobile, Fraunces 600. h3 is 26px Fraunces 500. Body is 18px/1.6 desktop and 16px mobile. Eyebrows are 13px Plus Jakarta 600 uppercase with tracking 0.12em, violet, inside a white pill with a Line border (px-3 py-1).
- Radius: Cards 28px. Inner tiles and calendar cells 14px. Buttons, chips, toggles and eyebrow pills fully rounded (9999px). Phone frame 48px outer and 38px screen at 300px width, scaled proportionally.

## Motion
- Background blobs: four absolutely positioned circles (520–720px, filter blur(80px), opacity 0.7) in Peach, Lilac, Mint and Butter, each with animate-drift and a different animation-delay (0s, -6s, -11s, -16s). They sit behind content in a fixed, pointer-events-none layer.
- Section reveal: each section's header and cards fade from opacity 0, y 24 to opacity 1, y 0 over 0.6s with ease [0.22, 1, 0.36, 1] when 20% visible, once only. Card grids stagger children by 0.08s.
- Hero entrance on load: eyebrow, h1, subhead, buttons and rating row stagger in (0.1s apart, 0.7s each, y 20 → 0). The phone enters from y 60, rotate -4deg, opacity 0 to y 0, rotate -4deg, opacity 1 over 0.9s, then loops animate-float.
- Feature screens: when the active step changes, the outgoing screen fades out (opacity 1 → 0, 0.25s) and the incoming one fades in from opacity 0, y 12, scale 0.98 to opacity 1, y 0, scale 1 over 0.45s, using AnimatePresence with mode 'wait'. The blob behind the phone transitions background-color over 0.6s.
- Micro-interactions: buttons lift -2px with a stronger shadow on hover over 0.2s and scale to 0.97 on press. Calendar cells spring-scale to 1.12 and back on tap (stiffness 500, damping 20). The pricing toggle pill slides with a spring (stiffness 400, damping 30) using a shared layoutId.
- Prices swap with a vertical roll: the old number exits to y -12 with opacity 0 and the new one enters from y 12 over 0.3s.
- Milestone confetti: 12 small circles (6–8px) in Coral, Violet, Mint and Butter burst from the stats ring outward at random angles (40–90px), fading out over 0.8s.
- prefers-reduced-motion: no blob drift, no float, no marquee movement (the chips wrap as a static centered row), no confetti, no entrance transforms (content is visible immediately), and feature screens swap with no transition.

## Imagery
No photos or bitmaps. Everything is drawn in code: pastel blurred blobs in CSS, the phone and every in-app screen in HTML/CSS, the logo and favicon as inline SVG, avatars as colored circles with initials, icons from lucide-react, and the confetti as divs. A faint grain overlay (an inline SVG feTurbulence data URI, opacity 0.04, fixed, pointer-events-none) sits above the blobs.

## Tone
Warm, encouraging and lightly playful. Short sentences, no guilt and no hustle language. Feels like a friend who remembers things for you.

---
— Prompt by VibeFather · https://vibefather.ai/t/habit-tracker-app-landing-page · CC BY-NC 4.0 (non-commercial; commercial use needs a VibeFather Pro license) · Request removal: https://vibefather.ai/takedown

Make it yours

  • A plant-care reminder app: set [BRAND] to your app, write [APP_PURPOSE] around watering schedules, and swap [HABIT_EXAMPLES] for misting, repotting and feeding.
  • A study timer for students: set [AUDIENCE] to exam-season students, rewrite the in-phone screens as focus sessions, and change [HABIT_EXAMPLES] to daily review blocks.
  • An indie founder's first launch: keep the pastel palette, set [PLUS_PRICE] to your paid tier, and rewrite the testimonials with roles from your beta testers.
  • A wellness coach's companion app: set [AUDIENCE] to clients building routines, change [HABIT_EXAMPLES] to sleep, movement and journaling, and point download buttons at your app.

Habit Tracker App Landing Page: questions and answers

How does the CSS phone in the Habit Tracker App Landing Page change screens while scrolling?

The Habit Tracker App Landing Page pins a phone drawn entirely in CSS beside the features copy, and its screen cross-fades between four in-app views as each feature scrolls past: today's check-ins, a forgiving streak, a weekly chart and a reminder feed. On mobile the pinned layout stacks, with a smaller phone above each step. When a visitor prefers reduced motion, the screens swap instantly instead of fading.

Can visitors try the habit tracker before downloading it on this landing page?

Yes. The Habit Tracker App Landing Page includes a working streak calendar. Visitors pick one of three habits, tap days to mark them done, and the current streak, longest streak and completion ring update live, with a small burst of confetti dots at milestones. That gives people a feel for the app before they install anything, and every primary button leads to the download card.

What do I change to make this app landing page fit a different app?

The Habit Tracker App Landing Page is driven by five variables: BRAND, APP_PURPOSE, AUDIENCE, HABIT_EXAMPLES and PLUS_PRICE. Change the app name, the one-line description of what the app does, who it is for, the four example habits and the paid plan price, then rewrite the headlines, feature copy, testimonials, FAQ and reminders to match. The layout, pastel palette and motion stay as they are.

Does the Habit Tracker App Landing Page need image licenses or store badges?

No. Everything in the Habit Tracker App Landing Page is drawn in code or comes from Lucide, including the phone frame, camera pill, status bar, testimonial initial avatars and the download pills, which are plain buttons rather than store badges. That means no image licenses to track, and the page stays consistent if you change the brand colors.

What do I get with the Habit Tracker App Landing Page template, and can I use it for a client?

The Habit Tracker App Landing Page is a Pro template. Pro members see the full prompt and get the source code of the demo, which builds a single page on React, Tailwind CSS and Motion. Personal, non-commercial use of free prompts and every DESIGN.md is covered by CC BY-NC 4.0, while commercial and client work needs Pro.

How do I build a habit tracker app landing page with AI?

Copy the full prompt (Pro) from this page or run npx vibefather add habit-tracker-app-landing-page, replace [BRAND], [AUDIENCE], [PLUS_PRICE] and [APP_PURPOSE] with your own content, and paste it into Claude Code, Codex, Cursor or another AI coding agent. The live demos were built from exactly that text.

Which AI model built the Habit Tracker App Landing Page demo?

The Habit tracker app case was built by Claude Opus 5.5 in Cursor; the Plant-care reminder app case was built by Claude Opus 5.5 in Cursor; the Habit tracker app case was built by Gemini 4 Carbon in Cursor. Each build used the published prompt with nothing added, so you can compare the models side by side.

What tech stack and pages does the Habit Tracker App Landing Page template use?

Habit Tracker App Landing Page is a single-page site built with Tailwind CSS, Motion and React, with marquee, scroll animation and micro-interactions. The prompt fixes the stack so every AI tool builds the same kind of project, and the result runs as a static site you can host anywhere.

Is the Habit Tracker App Landing Page template free to use?

Habit Tracker App Landing Page is a Pro template: the brief, stack and variables are public, and the full prompt, the source code of the live demo and a commercial license come with VibeFather Pro. Its DESIGN.md is free for personal projects.

Does the Habit Tracker App Landing Page template work on mobile?

Yes. Every Habit Tracker App Landing Page build was tested on a phone-sized screen as well as desktop before it went live, checking layout, text size and touch targets. Open the live demo on your phone, or switch the preview on this page to mobile view, to check it yourself.