# dealplustech-astro/ **Generated:** 2026-03-27 **Branch:** main ## OVERVIEW Astro 5.x Thai industrial e-commerce site (dealplustech.co.th). Migrated from WordPress. PDPA-compliant cookie consent, Umami analytics, 63 pages, 45 Thai-named routes. ## STRUCTURE ``` dealplustech-astro/ ├── src/ │ ├── components/ # .astro components (common/, consent/, product/, ui/) │ ├── content/ # Astro content collections (blog/, products/) - EMPTY │ ├── layouts/ # BaseLayout.astro (root HTML shell) │ ├── pages/ # 45 Thai-named static routes + index.astro │ ├── styles/ # global.css │ ├── images/ # ppr-tables/ (product reference images) │ └── lib/ # EMPTY ├── public/ │ ├── images/ # All product/corporate images (dist/, public/ mirrored) │ └── documents/ # PDF price lists (11 PDFs linked from product pages) ├── db/ # EMPTY (SQLite/Turso for consent logs at runtime) ├── astro.config.mjs # Astro config: site URL, i18n (th only), sitemap ├── tailwind.config.js # Kanit font, custom colors (primary green, accent orange) ├── Dockerfile # Multi-stage: node:20-alpine → nginx:alpine └── package.json # Scripts: dev, build, preview, db:push, db:seed ``` ## WHERE TO LOOK | Task | Location | Notes | |------|----------|-------| | Global layout | `src/layouts/BaseLayout.astro` | HTML shell, SEO meta, cookie consent | | Homepage | `src/pages/index.astro` | 13KB - main entry | | Product pages | `src/pages/[thai-url]/index.astro` | 45 static routes | | Header/Footer | `src/components/common/` | Header.astro, Footer.astro | | Cookie consent | `src/components/consent/` | EMPTY - handled via astro-consent | | API routes | `src/pages/api/` | EMPTY - no API routes configured | | Content config | `src/content.config.ts` | Content collections definition | ## CONVENTIONS - **Thai URLs only** — Never use English URLs for routes - **Astro components** — `.astro` files with frontmatter imports - **Kanit font** — Thai-optimized, set in tailwind.config.js - **Cookie consent** — astro-consent package, blocks analytics until accepted - **Umami analytics** — Requires `UMAMI_WEBSITE_ID` env var - **Admin password** — Required for consent log access at `/admin/consent-logs` ## ANTI-PATTERNS (THIS PROJECT) - Do NOT add TypeScript entry points (no `src/main.ts`) - Do NOT use English route names — SEO depends on Thai URLs - Do NOT modify `dist/` directly — it's gitignored build output - Do NOT run crawlers from Python in production environment - Do NOT commit `.env` files ## UNIQUE STYLES - **Custom Tailwind colors**: primary (green #3f8b6d), accent (orange #e35c18) - **PDPA compliance**: 14-disclosure privacy policy, granular cookie consent - **Custom animations**: fade-in, slide-up, slide-down, scale-in - **i18n**: Thai-only site, `prefixDefaultLocale: false` - **Image organization**: Mirrored `public/images/` and `dist/images/` ## COMMANDS ```bash cd dealplustech-astro npm install # Install dependencies npm run dev # Dev server at localhost:4321 npm run build # Production build → dist/ npm run preview # Preview built site # Database npm run db:push # Push schema to SQLite/Turso npm run db:seed # Seed database ``` ## NOTES - **No tests** — `package.json` has no test script - **Easypanel deploy** — Auto-deploys on push to main, uses `npm install` then `npm run build` - **Image pipeline** — Python `image_processor.py` processes downloaded images - **Consent logs** — SQLite at `db/consent.db` (gitignored), or Turso if configured - **PDF price lists** — 11 PDFs in `public/documents/`, linked from 7 product pages with "ราคาสินค้า" section