# TapTrack Website — Development Plan **Stack:** Vue 3 + TypeScript · Tailwind CSS v4 · Vite **Deployment:** Vercel / Netlify **Design source:** `pencil-new.pen` --- ## Phase 1 — Project Scaffold & Foundation **Goal:** Runnable dev server with global styles, fonts, and design tokens in place. ### Tasks 1. Scaffold project with `npm create vite@latest` (Vue + TypeScript) 2. Install and configure Tailwind CSS v4 3. Install `lucide-vue-next` for icons 4. Add Inter font via Google Fonts (`index.html`) 5. Define global CSS variables (colors, spacing) from design tokens 6. Set up base `App.vue` shell with router placeholder 7. Move `public/screenshots/` and `Reports.jpg` into `public/` asset tree 8. Verify `npm run dev` runs clean with blank page ### Deliverable Clean Vite + Vue 3 + Tailwind v4 dev server at `localhost:5173` --- ## Phase 2 — Layout Shell & Navigation **Goal:** Full-width page shell with sticky nav and footer wired up. ### Tasks 1. Create `AppNavbar.vue` - TapTrack logo mark (blue "T" box) + wordmark - Nav links: Features, How It Works, Services, Contact - "Request a Demo" CTA button (scrolls to contact section) - Sticky on scroll, white background, bottom border 2. Create `AppFooter.vue` - Brand column with logo + tagline - 3 link columns: Product, Company, Legal - Bottom bar with copyright 3. Wire `App.vue` → `AppNavbar` + `` + `AppFooter` 4. Create `LandingPage.vue` as the `/` route ### Deliverable Navigable page shell with working sticky header and footer --- ## Phase 3 — Hero Section **Goal:** Above-the-fold hero with real screenshot mockup. ### Tasks 1. Create `HeroSection.vue` - "Built for Philippine Schools" pill badge - H1: "Attendance That Runs Itself." - Subtitle paragraph - Two CTA buttons ("Request a Demo" + "See How It Works") - Trust row (two checkmark lines) - Right column: screenshot of Live Attendance (`public/screenshots/58IBI.png`) in a rounded frame with border - Caption below screenshot 2. Responsive: stack to single column on mobile ### Deliverable Pixel-faithful hero section matching the Pencil design --- ## Phase 4 — Privacy Banner & "See It Live" Section **Goal:** Two full-width sections between Hero and Features. ### Tasks 1. Create `PrivacyBanner.vue` - Dark navy background - Left: "DATA PRIVACY" label + headline + subtitle - Right: 3 stat items (On-Premises, DepEd Aligned, Works Offline) with Lucide icons 2. Create `SeeItLiveSection.vue` - Light blue background - Centered headline + subtitle - Gate View screenshot (`public/screenshots/gE861.png`) in rounded frame - Caption below ### Deliverable Two polished full-width sections --- ## Phase 5 — Features Section **Goal:** 6-card features grid. ### Tasks 1. Create reusable `FeatureCard.vue` component - Props: icon name, icon bg color, icon color, title, description 2. Create `FeaturesSection.vue` - "WHAT TAPTRACK DOES" label + headline + subtitle - 2 rows × 3 cards using `FeatureCard` - Cards: NFC Tap-In, Parent SMS, Live Dashboard, Reports, Student Mgmt, SMS Credits ### Deliverable Full features grid, pixel-faithful to design --- ## Phase 6 — App Screenshots Section **Goal:** 2-column screenshot showcase with labels. ### Tasks 1. Create `ScreenshotsSection.vue` - "INSIDE TAPTRACK" label + headline + subtitle - 2-column grid: - Student Directory card (`public/screenshots/4frZA.png`) - Reports & Analytics card (`Reports.jpg`) - Each card: screenshot image + title + description below 2. Responsive: stack to single column on mobile ### Deliverable Screenshot showcase section --- ## Phase 7 — How It Works Section **Goal:** 3-step explainer + billing card side panel. ### Tasks 1. Create `HowItWorksSection.vue` - Left column: "HOW IT WORKS" label + headline + subtitle + 3 numbered steps - Right column: "How billing works" white card - One-Time Implementation Fee item - Prepaid SMS Credits item - "No subscription fee" green note ### Deliverable How It Works section with billing breakdown --- ## Phase 8 — Support Section **Goal:** 5 support cards + 1 quote card. ### Tasks 1. Reuse `FeatureCard.vue` or create `SupportCard.vue` 2. Create `SupportSection.vue` - "AFTER-SALES SUPPORT" label + headline + subtitle - Row 1: Dedicated Support, System Updates, Staff Re-training - Row 2: Remote Troubleshooting, Data Backup, Quote card (blue tint) ### Deliverable Full support section --- ## Phase 9 — Contact / CTA Section **Goal:** Dark contact section with embedded demo request form. ### Tasks 1. Create `ContactSection.vue` - Dark navy background - Left: "GET IN TOUCH" label + headline + subtitle + 3 bullet points - Right: dark "Request a Demo" form card - Fields: School Name, Contact Person, Phone / Email - "Send Request" blue button 2. Wire up basic form validation (required fields) 3. Optional: integrate with Formspree or EmailJS for real submissions ### Deliverable Working contact/demo request form --- ## Phase 10 — Polish, Responsiveness & Deployment **Goal:** Production-ready site, fully responsive, deployed. ### Tasks 1. Mobile responsiveness pass for all sections (breakpoints: sm, md, lg) 2. Smooth scroll behavior for anchor nav links 3. Scroll-triggered fade-in animations (Intersection Observer) 4. Add `` SEO tags (title, description, og:image) 5. Favicon using the TapTrack "T" blue mark 6. Run `npm run build` — fix any TypeScript or Tailwind errors 7. Deploy to Vercel (connect GitHub repo → auto deploy) 8. Verify live URL renders correctly ### Deliverable Live production URL on Vercel/Netlify --- ## Section → Component Map | Section | Component | Screenshot / Asset | |---|---|---| | Navigation | `AppNavbar.vue` | — | | Hero | `HeroSection.vue` | `58IBI.png` | | Privacy Banner | `PrivacyBanner.vue` | — | | See It Live | `SeeItLiveSection.vue` | `gE861.png` | | Features | `FeaturesSection.vue` + `FeatureCard.vue` | — | | App Screenshots | `ScreenshotsSection.vue` | `4frZA.png` + `Reports.jpg` | | How It Works | `HowItWorksSection.vue` | — | | Support | `SupportSection.vue` | — | | Contact / CTA | `ContactSection.vue` | — | | Footer | `AppFooter.vue` | — | --- ## Design Tokens | Token | Value | |---|---| | Primary blue | `#1D4ED8` | | Dark navy | `#0F172A` | | Body text | `#475569` | | Muted text | `#64748B` | | Subtle text | `#94A3B8` | | Background alt | `#F8FAFF` | | Card background | `#F8FAFC` | | Border | `#E2E8F0` | | Font | Inter | | Icons | Lucide (lucide-vue-next) | | Page width | 1440px max, 100px padding |