Root causes fixed:
1. Dockerfile: Use astro preview (not serve package)
2. Astro auto-copies public/ to dist/ during build
3. CSS: Proper Tailwind v4 syntax with @theme
4. Images: Copied all from spec_images/ and table_images/
5. Header/Footer: Added to homepage
Working features:
- 15 pages build successfully
- All images load
- CSS with industrial theme colors
- Header and Footer on homepage
- Fixed header (no overlap)
Restored to match commit 668f690 quality.
1. Header overlap fixed:
- Added pt-32 (padding-top: 8rem) to main
- Compensates for fixed header height
2. Images not showing ROOT CAUSE FIXED:
- Public folder NOT auto-copied to dist by Astro
- Added: RUN cp -r /app/public/* /app/dist/
- Now images will be in dist/images/ after build
- Serve can find them at /images/...
This is the actual fix - Astro doesn't copy public to dist!
- Added Header and Footer to privacy-policy, terms pages
- Fixed image references in product markdowns
- Using existing images (hdpe_pipe_main.jpg, etc.)
- All pages now have proper navigation and layout
- Import Header and Footer components
- Add to BaseLayout slots
- Update hero image to use existing hdpe_pipe_main.jpg
- Fix featured products grid
Now pages will have header and footer!
- Uses @theme for custom colors (Tailwind v4)
- Plain CSS for components (no @layer/@apply)
- CSS variables from @theme
- All old classes preserved (.btn-primary, .card, etc.)
- Fully compatible with Tailwind v4
- Copied images from spec_images/ and table_images/
- Now in public/images/2021/03/ (matching old paths)
- Images will be served correctly on Easypanel
- Set build.inlineStylesheets to 'always'
- CSS embedded in HTML instead of external files
- More reliable for static hosting
- Fixes styling not loading issue
- Changed 'npm ci --production' to 'npm install --production'
- More forgiving with cached package files in CI/CD
- Matches working pattern from other deployments
- Fixes Easypanel build cache issues
- Added 'serve' package for static file hosting
- Updated Dockerfile to use 'serve' instead of astro preview
- serve has no host restrictions
- Fixes Easypanel access issue
- Builds dealplustech-astro subdirectory
- Creates data directory for SQLite database
- Exposes port 4321
- Health checks configured
Use this Dockerfile in Easypanel for Astro deployment.
- Fixed BaseLayout import paths in PDPA pages
- Removed duplicate code from product template
- Fixed admin dashboard to work without database at build time
- Created data directory for SQLite database
- Tested Docker build successfully
- Verified all pages: homepage, products, privacy policy, terms, admin
All 15 pages build successfully and Docker deployment works.
- Sharp required for Next.js image optimization in production
- Fixes: sharp is required to be installed in standalone mode
- Added as production dependency (--save)
- Added favicon.ico and favicon.svg from dealplustech.co.th
- Added typography guidance comment in globals.css
- NO automatic font size changes
- Use .text-base (16px) minimum for readable text
- .text-xs: 1rem (16px) instead of 0.75rem (12px)
- .text-sm: 1rem (16px) instead of 0.875rem (14px)
- Large screens (1280px+): 1.125rem (18px)
- Extra large (1536px+): 1.25rem (20px)
Ensures minimum readable text size on all screens.
- Base font: unchanged (16px default)
- Large screens (1280px+): 17px base (+1px only)
- Extra large (1536px+): 18px base (+2px only)
- .text-small: text-sm md:text-base (increased on medium+ screens)
Only smallest text increased, not all text sizes.
- Base font: 18px (was 16px)
- Large screens (1280px+): 20px
- Extra large (1536px+): 22px
- Ultra large (1920px+): 24px
- Buttons: text-lg md:text-xl (was smaller)
- Navigation: text-base md:text-lg
- Body text: text-base md:text-lg lg:text-xl
- Section titles: text-4xl md:text-5xl lg:text-6xl
- NEVER use text-xs or text-sm (too small on big screens)
- All text now scales properly for 4K displays
- Real favicon.ico from original website (1.4KB)
- Real favicon.svg from original website (140KB)
- Real apple-touch-icon.png from original website
- Match exact original branding
- Next.js builds to .next/standalone, not dist/
- Use next.config.mjs output: 'standalone'
- Copy .next/static for static assets
- Copy public folder for static files
- Astro build already copies public/ to dist/
- Separate public copy was unnecessary
- Only copy dist folder (contains everything including favicon)
- Fixes favicon 404 error
- Add alternate icon link for favicon.ico
- Add apple-touch-icon link
- Browser automatically requests favicon.ico as fallback
- This prevents 404 errors in console
- Add horizontal scroll wrapper for narrow screens
- Reduce font sizes on mobile (text-xs md:text-sm)
- Add padding adjustments for mobile (px-3 py-2)
- Add overflow-x-auto with negative margins for full-width scroll
- Enable word break on cell content
- Set min-width 600px for table readability
- Add border-collapse for cleaner borders
Tables now scroll horizontally on mobile with better readability.
- Add SiteConfig, NavItem, ProductCategory, WorkHours interfaces
- Remove: import { ... } from './site-config' (circular import)
- Types now defined at top of file
Fixes TypeScript build error on Easypanel.
- Create .docker/Dockerfile
- This is a standard location that Easypanel recognizes
- Overrides nixpacks auto-generation
- Simple Astro build without Next.js caching
- Delete src/content.config.ts file
- Astro uses built-in content collection defaults
- Fixes build errors from explicit schema configuration
- First deploy worked without this file
- Subsequent deploys failed because of this file
- Add product detail page ([slug].astro) with table rendering
- Display productTables from site-config.ts on product pages
- Add responsive font scaling for large screens (1280px+)
- Base font scales from 16px to 24px on 4K displays
- All text elements use responsive sizing (md/lg/xl breakpoints)
- Tables styled with green headers and alternating rows
- Add comprehensive documentation (FIXES_SUMMARY.md)
Fixes:
- Product specification tables now visible on product pages
- Font too small on large screens - now responsive
- Add dynamic sitemap.xml generation for all pages
- Add robots.txt for search engine crawl directives
- Add LocalBusiness JSON-LD schema for local SEO
- Add BreadcrumbList schema for navigation breadcrumbs
- Add canonical URLs to all product pages
- Add Twitter Cards metadata
- Add Google Analytics 4 integration component
- Create llm.txt with all product data for AI optimization
- Create reusable UI components (Button, Card, Badge)
- Update company address to full Thai address
- Update .env.example with GA4 placeholder
- Add keywords, seoContent, specifications, features, FAQ, and Schema.org data
- Extend types for ProductSpecification and FAQItem
- Update product page to render SEO sections with structured data
- All content in Thai for Thai market SEO optimization