Queue-North-Website/HISTORY.md

16 KiB

Completed

  • Footer cleanup: email (info@queuenorth.com), phone ((906) 482-6616), and CTA (Request Consultation) all present
  • Contact page hero: prominent phone/email display + CTA button
  • Home page CTA links added to Trust Signals, Services, Why Queue North sections
  • Minor updates to Support page

Files Modified

  • src/components/layout/Footer.jsx — Footer cleanup
  • src/pages/Home.jsx — CTA links in sections
  • src/pages/Contact.jsx — Hero CTA
  • src/pages/Support.jsx — Minor updates
  • package.json — Version bumped to 0.5.3

Verified

  • npm run build passes
  • Docker image builds and container starts on port 3001
  • Footer renders with email, phone, and CTA
  • Contact page hero displays phone/email and Request Consultation button

v0.5.2 — Phase 5 Batch 5: Why Queue North Section Refinement — 2026-05-17

Completed

  • Replaced generic "Architecture/Deployment/Lifecycle" pillars with 4 concrete differentiators
  • Added lucide-react icons: Headphones, UserCheck, Activity, ShieldCheck
  • Changed grid from 3-col to 4-col responsive layout (1 col mobile, 2 col tablet, 4 col desktop)
  • Removed unused CardDescription import
  • Updated Why Queue North section subtitle to "Four concrete differentiators that set us apart"
  • Clean card layout with centered icon containers and consistent styling

Files Modified

  • src/pages/Home.jsx — Why Queue North section complete redesign
  • package.json — Version bumped to 0.5.2

Verified

  • npm run build passes
  • Docker image builds and container starts
  • Home page loads on http://localhost:3001
  • Responsive layout verified (1/2/4 columns as specified)

v0.5.1 — Phase 5 Batch 1: Hamburger Menu Fix + DialogTitle A11y — 2026-05-13

Verified Complete

  • Fixed SheetContent missing positional CSS classes (panel was zero-size)
  • Installed and configured tailwindcss-animate
  • Added visually hidden SheetTitle for accessibility (Radix DialogTitle requirement)
  • Forgejo issues #22, #23 closed

v0.5.4 — Phase 5 Batch 4: Services Rewrite — Business Outcomes — 2026-05-17

Completed

  • Section title changed: "Our Services" → "What We Handle"
  • Subtitle changed to outcome-focused: "From phones to firewalls, we keep your business running"
  • Added homeDesc field to all 7 services in src/data/services.js with business-outcome language
  • Service cards now show: icon + name + homeDesc (outcome) + shortDesc (supporting) + CTA
  • lucide-react icons per service: MessageCircle, Users, LifeBuoy, GraduationCap, LinkIcon, Wifi, Network
  • B2B professional card layout with icon containers (primary-navy/10 bg)
  • Service detail pages (ServiceDetail.jsx) unchanged

Files Modified

  • src/pages/Home.jsx — Services section rewrite
  • src/data/services.js — Added homeDesc field to each service
  • FUTURE.md — Marked batch 0.5.4 complete

v0.5.3 — Phase 5 Batch 3: Trust Signals Section — 2026-05-17

Completed

  • Added dedicated Trust Signals section immediately after hero section
  • 8x8 Certified Partner badge: prominent white card with logo, certification number, and descriptive text
  • Veteran Owned badge: VCERT verified with certification #, values-based messaging
  • "25+ Years Experience": metric card with 25+ using Georgia font (font-numeric class)
  • Metrics grid: 4 key stats displayed (99.99% uptime, <15m response, 24/7 support, 100% satisfaction)
  • Clean card layout: white cards on section-alt background with hover effects
  • Mobile-first: three-column grid on desktop, stacked on mobile
  • Business outcomes focus: reliability, experience, support承诺, not technical jargon

Files Modified

  • src/pages/Home.jsx — Added Trust Signals section after hero
  • FUTURE.md — Marked batch 0.5.3 complete

Notes for Next Agent

  • The trust signals are now front and center after the hero, before services
  • Georgia font (font-numeric) consistently used for all metrics
  • All metrics use realistic placeholder values that can be replaced with real stats when available
  • The white card design provides contrast against the section-alt background

v0.5.2 — Phase 5 Batch 2: Hero Section Rewrite — 2026-05-17

Completed

  • Hero headline replaced: "Modern Communications Infrastructure Without the Vendor Noise" → "Reliable Business Communications — Without the Runaround"
  • Subtext updated to emphasize trust, reliability, and business outcomes
  • 8x8 Certified Partner badge made prominent (featured card with logo, not small pill)
  • Trust signals immediately visible on mobile without scrolling
  • CTAs updated: "Schedule Consultation" (primary, /contact), "View Services" (secondary, /services)
  • Color palette evolved: navy base with teal-900 gradient accent
  • Mobile-first design verified — trust signals visible above fold on phone viewports

Files Modified

  • src/pages/Home.jsx — Hero section rewrite
  • .learnings/scarlett/LEARNINGS.md — Added hero rewrite entry
  • FUTURE.md — Marked batch 0.5.2 complete

Notes for Next Agent

  • The 8x8 badge is now prominently featured — keep this prominence in future sections
  • Georgia font (font-numeric) used for "25+ Years Experience" — consistent with design rule
  • Consider similar trust signal presentation in the Trust Bar section

v0.4.8 — Phase 4 Batch 8: Error Handling Hardening + Dep Audit — 2026-05-13

Verified Complete

  • Global error handlers: uncaughtException + unhandledRejection → log + exit(1)
  • 404 catch-all for /api/* routes returns { error: 'Not found' }
  • Health check enhanced: DB connectivity check, returns { status: 'ok', db: 'ok' } or 503
  • Request timeout: 30-second middleware, 504 response
  • Consistent error format: 400/404/429/500/503/504 all follow { error, fields? } pattern
  • npm audit: 0 vulnerabilities
  • npm outdated: major updates noted (Express 5, Vite 8, etc.) but not upgraded

v0.4.7 — Phase 4 Batch 7: Rate Limiting + Security Headers + CORS — 2026-05-13

Verified Complete

  • express-rate-limit: 5 req/min per IP on /api/leads and /api/support, configurable via RATE_LIMIT_PER_MINUTE
  • helmet: CSP (scripts 'self', styles 'self' inline, fonts 'self' + Google Fonts), HSTS, X-Content-Type-Options, X-Frame-Options DENY
  • cors: configurable via CORS_ORIGIN env var, credentials enabled, API routes only
  • Trust proxy enabled for correct client IP behind Docker/reverse proxy
  • Rate limit returns 429 with JSON error + retryAfter
  • All security headers confirmed via curl
  • Docker config updated: all new env vars in Dockerfile and docker-compose.yml

v0.4.6 — Phase 4 Batch 6: Zoho Forwarding Layer — 2026-05-13

Verified Complete

  • Zoho CRM forwarding via REST API v8 (POST /crm/v8/Leads)
  • OAuth2 token management: refresh token → access token, in-memory cache with auto-refresh
  • Fire-and-forget: Zoho forwarding is async, never blocks form response
  • Configurable via 6 env vars: ZOHO_ENABLED, ZOHO_API_DOMAIN, ZOHO_CLIENT_ID, ZOHO_CLIENT_SECRET, ZOHO_REFRESH_TOKEN, ZOHO_REDIRECT_URI
  • Best-effort design: Zoho failures logged but never propagate to client
  • ZOHO_ENABLED=false: no Zoho activity, form submits normally
  • ZOHO_ENABLED=true with invalid creds: form still succeeds, Zoho errors logged to console

v0.4.5 — Phase 4 Batch 5: Server-Side Validation + Input Sanitization — 2026-05-13

Verified Complete

  • Zod schemas updated with .trim() and .max() on all fields
  • Input sanitization: strip HTML/script tags, truncate to max lengths
  • Request body size limit: 1MB (returns 413)
  • Validation errors formatted as { error, fields } — no stack traces
  • All curl tests pass: valid data, empty fields, invalid email, XSS, max length, short issue
  • XSS test confirmed: <script> and <b> tags stripped from stored data

v0.4.4 — Phase 4 Batch 4: Client-Side Validation + Sonner Feedback — 2026-05-13

Verified Complete

  • Contact form: required field validation (company, name, email, message)
  • Support form: required field validation (name, company, email, issue)
  • Email format validation with regex on both forms
  • Issue minimum length validation (10 chars) on Support form
  • Inline error messages below each invalid field (red text, small)
  • Sonner toast for validation errors on submit attempt
  • Error clearing as user corrects fields (onChange)
  • Red ring/border on Input/Textarea when field has validation error
  • Form inputs disabled during submission (mutation.isPending)
  • Form opacity reduced to 70% during submission
  • Build passes clean

v0.4.1 — Phase 4 Batch 1: Contact Form Wired to Express — 2026-05-12

Verified Complete

  • Contact form submits all fields to /api/leads via TanStack Query mutation
  • Success/error response handling with Sonner toasts
  • Confirmation shown on success, form resets
  • Error state shown on failure
  • Backend Zod validation + SQLite storage working
  • Already implemented in Phase 1/2, verified end-to-end

v0.2.13-fix — Phase 2 Fix: Legacy CSS Consolidation — 2026-05-13

Fixed

  • Removed duplicate src/index.css (was not imported anywhere)
  • Created clean src/index.css as single Tailwind entry point
  • Moved maxWidth.container: 1280px into tailwind.config.js theme extensions
  • Updated src/App.jsx import from ./App.css to ./index.css
  • Deleted redundant src/App.css
  • All bg-section-alt usages verified still working

Verified

  • npm run build passes
  • All 14 Phase 2 batches now fully verified

v0.4.3 — Phase 4 Batch 3: SQLite Persistence Verification — 2026-05-13

Verified Complete

  • Database file (db/queuenorth.db) created on first run if missing
  • leads and support_requests tables have correct schema (all columns match server/index.js)
  • Data persists across server restarts
  • Docker volume test: stop container, restart, confirm data present
  • Health check endpoint responds correctly
  • docker-test.sh persistence suite passes all checks

v0.4.2 — Phase 4 Batch 2: Support Form Wired to Express — 2026-05-12

Verified Complete

  • Support form submits all fields to /api/support via TanStack Query mutation
  • Success/error response handling with Sonner toasts
  • Confirmation shown on success, form resets
  • Error state shown on failure
  • Backend Zod validation + SQLite storage working
  • Already implemented in Phase 1/2, verified end-to-end

v0.2.2 — Docker Image Size Fix — 2026-05-12

Fixed

  • Removed duplicate node_modules copy in Dockerfile runner stage (was copying full dev+prod modules as a permanent layer)
  • Reduced image size from 331MB to 215MB (35% reduction)
  • npm ci --omit=dev now runs cleanly without pre-existing dev modules

Verified

  • Docker build succeeds
  • Container starts and health check passes
  • Frontend serves correctly

Queue-North-Website — Changelog

v0.3.4 — Phase 3 Visual Overhaul Complete — 2026-05-12

Completed Batches

  • Batch 1 (v0.3.1): Tailwind theme tokens, spacing scale, container width, Inter font
  • Batch 2 (v0.3.2): Home page redesign — hero, trust bar, services grid, why QN pillars, industries preview, final CTA
  • Batch 3 (v0.3.3): Header/footer/mobilenav polish, navy-light color token, fixed Button.jsx TS generics build bug
  • Batch 4 (v0.3.4): Inner pages layout system — consistent hero/card/CTA pattern across About, Services, ServiceDetail, Industries, IndustryDetail, 8x8
  • Batch 5: Contact/Support forms verified compliant, no changes needed

Verified

  • All batches build successfully
  • Contact and Support pages already compliant with OVERHAUL_PLAN.md
  • No asChild usage on Button (unsupported, replaced with styled anchors)

v0.3.2 — Phase 3 Batch 2: Home Page Redesign — 2026-05-12

Changed

  • Updated Home.jsx to import industries data from data file
  • Replaced hardcoded industry data with dynamic rendering from industries.js
  • Updated Services and Industries cards to use Button component for "Learn more" links
  • Added MapPin icon from lucide-react for industry cards
  • Added useNavigate hook for programmatic navigation
  • Ensured consistent use of shadcn/ui Button component across the home page
  • Updated version to 0.3.2 for Phase 3 Batch 2

Verified

  • npm run build passes
  • All routes respond correctly
  • Button components render with correct styling
  • Responsive layout works on mobile and desktop

v0.3.1 — Phase 3 Batch 1: Theme + Tailwind Config + Typography — 2026-05-12

Changed

  • Enhanced Tailwind spacing scale with utility values (24-48rem)
  • Updated container max-width to 1280px per design spec
  • Confirmed color palette, Inter font, Georgia numeric font already in place

v0.1.1 — Phase 1 Agent-Pass Checkpoint — 2026-05-12

Changed

  • Corrected Phase 1 version to reflect completed agent-pass checkpoint semantics.
  • Documented that every completed agent pass/checkpoint within a phase increments the patch version.
  • Confirmed Phase 1 verified output is pushed to dev at 0.1.1.

Verified

  • npm run build passes.
  • Backend health endpoint responds successfully at /api/health.

v0.2.1 — Dockerization — 2026-05-12

Added

  • Docker build for production deployment
  • docker-compose.yml for local development with SQLite persistence
  • npm scripts: docker:build, docker:run, docker:compose:up/down/logs
  • Health check in Dockerfile and docker-compose
  • Non-root nodejs user for security
  • Layer caching optimization (copy package.json first, install, then copy source)
  • .dockerignore to exclude node_modules, dist, db, logs, git, private docs

Changed

  • Updated package.json to 0.2.1 for Docker batch

Verified

  • Docker build succeeds with npm run docker:build
  • Container starts and health check passes
  • SQLite database persists in ./db volume

v0.2.0 — Phase 2 Layout Complete — 2026-05-12

Added

  • All route pages implemented (Home, About, Services, ServiceDetail, Industries, IndustryDetail, 8x8, Contact, Support).
  • Data files for services and industries moved to /src/data/.
  • Layout components (Header, Footer, MobileNav) built and integrated.
  • Legacy styles.css removed (replaced by Tailwind configuration).
  • Contact and support forms wired to Express backend via TanStack Query.
  • All pages render meaningful content matching original business information.
  • Version bumped to 0.2.0 for Phase 2 baseline.

Changed

  • Replaced hash-based routing with React Router 7.
  • Standardized layout patterns across all pages (page hero, main content, sidebar, CTA band).
  • Updated package.json, PROJECT.md, OVERHAUL_PLAN.md, HISTORY.md to reflect Phase 2 status.
  • Overhaul plan updated to note Phase 2 scope and goals.

Verified

  • npm run build passes.
  • All routes respond correctly.
  • Contact form submits via /api/leads.
  • Support form submits via /api/support.
  • No references to legacy styles.css remain in source code.

v0.1.0 — Phase 1 Foundation — 2026-05-12

Added

  • Rebuilt project foundation on Vite + React SPA with React Router.
  • Added Tailwind CSS with Queue North light-first business palette.
  • Added shadcn/ui-style local primitives for buttons, cards, inputs, textarea, select, badge, sheet, and dialog usage.
  • Added Sonner toast support and TanStack Query provider/API helper.
  • Added Express backend with /api/health, /api/leads, and /api/support.
  • Added better-sqlite3 storage for leads and support_requests.
  • Added all planned frontend routes for home, about, services, service details, industries, industry details, 8x8, contact, and support.
  • Added Phase 1 documentation, build summary, script reference, and phase-based versioning rules.

Changed

  • Replaced the static HTML/CSS/JS entry with the Vite React entry.
  • Updated README to point to OVERHAUL_PLAN.md as the design source of truth.
  • Standardized versioning so Phase 1 uses 0.1.x, Phase 2 uses 0.2.x, and later phases follow the same pattern.
  • Added Bishop verification rules and the requirement that Ripley pushes to dev after each verified phase.

Verified

  • npm run build passes.
  • Backend health endpoint responds successfully at /api/health.
  • Required routes are configured.
  • Contact and support API paths exist and write through SQLite.

v0.0.1 — Project Initialization — 2026-05-11

Added

  • Project initialized with PROJECT.md, STRUCTURE.md, FUTURE.md, HISTORY.md, DEVELOPMENT_LOG.md.