แอปบันทึกและดูแลสวนสำหรับคนปลูกต้นไม้ที่บ้าน — จดว่ารดน้ำ/ใส่ปุ๋ย/เก็บเกี่ยวไปเมื่อไหร่ วางแผนผังสวนได้จริง แชร์ให้คนในบ้านช่วยกันดูแล และแจ้งเตือนเมื่อถึงเวลาต้องรดน้ำ
Self-hosted ทั้งหมด — ข้อมูลสวนอยู่ใน PostgreSQL ของคุณเอง
บันทึกการดูแล
- จัดการต้นไม้ (เพิ่ม/แก้/ลบ) พร้อมรูปถ่ายและอายุต้นไม้แบบ ปี/เดือน/วัน
- log การรดน้ำ ใส่ปุ๋ย และเก็บเกี่ยว + สถิติย้อนหลัง กรองตามเดือน/โซน
แผนผังสวน
- วางผังแบบลากวาง — โซน ของตกแต่ง พื้น กำแพง รั้ว ประตู
- แต่ละโซนเลือกได้ว่าจะจัดต้นไม้แบบ grid หรือวางอิสระ (x,y%)
- "พื้นที่อิสระ" สำหรับต้นไม้ที่ยังไม่ได้อยู่โซนไหน
หลายคน หลายสวน
- หนึ่งบัญชีดูแลได้หลายสวน
- เชิญคนอื่นเข้าสวนผ่านลิงก์ พร้อมสิทธิ์ owner / editor / viewer
- แชร์สวนแบบ public read-only ผ่าน
/g/<slug>
แจ้งเตือน
- Telegram bot + cron รายวัน แจ้งว่าต้นไหนถึงเวลารดน้ำ/ใส่ปุ๋ย
- Web Push (VAPID) บนมือถือ — ติดตั้งเป็น PWA ได้
- แจ้งเตือนจากสภาพอากาศ (ฝน/ร้อน/ลม) ผ่าน Open-Meteo — ไม่ต้องใช้ API key
IoT (ออปชัน)
- รับค่าเซ็นเซอร์จาก ESP32 ผ่าน MQTT หรือ HTTP telemetry endpoint
- ดูค่าเซ็นเซอร์แบบ real-time (SSE) + เก็บประวัติย้อนหลัง
- ตั้งกฎอัตโนมัติ เช่น ความชื้นต่ำกว่า X แล้วสั่งรีเลย์เปิดน้ำ
| Frontend | SvelteKit 2 + Svelte 5 (runes) |
| Backend | SvelteKit server routes (adapter-node) |
| Database | PostgreSQL |
| Auth | JWT + bcrypt |
| Realtime | Server-Sent Events |
| IoT | MQTT |
ต้องมี Node.js 22+ และ PostgreSQL
git clone https://github.com/wowBALL/the_seed.git
cd the_seed/My-Garden-SvelteKit
npm installสร้างฐานข้อมูล:
createdb gardendbตั้งค่า environment — คัดลอกไฟล์ตัวอย่างแล้วแก้ค่าให้ตรงกับเครื่องคุณ:
cp .env.example .envอย่างน้อยต้องตั้ง PG_PASSWORD (หรือ DATABASE_URL) และ JWT_SECRET โดย
generate JWT_SECRET ด้วย:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"ตารางในฐานข้อมูลถูกสร้างอัตโนมัติตอนรันครั้งแรก จากนั้น:
npm run devเปิด http://localhost:3001 แล้วสมัครบัญชีแรก
ดูรายการทั้งหมดพร้อมคำอธิบายใน .env.example
จำเป็นตอน production (แอปจะ throw ถ้าไม่ได้ตั้ง):
| ตัวแปร | ใช้ทำอะไร |
|---|---|
JWT_SECRET |
เซ็น session token |
PG_PASSWORD หรือ DATABASE_URL |
เชื่อมต่อฐานข้อมูล |
ออปชัน — ไม่ตั้งก็ใช้งานได้ ฟีเจอร์นั้นจะปิดไปเฉยๆ:
| ตัวแปร | เปิดฟีเจอร์ |
|---|---|
TELEGRAM_BOT_TOKEN |
แจ้งเตือนผ่าน Telegram |
VAPID_PUBLIC_KEY / VAPID_PRIVATE_KEY |
Web Push (generate: npx web-push generate-vapid-keys) |
MQTT_URL |
รับค่าเซ็นเซอร์จากอุปกรณ์ IoT |
BREVO_API_KEY |
อีเมล "ลืมรหัสผ่าน" |
UPLOAD_DIR |
โฟลเดอร์เก็บรูปอัปโหลด — ตั้งให้ชี้ persistent volume บน cloud |
มี config พร้อมสำหรับ Docker, Railway และ Render
docker build -t the-seed My-Garden-SvelteKit
docker run -p 3000:3000 --env-file My-Garden-SvelteKit/.env the-seedตอน deploy อย่าลืมตั้ง BASE_URL เป็น URL จริง (https://…) เพื่อให้ cookie เป็น secure
และลิงก์คำเชิญชี้ถูกที่ และตั้ง UPLOAD_DIR ไปที่ persistent volume ไม่งั้นรูปจะหายตอน redeploy