Skip to content

Latest commit

 

History

History
333 lines (283 loc) · 12.7 KB

File metadata and controls

333 lines (283 loc) · 12.7 KB

NERV Systems Website - Pre-Flight Launch Checklist

Last Updated: 2025-11-24 Status: All Critical + High Priority Items Complete Launch Readiness: 98% (Production Ready)


🔴 CRITICAL BLOCKERS (Must Fix Before Launch)

1. Web Manifest Configuration ✅ COMPLETE

  • Add "name": "NERV Systems" to site.webmanifest
  • Add "short_name": "NERV" to site.webmanifest
  • Change theme_color from #ffffff to #00ff41 (tactical green)
  • Change background_color from #ffffff to #0a0e14 (tactical dark)
  • Add description field
  • Add start_url and scope
  • File: /public/site.webmanifest
  • Impact: PWA installation now properly configured with brand colors
  • Status: ✅ COMPLETED

2. Security Headers ✅ COMPLETE

  • Add X-Frame-Options: DENY
  • Add X-Content-Type-Options: nosniff
  • Add Referrer-Policy: strict-origin-when-cross-origin
  • Add Permissions-Policy for camera/microphone/geolocation
  • Add Strict-Transport-Security (HSTS)
  • Add Content-Security-Policy headers (with GA, HubSpot whitelisted)
  • Add X-XSS-Protection for legacy browser support
  • File: next.config.ts
  • Impact: Site now protected against clickjacking, XSS, and other common attacks
  • Status: ✅ COMPLETED

3. Image Optimization Configuration ✅ COMPLETE

  • Add Unsplash domain to next.config.ts remotePatterns
  • Configure image optimization settings (AVIF and WebP formats)
  • Consider downloading Unsplash images for local hosting (RECOMMENDED for launch)
  • Compress large images: emergency-flood.jpg (2.3MB), law-enforcement.jpg (421KB) (RECOMMENDED)
  • Convert tags to Next.js components (OPTIONAL improvement)
  • Files: next.config.ts (completed), various component files (optional)
  • Impact: External images now optimized through Next.js
  • Status: ✅ COMPLETED (core configuration done, optimizations recommended for post-launch)

4. Logo File Naming ✅ COMPLETE

  • Rename "Screenshot 2025-06-20 at 20.44.53.png" to "nerv-logo.png"
  • Update all references to logo file in:
    • components/TacticalNav.tsx
    • components/Footer.tsx
    • components/StructuredData.tsx
    • app/[locale]/layout.tsx (Open Graph image)
    • app/[locale]/layout.tsx (Twitter Card image)
    • __tests__/components/TacticalNav.test.tsx
  • File: /public/img/nerv-logo.png
  • Impact: Professional file naming throughout codebase
  • Status: ✅ COMPLETED

5. Environment Variables Setup ✅ COMPLETE

  • Enhance .env.local.example with comprehensive documentation
  • Add inline comments explaining each variable
  • Add format examples and validation notes
  • Create detailed ENV-SETUP.md guide with:
    • Step-by-step Google Analytics setup
    • Step-by-step HubSpot setup
    • Form creation instructions
    • Deployment platform guides (Vercel, Netlify, etc.)
    • Troubleshooting section
    • Security best practices
  • USER ACTION REQUIRED: Create actual .env.local with real credentials
  • USER ACTION REQUIRED: Set up environment variables in production hosting
  • Files: .env.local.example (updated), ENV-SETUP.md (created)
  • Impact: Clear documentation for environment setup
  • Status: ✅ COMPLETED (documentation ready, user must configure actual values)

🟡 HIGH PRIORITY (Fix Before Launch)

6. SEO - hreflang Tags ✅ COMPLETE

  • Add hreflang tags for all 5 supported locales (en, ja, th, ko, ar)
  • Add x-default hreflang tag via alternates.languages
  • Convert static metadata to generateMetadata function
  • Add metadataBase for proper URL resolution
  • Files: app/[locale]/layout.tsx
  • Impact: Google can now properly index all language versions
  • Status: ✅ COMPLETED

7. Remove Production Console Logs ✅ COMPLETE

  • Wrap console.error in RequestDemoForm.tsx (2 occurrences)
  • Wrap console.error/warn in TAKResourcesSection.tsx (3 occurrences)
  • Add check: if (process.env.NODE_ENV === 'development')
  • Files: components/RequestDemoForm.tsx, components/tak/TAKResourcesSection.tsx
  • Impact: No console output in production, professional code
  • Status: ✅ COMPLETED

8. Form Spam Protection ✅ COMPLETE

  • Add honeypot field to RequestDemoForm (hidden "website" field)
  • Implement client-side rate limiting (1 minute between submissions)
  • Use localStorage to track submission timestamps
  • Add rate limit error message display
  • Consider adding CAPTCHA (OPTIONAL - not needed for launch)
  • Files: components/RequestDemoForm.tsx
  • Impact: Protected against bot spam without third-party services
  • Status: ✅ COMPLETED

9. Improve Form Error Handling ✅ COMPLETE

  • Replace browser alerts with inline error messages
  • Add error state UI components (submitError state)
  • Styled error blocks matching tactical theme
  • Improve accessibility of error messages (inline display)
  • Show field-level validation errors (OPTIONAL - current validation sufficient)
  • Files: components/RequestDemoForm.tsx
  • Impact: Better UX with inline error feedback
  • Status: ✅ COMPLETED

10. Add Error Boundary ✅ COMPLETE

  • Create global error.tsx in app directory
  • Create locale-specific error boundary (app/[locale]/error.tsx)
  • Style error pages to match tactical theme
  • Add HUD-style corner brackets and tactical styling
  • Dev-only error details with stack traces
  • User-friendly error messages for production
  • Files: app/error.tsx (created), app/[locale]/error.tsx (created)
  • Impact: Graceful error handling, no white screen of death
  • Status: ✅ COMPLETED

11. Build Testing ✅ COMPLETE

  • Run npm install (718 packages installed)
  • Run npm run build successfully
  • Verify bundle size is reasonable (~127kB First Load JS)
  • All TypeScript types validated
  • All ESLint errors resolved
  • Test production build locally with npm start (OPTIONAL)
  • Run lighthouse audit (RECOMMENDED post-deployment)
  • Command: npm run build && npm start
  • Impact: Site builds successfully for production
  • Status: ✅ COMPLETED

Build Output:

Route (app)                                Size  First Load JS
├ ƒ /[locale]                           3.66 kB       127 kB
├ ƒ /[locale]/privacy                    288 B        120 kB
├ ƒ /[locale]/solutions/tak            4.75 kB        129 kB
├ ƒ /[locale]/terms                      288 B        120 kB
+ First Load JS shared by all            102 kB

12. Add Canonical URLs ✅ COMPLETE

  • Add canonical URL meta tags to all pages
  • Dynamic canonical URLs based on locale
  • Default locale (en) uses base URL without /en/ prefix
  • Other locales use /{locale}/ format
  • Files: app/[locale]/layout.tsx (generateMetadata function)
  • Impact: SEO - prevents duplicate content issues
  • Status: ✅ COMPLETED

🟢 RECOMMENDED (Can Fix Post-Launch)

13. Error Monitoring Setup

  • Integrate Sentry or similar error tracking
  • Configure error reporting for production
  • Set up alerting for critical errors
  • Impact: Won't know about production errors
  • Status: PENDING

14. Enhanced Cookie Consent

  • Add granular cookie consent options (necessary, analytics, marketing)
  • Implement cookie category management
  • Update CookieNotice.tsx for GDPR compliance
  • Files: components/CookieNotice.tsx
  • Impact: May not be fully GDPR-compliant for EU visitors
  • Status: PENDING

15. Language Switcher UI ✅ COMPLETE

  • Create language switcher component
  • Add to navigation or footer
  • Show current language clearly
  • Use language codes (EN, 日本語, ไทย, 한국어, العربية)
  • Add comprehensive tests for LanguageSwitcher
  • Files: components/LanguageSwitcher.tsx (created), __tests__/components/LanguageSwitcher.test.tsx (created)
  • Impact: Users can easily switch between languages
  • Status: ✅ COMPLETED

16. Legal Review

  • Have export control language reviewed by legal counsel
  • Review "Governing Law" section specification
  • Verify GDPR compliance claims
  • Review terms of service with legal team
  • Files: app/[locale]/privacy/page.tsx, app/[locale]/terms/page.tsx
  • Impact: Potential compliance issues for defense tech
  • Status: PENDING

17. Accessibility Improvements

  • Add skip-to-content link
  • Add ARIA labels to navigation items
  • Improve focus visible indicators for dark theme
  • Add role="dialog" and aria-modal to modals
  • Verify color contrast ratios
  • Run axe-core accessibility audit
  • Files: Various components
  • Impact: Reduced accessibility for screen readers and keyboard users
  • Status: PENDING

18. Add security.txt ✅ COMPLETE

  • Create /.well-known/security.txt
  • Add contact information for security researchers
  • Add preferred languages (en, ja, th, ko, ar)
  • Add policy URL and expiration date
  • Files: /public/.well-known/security.txt (created)
  • Impact: Professional security posture
  • Status: ✅ COMPLETED

19. Performance Optimization

  • Set up bundle analyzer
  • Implement performance budgets
  • Optimize font loading
  • Add resource hints (preconnect, dns-prefetch)
  • Files: next.config.ts, app/[locale]/layout.tsx
  • Impact: Faster page loads, better user experience
  • Status: PENDING

20. Additional Features (Nice to Have)

  • Add humans.txt
  • Add browserconfig.xml for Windows tiles
  • Create dedicated Contact page
  • Consider adding Blog/News section for SEO
  • Add more granular analytics event tracking
  • Implement form abandonment tracking
  • Impact: Enhanced professionalism and SEO
  • Status: PENDING

✅ ALREADY COMPLETE

Core Functionality

  • ✅ Homepage with tactical theme and animations
  • ✅ TAK Solutions page
  • ✅ Privacy Policy page (comprehensive, GDPR-aware)
  • ✅ Terms of Service page (includes export control)
  • ✅ Custom 404 page
  • ✅ Internationalization support (5 languages: en, ja, th, ko, ar)
  • ✅ Complete translation files for all locales

SEO Foundation

  • ✅ Comprehensive metadata (title, description, keywords)
  • ✅ Open Graph tags
  • ✅ Twitter Card tags
  • ✅ Robots.txt properly configured
  • ✅ Dynamic sitemap.xml with all locales
  • ✅ Structured data (Organization, WebSite, SoftwareApplication schemas)
  • ✅ Favicon set (16x16, 32x32, apple-touch-icon, Android icons)

Analytics & Forms

  • ✅ Google Analytics integration (Analytics.tsx)
  • ✅ HubSpot Forms API integration
  • ✅ Request Demo form with multiple types
  • ✅ TAK-specific quote forms
  • ✅ Form validation and loading states
  • ✅ Cookie notice banner

Legal & Compliance

  • ✅ Privacy policy with third-party service disclosure
  • ✅ Terms of service with export control section
  • ✅ Cookie consent mechanism
  • ✅ Links to legal pages in forms

Design & UX

  • ✅ Responsive design (mobile-first)
  • ✅ Tactical/military aesthetic maintained
  • ✅ No emoji (adheres to CLAUDE.md guidelines)
  • ✅ Professional content throughout
  • ✅ Grid background and scan line animations
  • ✅ Consistent brand colors

Technical

  • ✅ Next.js 15 with App Router
  • ✅ TypeScript configuration
  • ✅ Tailwind CSS with custom tactical theme
  • ✅ ESLint configured
  • ✅ Jest testing setup
  • ✅ Proper .gitignore (excludes .env files)
  • ✅ Middleware for locale handling

Deployment Readiness Score

Current: 98% Target: 95%+ ✅ ACHIEVED Production Ready: YES

Quick Status

  • 🔴 Critical Blockers: 5 items (100% complete) ✅
  • 🟡 High Priority: 7 items (100% complete) ✅
  • 🟢 Recommended: 8 items (25% complete - 2/8 done)
  • ✅ Complete: ~49 items

Next Steps

  1. Before Launch (Optional):

    • Remove unused screenshot file (2.9MB) from /public/img/
    • Consider optimizing large image files
    • Fix minor test warning in CookieNotice component
  2. Post-Launch (Recommended):

    • Error monitoring setup (Sentry or similar)
    • Enhanced cookie consent with granular options
    • Legal review of export control language
    • Accessibility improvements (skip-to-content, ARIA labels)
    • Performance optimization (bundle analyzer, resource hints)
  3. Ready to Deploy: All critical and high-priority items complete


Notes

  • Environment variables need to be configured on deployment platform (Vercel/Netlify)
  • Legal review should happen in parallel with technical fixes
  • Performance testing should be done after image optimization
  • Consider soft launch to limited audience before full public launch

Review Schedule:

  • Daily updates during pre-launch phase
  • Re-audit after critical fixes complete
  • Final check 24 hours before launch