Queue-North-Website/docs/design/OVERHAUL_PLAN.md

30 KiB

Queue North Website — 2026 Overhaul Plan

Status: Current
Owner: _null
Last reviewed: 2026-08-18
Governs: tailwind.config.js, src/index.css — the visual system: palette,
         typography, spacing, radius and shadow, component choices, and the
         layout blueprints for each page type
Review trigger: Any change to a Tailwind theme token, the type scale, the
                spacing rhythm, or the layout of a page type; any new page type

Two halves, and only one is current. Its Scarlett Design Implementation Brief onward — Tailwind theme tokens, the numeric-typography rule, the type scale, section spacing, radius and shadow rules, the component list, the page blueprints and the explicit anti-patterns — is the live design authority for this project and should be trusted as written.

Its earlier Migration Phases and Agent Plan sections describe a rebuild that completed at v0.9.x. They are kept as the record of what was planned and are history, not instructions. The narrative of how it actually went is in docs/history/BATCH_LEDGER.md; open work is in the tracker.

TL;DR

Rebuild the current static HTML/CSS/JS website into a modern full-stack app using:

  • Vite — build tool, not Next.js
  • React — SPA with client-side routing via React Router
  • Tailwind CSS — utility-first styling
  • shadcn/ui — component primitives
  • Sonner — toast notifications
  • TanStack Query — server state management
  • Express — backend API
  • better-sqlite3 — local SQLite database

The current website has good business content, but the structure and visual design feel dated. The rebuild should make Queue North Technologies feel like a modern, trustworthy, premium communications and infrastructure partner.


Current Site Assessment

The current project is a static site with:

  • index.html — all pages live in one large file
  • styles.css — large hand-written stylesheet with many page-specific overrides
  • main.js — manual hash-based routing and interactions. Named without backticks because this section describes the site as it was BEFORE the rebuild; that file was deleted on 2026-08-18 and a backticked path would claim it still exists. The original is preserved in .drop/
  • Inline Zoho webform scripts
  • Static assets in assets/

Current Problems

  1. Single giant HTML file

    • All pages live inside index.html.
    • Routing is manually handled through hash-based JavaScript.
    • The structure is hard to maintain and scale.
  2. CSS is doing too much

    • styles.css is very large.
    • Many page-specific rules and overrides exist.
    • Layout feels patched together instead of systemized.
  3. Old visual language

    • Current colors lean heavily on dark teal and beige.
    • Header/logo behavior feels awkward and dated.
    • Repeated cards and sections lack a strong modern design system.
    • The site communicates the right business, but not with enough polish.
  4. Fragile contact form flow

    • Inline Zoho scripts.
    • Hidden iframe submission.
    • Difficult to validate, style, and control in a modern app.
  5. No real application architecture

    • No component system.
    • No API layer.
    • No database.
    • No modern routing.
    • No server-state management.

Target Architecture

Frontend Stack

Use:

  • Vite
  • React
  • React Router
  • Tailwind CSS
  • shadcn/ui
  • Sonner
  • TanStack Query

Suggested Frontend Structure

client/
  src/
    app/
      App.jsx
      router.jsx
    components/
      layout/
        Header.jsx
        Footer.jsx
        MobileNav.jsx
      sections/
        Hero.jsx
        TrustBar.jsx
        ServicesGrid.jsx
        IndustriesGrid.jsx
        PartnerSection.jsx
        ContactCTA.jsx
      ui/
        shadcn components
    pages/
      Home.jsx
      About.jsx
      Services.jsx
      ServiceDetail.jsx
      Industries.jsx
      IndustryDetail.jsx
      EightXEight.jsx
      Contact.jsx
      Support.jsx
    lib/
      api.js
      queryClient.js
    data/
      services.js
      industries.js

Backend Stack

Use:

  • Express
  • better-sqlite3

Suggested Backend Structure

server/
  index.js
  db/
    connection.js
    schema.sql
  routes/
    leads.js
    support.js
    health.js
  services/
    leadService.js
    supportService.js

Initial API Routes

GET  /api/health
POST /api/leads
POST /api/support
GET  /api/services
GET  /api/industries

Database Plan

Use SQLite through better-sqlite3.

Initial Tables

leads
- id
- company
- name
- email
- phone
- zip
- message
- service_interest
- created_at

support_requests
- id
- name
- company
- email
- phone
- issue
- priority
- created_at

Zoho Integration

Zoho should not drive the frontend anymore.

Recommended path:

  1. Frontend submits to Express.
  2. Express validates request.
  3. Express stores submission in SQLite.
  4. Optional later: backend forwards lead data to Zoho.

This keeps the website clean, testable, and controllable.


New Visual Direction

Brand Feel

Target vibe:

Bright enterprise communications partner. Clean, trustworthy, modern, approachable, and premium.

The site should feel less like a local IT website from the early 2000s and more like a serious communications, contact center, and infrastructure partner for modern businesses.

Because this is a business services website, the visual direction should be light-first, not fully dark/cyber. A mostly dark interface can look sleek, but it may also feel too niche, too technical, or too startup/gaming-adjacent for SMB and enterprise buyers. The better direction is a bright, polished base with strong navy sections and crisp blue/cyan accents.

Primary Light-First Palette

Background:   #F8FAFC
Section Alt:  #EEF6FB
Card:         #FFFFFF
Border:       #D8E3EA

Text:         #0F172A
Muted:        #475569
Soft Text:    #64748B

Primary Navy: #0B2A3C
Deep Navy:    #071A2A
Trust Blue:   #0EA5E9
Accent Cyan:  #22D3EE

Optional Warm Accent

Signal Gold: #F59E0B

Use gold sparingly for badges, stats, certification highlights, or key trust moments.

Dark Usage Guidance

Use dark navy intentionally, not everywhere:

  • Header or top navigation
  • Hero section
  • Footer
  • CTA bands
  • Certification/trust moments

Keep most body sections bright and readable:

  • White cards
  • Light blue-gray section backgrounds
  • Dark readable text
  • Blue/cyan action accents

This gives the site a modern 2026 look without making it feel like a cybersecurity, crypto, or gaming landing page.


Layout Direction

This section is the primary design brief for Scarlett.

The layout should feel like a modern B2B technology services website: bright, structured, confident, and conversion-focused. Avoid the early-2000s pattern of giant logos, crowded nav, heavy gradients everywhere, oversized generic images, and repeated boxed sections without rhythm.

Global Layout Principles

  • Use a light-first page body with strategic dark navy moments.
  • Use a consistent max-width container: approximately 1200px to 1280px.
  • Use generous vertical spacing:
    • Mobile sections: 64px to 80px
    • Desktop sections: 96px to 128px
  • Use a clear rhythm:
    • Dark hero
    • Light trust section
    • White/soft-blue service sections
    • Dark CTA band
    • Light detail sections
    • Dark footer
  • Keep the site visually calm. Do not use too many competing gradients, glows, borders, and shadows at once.
  • Cards should feel premium and clean, not like old Bootstrap panels.
  • Prefer fewer stronger sections over many cramped sections.
  • Every page should have one obvious primary action: usually Request Consultation or Contact Us.

Header / Navigation Layout

Desktop header:

  • Sticky top header.
  • Dark navy or white header is acceptable, but it must be compact and polished.
  • Logo should be normal-sized and aligned, not oversized or bleeding into content.
  • Navigation should be single-line and calm:
Home
Services
Industries
8x8
About
Contact
Support
  • Primary CTA button on the right:
    • Request Consultation
  • Use shadcn/ui NavigationMenu if dropdowns are retained.
  • Avoid wrapping nav links.
  • Avoid huge dropdown panels unless they add real clarity.

Mobile header:

  • Use shadcn/ui Sheet for navigation.
  • Menu should slide in cleanly.
  • Primary routes appear first.
  • Service and industry subroutes can appear under simple section labels.
  • CTA button should be visible in the sheet.

Home Page Layout

Recommended home page structure:

  1. Hero

    • Use a dark navy hero section with bright text.
    • Large modern headline.
    • Suggested headline: Modern Communications Infrastructure Without the Vendor Noise
    • Subheading focused on UCaaS, Contact Center, networking, deployment, and managed lifecycle support.
    • Two CTAs:
      • Primary: Request Consultation
      • Secondary: Explore Services
    • Right side visual:
      • Use a refined communications/network image, abstract interface panel, or polished existing asset.
      • Do not use a raw stock-image block that feels pasted in.
    • Trust chips below copy:
      • 8x8 Certified Partner
      • Veteran Owned
      • 25+ Years Experience
      • SMB to Enterprise
  2. Trust / Certification Bar

    • Light section directly below hero.
    • Include 8x8 partner logo or certification language.
    • Purpose: quickly establish credibility before services.
    • Keep it compact and horizontal on desktop, stacked on mobile.
  3. Services Preview

    • Bright section with white cards.
    • 6-7 concise service cards.
    • Each card should include:
      • Icon or small visual marker
      • Service name
      • One-sentence value statement
      • Subtle Learn more affordance
    • Avoid large image tiles unless imagery is carefully cropped and consistent.
  4. Why Queue North

    • Three-pillar layout:
      • Architecture
      • Deployment
      • Lifecycle Support
    • This section should explain how Queue North works, not just what it sells.
    • Recommended style: alternating light background with strong typography and small supporting cards.
  5. Industries

    • Healthcare
    • Retail
    • Manufacturing
    • Education & Finance
    • These should feel like solution pathways.
    • Do not present them as generic stock categories.
    • Each industry card should connect pain point → Queue North solution.
  6. Final CTA

    • Dark navy CTA band near bottom of page.
    • Suggested copy: Tell us what you're trying to fix. We'll help map the path.
    • CTA button: Request Consultation

Inner Page Layouts

Every inner page should use a consistent pattern:

  1. Page Hero

    • Short headline.
    • One paragraph explaining the page value.
    • Optional badge, e.g. Service, Industry, or 8x8 Partner.
  2. Main Content Section

    • Use a two-column layout on desktop when useful:
      • Left: core explanation
      • Right: card with key benefits, use cases, or CTA
    • Stack cleanly on mobile.
  3. Supporting Cards

    • Use 3-card or 4-card grids for benefits, capabilities, or outcomes.
    • Keep card heights balanced.
  4. CTA Footer Band

    • Each major page should end with a CTA leading to contact.

Services Page Layout

The /services page should act as a service hub.

  • Top page hero explains the whole service model.
  • Follow with a card grid for all services.
  • Each service card links to its detail route.
  • Recommended service card structure:
[small icon]
Service Name
Short outcome-driven description
Learn more →

Service detail pages should include:

  • Hero with service name and value proposition.
  • Section: What this solves
  • Section: How Queue North helps
  • Section: Ideal for
  • CTA: Talk to us about this service

Industries Page Layout

The /industries page should explain that Queue North adapts communications and support to operational realities.

Industry detail pages should include:

  • Hero with industry-specific value proposition.
  • Pain points.
  • Queue North solution approach.
  • Relevant services.
  • CTA.

Contact / Support Layout

Contact and support pages must feel trustworthy and simple.

  • Use shadcn/ui form primitives.
  • Keep forms visually clean with clear labels.
  • Use Sonner toast for success/error states.
  • Avoid giant intimidating forms.
  • Use a two-column desktop layout:
    • Left: reassurance, contact expectations, phone/email if available
    • Right: form card
  • On mobile, form comes after the intro copy.

Design Quality Bar

Scarlett should treat the design as unacceptable if it has any of these issues:

  • Nav wraps on desktop.
  • Logo is oversized or visually collides with content.
  • Cards look like default boxes with no hierarchy.
  • Text contrast is weak.
  • Sections feel cramped.
  • Mobile layout feels like a collapsed desktop site.
  • Images are inconsistent in crop, tone, or quality.
  • There is no clear CTA above the fold.
  • The site feels like cybersecurity/gaming/crypto instead of business communications.

Navigation Plan

Current dropdown navigation should be simplified.

Desktop Navigation

Home
Services
Industries
8x8
About
Contact
Support

Mobile Navigation

Use shadcn/ui Sheet.

Mobile nav should:

  • Open cleanly from a menu button.
  • Avoid wrapping links.
  • Show primary routes first.
  • Include service and industry routes in grouped sections if needed.

Route Plan

Replace hash routing with React Router paths.

/
/about
/services
/services/unified-communications
/services/contact-center
/services/managed-support
/services/consulting-training
/services/infrastructure-cabling
/services/wireless-access
/services/local-networking
/industries
/industries/healthcare
/industries/retail
/industries/manufacturing
/industries/education-finance
/8x8
/contact
/support

Component System

Use shadcn/ui primitives wherever available.

Required primitives:

  • Button
  • Card
  • Sheet
  • Dialog
  • Input
  • Textarea
  • Select
  • Badge
  • Accordion
  • NavigationMenu
  • Toaster / Sonner integration

This will modernize interactions and keep the UI consistent.


Content Model

Move repeated content into data files.

Suggested files:

client/src/data/services.js
client/src/data/industries.js
client/src/data/certifications.js
client/src/data/stats.js

Use these files to render:

  • Service overview cards
  • Service detail pages
  • Industry cards
  • Industry detail pages
  • Footer links
  • Navigation links
  • Trust badges

This prevents duplication and keeps future edits simple.


Scarlett Design Implementation Brief

Tailwind Theme Tokens

Using the light-first business palette defined in OVERHAUL_PLAN.md:

// tailwind.config.js theme extension
theme: {
  extend: {
    colors: {
      background: '#F8FAFC',
      'section-alt': '#EEF6FB',
      card: '#FFFFFF',
      border: '#D8E3EA',
      text: '#0F172A',
      muted: '#475569',
      'soft-text': '#64748B',
      primary: {
        navy: '#0B2A3C',
        'navy-dark': '#071A2A',
        blue: '#0EA5E9',
        cyan: '#22D3EE',
      },
      accent: {
        gold: '#F59E0B',
      },
    },
    fontFamily: {
      sans: ['Inter', 'sans-serif'],
    },
  },
}

Numeric Typography Rule

All numbers in the visual design should use Georgia. This applies to stats, counters, years, version displays, numeric badges, metrics, and prominent numeric callouts.

Implementation guidance:

  • Add a reusable Tailwind font family such as font-numeric mapped to Georgia, serif.
  • Use the numeric font only on numeric content.
  • Do not switch body text, headings, nav, or general copy to Georgia.

Typography Scale

/* Base: 16px */
.text-xs: 12px / 16px
.text-sm: 14px / 20px
.text-base: 16px / 24px
.text-lg: 18px / 28px
.text-xl: 20px / 30px
.text-2xl: 24px / 36px
.text-3xl: 30px / 44px
.text-4xl: 36px / 52px
.text-5xl: 48px / 64px

Section Spacing / Container Sizes

Breakpoint Container Max Section Vertical Spacing
Mobile 100% 64px / 80px (bottom)
Desktop 1200px 96px / 128px (bottom)

Use container mx-auto px-4 md:px-6 lg:px-8 pattern.

Radius / Shadow / Border Rules

/* Borders */
border: 1px solid border-color
rounded-lg: 8px
rounded-xl: 12px
rounded-2xl: 16px

/* Shadows */
shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05)
shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)
shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)
shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)

/* Cards */
- White background
- subtle border radius (12px)
- light shadow
- no heavy borders

shadcn/ui Components to Use

Required primitives from @/components/ui/:

  • Button — primary/secondary/callouts
  • Card — service cards, industry cards
  • Sheet — mobile navigation
  • Input, Textarea, Select — forms
  • Badge — certifications, status indicators
  • Accordion — details sections. Not for an FAQ: the owner-approved service pages keep every question and answer visible as h3 plus p, because an answer a reader has to click for is one an answer engine may not quote
  • NavigationMenu — desktop nav (optional if simple)
  • Toast / Toaster — success/error feedback
  • Dialog — optional modal content

Home Page Layout Blueprint

1. Hero (Dark Navy)

  • Full-width, dark background (bg-primary-navy)
  • Max-width container (1200px)
  • Two-column desktop: copy left, visual right
  • Mobile: stacked, copy first
  • Headline: Modern Communications Infrastructure Without the Vendor Noise
  • Subhead: UCaaS, Contact Center, Deployment, Lifecycle
  • Two CTAs: Primary (Request Consultation), Secondary (Explore Services)
  • Trust chips below: 8x8 Partner, Veteran Owned, 25+ Years, SMB to Enterprise

2. Trust Bar (Light Section)

  • Background: bg-section-alt
  • Horizontal center-aligned icons/logos
  • Mobile: stacked, centered

3. Services Grid (White Cards)

  • Background: bg-background
  • Grid: 2 cols mobile, 3 cols tablet, 4 cols desktop
  • Each card: icon, name, 1-sentence value, subtle Learn more
  • Shadow: shadow-sm

4. Why Queue North (Three Pillars)

  • Alternating light/dark sections optional
  • Card grid: Architecture | Deployment | Lifecycle Support
  • Light background with navy accent text

5. Industries Preview (Solution Pathways)

  • Background: bg-section-alt
  • Grid: Healthcare, Retail, Manufacturing, Education & Finance
  • Each card: pain point → Queue North solution
  • 2 cols mobile, 4 cols desktop

6. Final CTA (Dark Band)

  • Dark navy background
  • Centered copy: Tell us what you're trying to fix. We'll help map the path.
  • Single CTA: Request Consultation

Service / Industry Detail Layout Blueprint

Page Hero

  • Section background: bg-background
  • Left-aligned headline + short intro paragraph
  • Optional badge (Service / Industry / 8x8 Partner)

Main Content (Two-Column Desktop)

  • Desktop: Left = core explanation, Right = benefits/CTA card
  • Mobile: stacked
  • Left column: prose or clean p + ul text
  • Right column: Card with checklist, use cases, or brief differentiators

Supporting Cards Grid

  • 3 or 4 cards
  • Icons, short titles, 1-sentence descriptions
  • Grid: 1 col mobile, 2 col tablet, 3 col desktop

CTA Footer Band

  • Each major page ends with CTA
  • Dark navy section
  • Centered copy + primary button

Long-Form Service Page Blueprint (added 2026-09-10)

A second shape for a service page, used when the owner supplies approved long-form copy (src/data/serviceContent/<slug>.js). A service without that copy keeps the blueprint above, so the two live side by side. Unified Communications and Contact Center are the first two, at roughly 1,100 and 2,500 words.

Page Hero — unchanged band, carrying the approved H1 and subheading, and two buttons: the approved primary CTA, and a secondary one outlined in white. Both go to the contact form.

Lead — the approved hero copy sits directly under the hero band, at text-lg, so the buttons stay above the fold on a phone.

Sections — one <article id> per approved H2, in sheet order, rendered by src/components/content/ContentBlocks.jsx. Each opens with its direct answer paragraph, then lists, steps, a callout or a figure. The ids are the anchors a search result or an AI answer deep-links to, so they are stable, letter-first and never renumbered.

FAQ — a plain section: h3 question, p answer, always visible. No accordion, and no FAQPage markup, both on the owner's instruction. An answer behind a click is an answer that may not be quoted.

Related services — the approved anchor texts, at the end of the main column.

Sidebar — the same Quick Info card as the short layout, unchanged.

The build refuses copy that breaks any of this: see scripts/lib/content.js.

Contact / Support Form Layout

Desktop: Two-Column

  • Left: reassurance copy, phone/email if available, trust badges
  • Right: Form Card
  • Background: bg-background

Mobile: Stacked

  • Copy first
  • Form second
  • Single-column input stacking

Form Components

  • Input — name, company, email, phone, zip (if needed)
  • Textarea — message or issue description
  • Select — service interest or priority (if applicable)
  • Button — Submit with loading state
  • Toast — success/error via Sonner

Responsive / Mobile Behavior

Mobile First Rule

  • Sections stack vertically
  • Grids: 1 col → 2 col → 3+ col
  • Nav: Sheet menu slides in from right
  • Buttons full-width on mobile, constrained width on desktop
  • Images: full-width or max max-w-full, object-cover

Typography Scaling

  • Headlines shrink for mobile (e.g., text-4xl md:text-5xl)
  • Body text: text-base minimum
  • Ensure contrast ratio ≥ 4.5:1

Spacing Rhythm

  • Mobile section padding: py-16 (64px)
  • Desktop section padding: py-24 (96px)
  • Card padding: p-4 md:p-6
  • Standalone link lists: space-y-4, not space-y-2. See the tap-target rule below. This is a change from what the rest of this file describes, made 2026-09-10; it affects the footer columns, the privacy contents and the related-links lists.

Tap targets (added 2026-09-10)

A standalone text link renders 17 to 20px tall, and a finger needs about 32. .tap-target in src/index.css grows the hit box by 8px above and below and takes those 8px back out of the layout, so the line the link sits on does not move. It only works if the list leaves 16px between rows: the negative margin does not shrink the box, only its effect on layout, so at space-y-2 each link's box reached 8px into a gap its neighbour was already reaching 8px into. They overlapped, and getBoundingClientRect still read 33px: a target that measured right and was not there.

Three rules follow from that:

  • A link in a vertical list gets .tap-target, and the list gets space-y-4 or gap-y-4.
  • A link that fills a column gets block as well, so the whole row is the target rather than the width of the word. That is also what keeps it passing: a 39x36 word is judged as a compact target and wanted 44px of height, where a 200x36 row is judged as a row and wants 32.
  • A link inside a sentence gets nothing. WCAG 2.5.8 exempts it, and padding would reach into the lines above and below. LINK_CLASS in ContentBlocks is therefore padding-free by design: it is used both ways, and the callers that need a target add .tap-target beside it.

Breakpoint for the desktop header: lg, not md (changed 2026-09-10)

768 to 1023 gets the Sheet menu. The desktop row cannot fit 768: brand, six nav links and the CTA want 787px of natural width against 736px of container, so flex shrank the CTA and wrapped its label and it still overflowed. The menu is the better tablet experience regardless: 44px rows instead of 17px ones, and the Services and Industries submenus are reachable, where the desktop dropdowns open on hover and a touch device has no hover.

The wordmark holds at text-xl until xl. At exactly 1024 the desktop row had four pixels of room; at text-xl it has sixty-nine.

Asset / Image Treatment

Guidelines

  • Images: consistent aspect ratio (16:9 or 4:3 for hero)
  • Avoid inconsistent stock-photo quality
  • Use object-cover for hero banners
  • For card visuals, use consistent sizing and cropping
  • Replace generic stock with custom illustrations or refined photos

Current Assets Check

  • Review assets/ folder
  • Confirm logo PNG/SVG at 2x size for retina
  • Favicon: 32px, 48px, 180px (iPhone), 192px (Android)
  • Replace placeholder images with clean B2B visuals

Explicit Anti-Patterns to Avoid

Nav wraps on desktop (single line only) Oversized logo bleeding into content Cards with default Bootstrap-style borders Weak text contrast (dark gray on white, light gray on white) Sections feeling cramped or inconsistent spacing Mobile layout feeling like collapsed desktop (no mobile-first grid) Images inconsistent in crop, tone, or quality No clear primary CTA above the fold on home Dark navy used everywhere (feels crypto/cyber/gaming instead of business) Gradient overlays on every section Multiple competing typefaces Large font sizes without line-height spacing A partner logo scaled up inside overflow-hidden to fill its tile. The Cisco mark sat in a 700x700 canvas it filled 66% of, so object-contain rendered it small beside 8x8's; scale-[1.5] and scale-[2] made it match and cut 13px off the trademark on / and 24px on /about. Crop the asset's own viewBox to the artwork instead and let the tile's padding be the clear space, so nothing is clipped and nothing is distorted


Phase-Based Versioning

Version numbers must correlate directly to the active overhaul phase.

  • Phase 1 uses 0.1.x
    • First Phase 1 release: 0.1.0
    • Every completed agent pass/checkpoint within Phase 1: 0.1.1, 0.1.2, etc.
  • Phase 2 uses 0.2.x
    • First Phase 2 release: 0.2.0
    • Iterations/fixes within Phase 2: 0.2.1, 0.2.2, etc.
  • Phase 3 uses 0.3.x
  • Phase 4 uses 0.4.x
  • Phase 5 uses 0.5.x

Rule: the minor version maps to the phase number; the patch version maps to each completed task batch after the full pipeline finishes. Dispatch a task batch, run it through the required agents, then push that completed batch once. Example: Docker task batch goes through Neo → Private Hudson → Bishop → Ripley, then pushes as 0.2.1. Notes/tags should use the version number only, e.g. 0.2.1.


Migration Phases

Phase 1: Scaffold the Stack

Goals:

  • Create Vite React app.
  • Add Tailwind CSS.
  • Add shadcn/ui.
  • Add React Router.
  • Add Sonner.
  • Add TanStack Query.
  • Create Express server.
  • Add better-sqlite3.
  • Set up development scripts.

Result:

  • Frontend boots.
  • Backend boots.
  • API health check works.
  • Frontend can call backend.

Phase 2: Rebuild Layout

Goals:

  • Build application shell:
    • Header
    • Footer
    • Layout wrapper
    • Mobile navigation
  • Build route pages.
  • Port existing business content into React components.
  • Replace hash routing with React Router.
  • Move repeated content into data files.
  • Remove legacy styles.css file.

Result:

  • Site content exists in the new React app.
  • Routes are clean and shareable.
  • Structure is maintainable.
  • Old global stylesheet removed.

Phase 3: Visual Overhaul

Scarlett owns this phase.

Goals:

  • Define Tailwind theme tokens.
  • Apply new color system.
  • Improve typography.
  • Improve spacing scale.
  • Build responsive-first layouts.
  • Replace dated cards/sections with modern component patterns.
  • Improve logo/header placement.
  • Remove layout jank.
  • Ensure mobile experience feels intentional.

Result:

  • Website feels modern, premium, and trustworthy.
  • Visual system is reusable across pages.

Phase 4: Forms + Backend

Goals:

  • Replace inline Zoho iframe form with React form.
  • Submit contact requests to Express API.
  • Submit support requests to Express API.
  • Save submissions in SQLite.
  • Use Sonner for success/error messages.
  • Add validation.
  • Optional later: forward leads to Zoho from backend.

Result:

  • Forms are owned by the application.
  • Leads/support requests are stored locally.
  • UX is cleaner and easier to test.

Phase 5: Verification

Bishop owns verification.

Goals:

  • Confirm frontend build works.
  • Confirm backend starts.
  • Confirm all routes load.
  • Confirm mobile navigation works.
  • Confirm contact form submits.
  • Confirm support form submits.
  • Confirm SQLite writes succeed.
  • Confirm no obvious console errors.
  • Confirm basic accessibility expectations.
  • Update project documentation.

Result:

  • Rebuild is tested and documented.

Agent Plan

Recommended pipeline:

  1. Scarlett

    • Create design direction.
    • Define Tailwind theme.
    • Define layout system and component expectations.
  2. Neo

    • Scaffold Vite + React + Express + SQLite.
    • Build API/database foundation.
    • Convert static site into structured app.
  3. Scarlett

    • Polish UI implementation.
    • Enforce shadcn/ui and Tailwind standards.
    • Review responsive behavior and visual quality.
  4. Bishop

    • Verify build/runtime/routes/forms.
    • Update docs.
  5. Ripley

    • Final test.
    • Commit and push.

Recommendation

Design system first → scaffold/build → polish → verify

Success Criteria

The overhaul is successful when:

  • The site no longer looks or feels early-2000s.
  • The app runs on the requested stack.
  • Routing uses React Router, not hash switching.
  • Styling uses Tailwind, not a giant global stylesheet.
  • shadcn/ui primitives are used for common UI elements.
  • Contact/support forms submit through Express.
  • Form submissions are stored in SQLite.
  • The site is responsive and polished on mobile.
  • The content still clearly communicates Queue North's services, 8x8 partnership, and operational expertise.