Commit Graph

82 Commits

Author SHA1 Message Date
null ac6f5d1f78 feat(seo): publish privacy policy, remove street address, prerender all routes (batch 0.9.3)
Client directive (Levi Halford, 2026-08-01) ahead of Google/Meta lead forms.

Privacy policy:
- Publish approved policy verbatim at /privacy-policy (src/data/privacyPolicy.js
  is the single source of truth; 292/292 source lines verified present)
- Privacy Policy link in the footer of every page
- Effective/Last Updated 2026-07-31, privacy@queuenorth.com as mailto

Remove St. Petersburg street address from every surface named in the brief:
footer, contact page, schema markup, SEO metadata, Google Maps links. Collapse
ProfessionalService + Organization schema into a single Organization with
areaServed: United States; drop geo coordinates, priceRange, openingHours.
Add the approved US-coverage sentence to About. No replacement address.

Crawler visibility (the site previously served 0 bytes of body HTML without JS):
- Prerender all 19 routes at build time via src/entry-server.jsx + scripts/prerender.js
- Hoist title/meta/canonical/JSON-LD into <head>; renderToString does not do this
  and react-helmet-async's context is empty under React 19
- Serve prerendered HTML; return a real 404 for unknown paths instead of 200
- Hydrate instead of discarding the prerendered markup

SEO/perf:
- Titles <=60 and descriptions <=160 chars across all pages
- Add BreadcrumbList to interior pages, WebSite to home
- Generate sitemap.xml from the route list with git-derived lastmod
- 301 duplicate URL forms (trailing slash, //, /index.html), preserving query
- Immutable caching for content-hashed assets; no-cache for HTML
- Split the 522 KB bundle into app/react-vendor/router/icons
- loading/decoding/fetchpriority + per-route hero preload; drop unused asset

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 01:45:52 -05:00
null 196389ddf3 fix(brand): update veteran-owned badge to certified mark logo (batch 0.9.2) 2026-06-14 16:17:42 -05:00
null d074e597b2 feat(zoho): WebToLead forwarding mode, veteran-owned certified badge, Docker/env/CI updates (batch 0.9.1) 2026-06-14 16:08:29 -05:00
null 05b27d216a feat: Dockerfile/docker-compose updates, server improvements, contact form with recaptcha, API integration (batch 0.9.0) 2026-06-14 15:37:26 -05:00
null a8d9492a80 added 404 2026-05-28 00:41:24 -05:00
null 0f272fcf19 error and injection 2026-05-28 00:18:08 -05:00
null e625a24b6e redirect to contact form 2026-05-27 22:33:54 -05:00
null 8c1e0f4c3d ui 2026-05-27 21:35:12 -05:00
null fb12d8cf3c 1 2026-05-27 21:23:17 -05:00
null a3ba03b7e1 cisco about 2026-05-27 21:15:54 -05:00
null 033bdf6625 Form now POSTs to Zoho 2026-05-27 20:57:55 -05:00
null 548e20e6f0 . 2026-05-27 14:43:50 -05:00
null 8f20670292 breadcrumbs 2026-05-27 14:27:30 -05:00
null 6bab4b5c89 corrections 2026-05-27 14:10:28 -05:00
null f9b36c198b badges size 2026-05-27 13:58:31 -05:00
null 4b17e9f109 badges 2026-05-27 13:28:13 -05:00
null 6de9490764 badge center 2026-05-27 12:51:08 -05:00
null a81e97fb31 mobile view 2026-05-27 12:42:25 -05:00
null 362a7e0059 heatmap 2026-05-26 17:08:55 -05:00
null 510edace07 removed duplicate card 2026-05-26 13:41:46 -05:00
null 8731903463 updated badges homepage 2026-05-26 13:36:16 -05:00
null a2a32687ff branding 2026-05-26 13:29:37 -05:00
null 335601b00e remove submit ticket 2026-05-26 12:55:23 -05:00
null bfcf7f114c #176 2026-05-26 12:31:26 -05:00
null f2a5e2c1bc Hero name widen 2026-05-26 12:26:13 -05:00
null d626c34ba2 parternership branding 2026-05-26 12:22:11 -05:00
null fd1e2b6f50 update 2026-05-25 20:26:50 -05:00
null afec6547c1 RECAPTCHA 2026-05-25 20:20:15 -05:00
null 7f48847049 CTA 2026-05-25 20:08:04 -05:00
null 07a43b9b7c visual update services 2026-05-25 20:03:56 -05:00
null fca9336656 close 184 2026-05-25 19:54:39 -05:00
null c17ac83b52 services 2026-05-25 18:33:19 -05:00
null 09926fed6d Contact.jsx (line 23): added ZIP to validation/error state, rendered it as required, and shows ZIP code is required.
server/index.js (line 253): backend Zod schema now rejects missing or blank ZIP.
api.js (line 3): preserves backend field errors for display.
2026-05-25 18:17:16 -05:00
null 529cce7ec0 branding 2026-05-25 18:11:51 -05:00
null 5f5c085fbe contact update 2026-05-25 17:56:32 -05:00
null 046d5b1d4a fix: ui industries 2026-05-18 14:25:45 -05:00
null a79f42123a fix: seo fb 2026-05-18 14:02:12 -05:00
null f378233328 fix: seo 2026-05-18 13:55:06 -05:00
null a8765990ef mobile ui fixes 2026-05-18 13:45:39 -05:00
null de61d5e625 fix(ui): UI fixes across header, contact, home, about, support, services, industries (#132 #133 #134 #154 #165 #172 #173) 2026-05-18 13:12:18 -05:00
null 928527b908 fix: remove all email addresses from site, redesign contact page, update footer, about, header, support (#165 #172 #134 #173) 2026-05-18 12:11:56 -05:00
null 990139b77f fix(ui): remove duplicate trust section (#173), enlarge logo and add home link (#154) 2026-05-18 09:44:44 -05:00
null d8a975431f fix(ui): dropdown hover gap fix (#132) and remove contact form button (#133) 2026-05-18 09:35:29 -05:00
null aec33165b9 chore: bump version to 0.7.1, fix Home.jsx aria-label text fragment (batch 10.3) 2026-05-17 22:48:57 -05:00
null e1604ee28f fix: add aria-labels for accessibility, fix JSX template literal syntax (#101) (batch 10.2) 2026-05-17 22:47:03 -05:00
null 9c1b6e4753 fix: optimize images to WebP (95% reduction), add form loading spinners (#97 #130) (batch 10.1) 2026-05-17 22:35:55 -05:00
null 2c002c2f82 fix: remove React Query, add HTTPS redirect, document CSP Zoho note (#128 #127 #129) (batch 10.0) 2026-05-17 22:33:11 -05:00
null 829362fb79 fix: Cisco/Veteran icons, sidebar slug, JointLogo placeholder, Footer copy (#98 #100 #103 #107) (batch 9.8) 2026-05-17 22:05:08 -05:00
null 6e975b869b fix: favicon/manifest, og:image PNG, logo optimized to 44KB PNG (#99 #117 #118) (batch 9.7) 2026-05-17 22:01:27 -05:00
null 53e2873fd4 fix: honeypot spam protection, 409 conflict handling (#119 #126) (batch 9.5) 2026-05-17 21:51:53 -05:00