The container can still be booting when Nginx starts proxying, causing a
temporary 502 in the post-deploy verification. Poll localhost:3000 for up
to 60s after recreating the container.
Bash treated the full-width comma after $COMPOSE_FILE as part of the
variable name under UTF-8 locale, causing an unbound variable error at
the Next.js container rebuild step.
Hybrid rendering requires the Next.js runtime to use the same build as
the client assets served by Nginx. After uploading dist, sync public/
to the server project and rebuild/restart the novalon-website container
so server action IDs and /_next/static references stay consistent.
Next.js standalone output places client chunks under dist/static, but the
generated HTML references /_next/static/... which Nginx serves from
dist/_next/static. Mirror static -> _next/static during build so CSS/JS
load with correct MIME types instead of 404.
Next.js standalone output does not place public/ files at the dist root,
so rsync --delete was removing logo/favicon/fonts/images from production.
Copy public/ into dist after build so Nginx can serve them.
- Remove TestimonialSection from homepage (no customers yet)
- Footer: dark theme, NAVIGATION_V2 + MEGA_DROPDOWN_DATA links
- Mobile Menu: NAVIGATION_V2 with collapsible dropdown support
- Add automatic route change tracking for SPA navigation
- Implement Cookie consent banner for GDPR compliance
- Add performance tracking (LCP, FID, CLS Web Vitals)
- Add outbound link click tracking
- Integrate contact form submission tracking with conversion events
- Add CTA button click tracking in hero section
- Integrate error tracking in ErrorBoundary component
- Extend analytics utility library with 15+ tracking functions
- Configure IP anonymization and privacy settings
- Remove unused test files and deployment scripts
- Update case studies to include only specified cases
- Fix mobile navigation active state issues
- Fix lint errors in test files and components
BREAKING CHANGE: Google Analytics now requires user consent before tracking
- Move CI/CD configs to config/ci/ directory
- Reorganize scripts into categorized directories (deployment, monitoring, testing, utils)
- Consolidate documentation into docs/ directory with proper structure
- Update linting and testing configurations
- Remove obsolete test reports and performance summaries
- Add new documentation for code quality tools and contact form security
- Improve project organization and maintainability
- Fix lint-staged config to only lint JS/TS files
- Disable react/react-in-jsx-scope rule for Next.js compatibility
- Ignore scripts and test config directories in ESLint
- Create public config API for frontend consumption
- Add configuration fetching to homepage
- Implement module show/hide logic based on config
- Add support for Services items filtering
- Add support for Products featured products and pricing display
- Add support for News display count, categories, and sort order
- Fix table name from 'configs' to 'siteConfig' in API route
- Update type definitions for proper TypeScript support
- Disable all experimental features to fix React 19 and Next.js 16 compatibility
- Fix TypeScript error in check-permission.ts (role property issue)
- Add test script for Contact page validation
- Use production mode to avoid HMR issues completely
- Added scripts/check-color-contrast.ts to validate WCAG AA compliance
- Added npm script 'check:contrast' for easy execution
- Validates 7 critical color pairs
- All color combinations now pass WCAG AA 4.5:1 standard
- Fixed all form tests (20/20 passing)
- Fixed all performance tests (35/35 passing)
- Fixed all SEO and accessibility tests (30/30 passing)
- Enhanced test framework with custom reporting
- Added performance baseline tracking
- Improved test reliability and error handling