# 485Tech Free Tools Platform Roadmap

## วิสัยทัศน์

485Tech ควรเติบโตจากหน้ารวมเครื่องมือ 159 รายการไปเป็น **local-first toolbox platform** ที่ผู้ใช้ค้นหาเครื่องมือได้เร็ว ทำงานเป็นชุด เก็บงานไว้ในอุปกรณ์ แชร์ workflow ได้ และยังรักษาจุดขายเรื่องความเป็นส่วนตัวไว้เป็นค่าเริ่มต้น โฆษณาควรเป็นชั้นสนับสนุนธุรกิจที่แยกจากปุ่มเครื่องมืออย่างชัดเจน ไม่ควรลดความเร็วหรือทำให้ผู้ใช้เข้าใจผิด

## สิ่งที่ดำเนินการในรอบนี้

| ความสามารถ | สถานะ | ผลลัพธ์ |
|---|---|---|
| AdSense consent-gated loader | ทำแล้ว | โหลด provider หลังผู้ใช้เลือกอนุญาต, ซ่อน slot เมื่อยังไม่มี consent, รองรับ Auto Ads และ non-personalized default |
| Publisher verification metadata | ทำแล้ว | เพิ่ม `google-adsense-account` ใน public และ standalone layouts |
| Root `ads.txt` | ทำแล้ว | เพิ่ม `public/ads.txt` ด้วย publisher ID ที่มีอยู่ใน source |
| Privacy control | ทำแล้ว | เพิ่ม consent banner, footer setting link และ disclosure ใน privacy policy |
| AdSense CSP support | ทำแล้ว | เพิ่ม script/frame/connect/image origins และ blob worker/image support ใน Wrangler/Worker CSP |
| Installable app shell | ทำแล้ว | เพิ่ม `manifest.webmanifest`, `sw.js` และ static asset caching ที่ไม่ cache HTML nonce |
| UX foundation | ทำแล้วจากรอบก่อน | Search, sort, clear filters, recent, pinned, share link, JSON draft recovery และ Background Remover editor |
| Batch Text Toolkit | ทำแล้วในรอบนี้ | Multi-file queue, trim/dedupe/sort/case, preview, retry/skip, cancel หลังไฟล์ปัจจุบัน และ ZIP export แบบ local-only |
| SEO/content layer | ทำแล้วในรอบนี้ | `/use-cases`, canonical links, CollectionPage JSON-LD และ auto-generated sitemap 167 URLs |

## ลำดับพัฒนาที่แนะนำ

| ลำดับ | ฟีเจอร์ | คุณค่าต่อผู้ใช้ | ขอบเขต implementation |
|---:|---|---|---|
| P0 | Tool collections | ทำให้ผู้ใช้เริ่มงานตามเป้าหมาย ไม่ต้องรู้ชื่อ tool | เพิ่มชุด `Developer`, `Image`, `PDF`, `Security`, `Text cleanup` พร้อม deep links และ collection pages |
| P0 | Local workspace | เก็บ input/output ของงานไว้ในเครื่องและกลับมาทำต่อ | IndexedDB, named workspaces, import/export JSON, auto-expire และปุ่มล้างข้อมูล |
| P0 | Batch queue | ประมวลผลไฟล์หลายไฟล์ในเครื่อง | **เสร็จสำหรับ text files**: queue, progress, retry, skip, cancel, ZIP export และ 5 MB/file limit; ขยายต่อไปยัง image/PDF เมื่อมี worker ที่เหมาะสม |
| P0 | Tool capability badges | ลดคำโฆษณาเกินจริง | **เสร็จในระดับ discovery heuristic**; ขั้นต่อไปคือ manifest schema ระบุ `clientSide`, `offline`, `fileTypes`, `maxSize`, `needsNetwork`, `privacyNote` เป็น source of truth |
| P1 | Command palette | ผู้ใช้ power user เปิด tool ด้วยคีย์บอร์ด | `Ctrl/Cmd+K`, fuzzy search, recent/pinned, keyboard navigation และ focus trap |
| P1 | Shareable recipes | เปลี่ยนหลายขั้นตอนเป็น workflow ที่แชร์ได้ | URL hash ที่เก็บเฉพาะ configuration ปลอดภัย ไม่ใส่ข้อมูลลับ, import/export recipe file |
| P1 | Offline capability report | ทำให้ผู้ใช้รู้ว่า tool ไหนใช้ได้เมื่อไม่มีอินเทอร์เน็ต | ทดสอบ dependency จาก manifest และแสดง `Offline ready`/`Needs network` ก่อนเปิด tool |
| P1 | Accessibility center | รองรับผู้ใช้หลากหลายขึ้น | reduced motion, contrast check, font scale, keyboard map และ automated axe checks |
| P1 | SEO/content layer | เพิ่ม organic discovery โดยไม่พึ่งโฆษณาอย่างเดียว | **เสร็จในระดับ use-case hub**: landing page 6 collections, canonical, CollectionPage JSON-LD และ auto sitemap; ขั้นต่อไปคือ guide/FAQ รายหมวดและ OG metadata เฉพาะหน้า |
| P2 | Optional account sync | ย้าย favorites/workspaces ข้ามอุปกรณ์โดยไม่บังคับสมัคร | auth + encrypted sync, explicit opt-in, export/delete account data และไม่ส่ง tool input เป็นค่าเริ่มต้น |
| P2 | Public API | ให้ developer เรียกใช้ converter บางประเภท | แยก endpoint deterministic, rate limit, schema/versioning, API key และ docs; ไม่เปิดไฟล์หรือข้อมูลส่วนตัวโดยปริยาย |
| P2 | Usage analytics แบบ privacy-first | รู้ว่าเครื่องมือใดควรปรับปรุง | aggregate event, consent-aware, no input capture, retention limit และ dashboard สรุป |
| P2 | Monetization tiers | มีรายได้โดยไม่ทำลาย free tier | Free ใช้ local tools ได้เต็ม, Pro เสริม batch/large files/cloud sync เฉพาะเมื่อผู้ใช้เลือกและมีต้นทุนรองรับ |

## สถาปัตยกรรมที่ควรรักษา

เครื่องมือที่ประมวลผลได้ใน browser ควรคงเป็น client-side และใช้ manifest เป็น source of truth ส่วนงาน batch ที่หนักควรมี progress/cancel และไม่ขออัปโหลดไฟล์โดยไม่จำเป็น หน้ารวมเครื่องมือควรเป็น discovery layer ไม่ควร mount แอป 159 ตัวพร้อมกัน การเพิ่มบัญชีหรือ API ควรเป็น opt-in layer ที่แยกจาก free local tools เพื่อไม่ลดความเป็นส่วนตัวของผู้ใช้เดิม

ชั้นโฆษณาควรมีตำแหน่งจำกัดและไม่อยู่ติดกับปุ่มดาวน์โหลด เมนู หรือ action หลักของ tool ควรสงวนพื้นที่ล่วงหน้า ลด layout shift และแยก label `Advertisement` ให้ชัดเจน เมื่อจะเปิด personalized ads ต้องเชื่อม Google Privacy & Messaging หรือ CMP ที่ Google รับรองสำหรับ traffic ที่เกี่ยวข้อง ไม่ควรใช้ consent banner แบบทำเองเป็นข้ออ้างว่าครบ compliance

## แผน 30/60/90 วัน

| ช่วงเวลา | เป้าหมาย | definition of done |
|---|---|---|
| 0–30 วัน | Collections, capability badges, command palette และ batch queue สำหรับ image/PDF | ผู้ใช้หา tool จาก use case ได้, เห็นข้อจำกัดก่อนเริ่ม, ยกเลิก batch queue ได้ และไม่มี regression ใน 159 tools |
| 31–60 วัน | IndexedDB workspace, recipe export/import, offline capability report และ accessibility center | งานกลับมาทำต่อได้, export ได้, offline status ตรงกับ dependency และ keyboard flow ครบ |
| 61–90 วัน | SEO guides, privacy-first aggregate analytics และ optional account sync design | มี content funnel, วัดผลโดยไม่เก็บ input และมี data export/delete สำหรับ account; use-case hub และ sitemap เริ่มต้นแล้วในรอบนี้ |

## เกณฑ์คุณภาพก่อนเปิดใช้จริง

ฟีเจอร์ใหม่ทุกตัวควรมี success path, empty state, invalid input, large input, cancel/retry, mobile viewport และ keyboard test อย่างน้อยหนึ่งชุด พร้อมระบุชัดเจนว่า process ที่เกิดขึ้นบนเครื่องหรือส่งไป server การเพิ่มบริการภายนอกต้องอัปเดต privacy policy, CSP, consent flow, security tests และ deployment checklist ในชุดเดียวกัน

## Browser QA รอบ implementation

หน้า Tools Hub รุ่นล่าสุดแสดงปุ่ม `ส่งออกการตั้งค่า` และ `นำเข้าการตั้งค่า` พร้อม collection chips ครบ 7 ตัวเลือก เมื่อเลือก `พัฒนาเว็บ` ระบบกรองเหลือ 10 เครื่องมือและ category counts เปลี่ยนตามชุดผลลัพธ์จริง โดยรายการที่แสดงเป็นเครื่องมือสถานะพร้อมใช้งานทั้งหมด

ทดสอบ export preferences ผ่าน browser สำเร็จ ได้ไฟล์ `485tech-tools-settings.json` ที่มี `version: 1`, `product`, timestamp, pinned, recent และ sort ครบถ้วน ไฟล์ถูกสร้างจากข้อมูล local-only บนเครื่องผู้ใช้ ส่วน import เปิด file picker ได้จริงและมี validation ของ product/version ก่อนเขียนกลับ localStorage

การตรวจ file input พบ element `#tools-preferences-file` และ `accept=application/json,.json` ถูกสร้างจริง แต่ automated upload ใน sandbox หา hidden input ไม่เจอหลังเปิด picker จึงยังไม่ถือเป็น application bug; implementation มี change handler และ validation ครบ และสามารถตรวจ end-to-end เพิ่มผ่าน browser แบบ manual ได้

## Cloudflare production readiness

ตรวจ resource `home` บน Cloudflare แบบ read-only สำเร็จ: Worker มี ASSETS binding, ใช้ `CSP_MODE=report-only`, HSTS max-age 86400 และ `HSTS_INCLUDE_SUBDOMAINS=true`; deployment ล่าสุดที่ API รายงานสร้างเมื่อ 2026-08-22 และ route production ยังไม่สะท้อนการเปลี่ยนแปลงรอบนี้ จึงยังไม่มีการ deploy อัตโนมัติจากการตรวจดังกล่าว การปล่อยรอบถัดไปควรใช้ source ล่าสุด, ยืนยัน publisher ID, ตั้งค่า Privacy & Messaging/CMP ใน AdSense และตรวจ `/ads.txt`, manifest, consent, CSP reports หลังปล่อยจริง

## Next-round browser QA

Tools Hub รุ่นล่าสุดแสดง capability badges บนการ์ด เช่น `ทำงานบนเครื่องคุณ`, `คัดลอกผลลัพธ์` และ `ดาวน์โหลดผลลัพธ์` โดยข้อความสอดคล้องกับ category/status ของรายการที่ตรวจพบ Command palette เปิดได้ด้วย `Ctrl/⌘ + K`, โฟกัสช่องค้นหาอัตโนมัติ และเมื่อพิมพ์ `PDF` จะแสดงผลลัพธ์เครื่องมือ PDF ที่เปิดได้จริงหลายรายการ

Command palette ปิดด้วย Escape ได้ตามปกติ และ main search เคารพ collection state ที่จำไว้ใน localStorage: เมื่อ collection `พัฒนาเว็บ` ยัง active การค้นหา `JSON` จะแสดง 0 รายการอย่างถูกต้องเพราะ JSON อยู่นอก collection นั้น

หลังเปลี่ยนกลับเป็น collection `ทุกงาน` การค้นหา `JSON` แสดง 13 รายการตาม catalog จริง และ capability badges ปรากฏบนการ์ดตาม category/status ของแต่ละเครื่องมือ

ทดสอบปุ่ม `แชร์ตัวกรอง` หลังค้นหา JSON แล้ว ระบบแสดง toast `คัดลอกลิงก์แล้ว` สำเร็จ การตรวจอ่าน clipboard โดยตรงใน sandbox หมดเวลาเพราะ browser permission ไม่ตอบสนอง จึงไม่ใช่หลักฐานว่าการสร้าง URL ล้มเหลว; logic สร้าง URL ใช้ query `q`, `category`, `collection` และ `sort` โดยไม่ใส่ข้อมูล tool input

### Batch Text Toolkit และ SEO discovery QA

Browser regression ล่าสุดผ่าน `40/40` รวมการโหลด `/tools/batch-text`, รับไฟล์ข้อความ 2 รายการ, trim/dedupe/sort, preview, ZIP download, cancellation ที่หยุดคิวหลังไฟล์ปัจจุบัน, การตรวจ use-case page 6 cards พร้อม canonical/collection links และ mobile use-case layout ที่ไม่ล้น viewport หลัง clip decorative hero glow การตรวจ Worker fixture ผ่าน `54/54` โดยรวม `/use-cases` และ `/sitemap.xml`; smoke catalog ผ่าน `159/159` และ functional audit เดิมผ่าน `19/19`

