Commit Graph

7 Commits

Author SHA1 Message Date
Kunthawat Greethong
36112e4137 feat: Upgrade to Astro 6
- Astro 5.x → Astro 6.1.2
- @astrojs/node 9.x → 10.x
- Content config: src/content/config.ts → src/content.config.ts
- Update to glob loader pattern for content collections
- Replace post.slug with post.id for content loader
- Replace post.render() with render(post)
2026-03-31 11:25:34 +07:00
Kunthawat Greethong
cfd8bd196a fix: Admin consent logs - implement Export CSV, fix delete, switch to better-sqlite3
- Replace Astro DB with better-sqlite3 for reliable SQLite access
- Implement Export CSV feature in admin panel
- Fix delete consent function (make it global)
- Add better-sqlite3 dependency
2026-03-31 11:00:20 +07:00
Kunthawat Greethong
ae4a897d11 feat: Update images with Unsplash (hero + illustrations), fix UX/UI, add animations
- Replace MiniMax images with Unsplash (free commercial use)
- Hero images: marketing, AI automation, tech consult, web dev, about-us
- Illustrations: different from heroes for all 4 service pages
- Fix ตัวอย่างการใช้งาน section on marketing-automation
- Update about-us with hero image
- All images stored locally (not hotlinks)
2026-03-30 11:38:48 +07:00
Kunthawat Greethong
3660d43f24 fix: Sync package-lock.json with package.json
Regenerated package-lock.json to fix Docker build error:
- Added missing typescript@5.9.3 dependency
- Synced with all current dependencies
- Required for npm ci to work in Docker build
2026-03-10 22:00:42 +07:00
Kunthawat Greethong
b485320afc feat: Add full PDPA compliance with cookie consent, admin dashboard, and conditional analytics
Features implemented:
 Cookie consent banner (Accept/Reject) with localStorage storage
 Conditional Umami Analytics (loads only with consent)
 Admin dashboard at /admin/consent-logs (password protected)
 API endpoints for consent logging (POST/GET/DELETE)
 Astro DB integration with consent logging schema
 Production-ready Dockerfile with Node.js server adapter
 Node.js 20+ requirement for Astro 5.x compatibility

Files added:
- src/components/consent/CookieBanner.astro
- src/pages/api/consent/index.ts (POST/GET endpoints)
- src/pages/api/consent/[sessionId]/index.ts (DELETE endpoint)
- src/pages/admin/consent-logs.astro (admin dashboard)
- db/schema.ts (ConsentLog table schema)

Files modified:
- src/layouts/Layout.astro (CookieBanner + conditional Umami)
- astro.config.mjs (Node adapter + DB integration)
- package.json (start script, engines field, dependencies)
- Dockerfile (custom deployment with Node.js server)

Configuration:
- Umami Analytics: Conditional loading based on consent
- Admin password: 'changeme' (MUST change in production)
- Database: SQLite file (data/consent.db)
- Server: Node.js standalone adapter

Deployment:
- Docker build with SQLite runtime support
- Custom Dockerfile for Easypanel
- Start command: node dist/server/entry.mjs

Security notes:
⚠️  CHANGE ADMIN_PASSWORD before production deployment
⚠️  Enable HTTPS for secure cookie consent
⚠️  Consider server-side authentication for admin dashboard
2026-03-10 21:25:49 +07:00
Kunthawat Greethong
80e0c0406f Update: use port 80 with serve package 2026-03-03 23:36:45 +07:00
Kunthawat Greethong
a578dd5a30 Initial commit: MoreminiMore redesign with Astro 2026-03-03 21:18:55 +07:00