TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Eddy - AI-assisted calendar/todo capstone project (Next.js + Prisma/Neon + Gemini)
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
โปรเจกต์ Next.js สำหรับ Capstone/Senior Project สาขาวิศวกรรมคอมพิวเตอร์ สไตล์ "Friendly 3D Pastel" (ม่วงหลัก + พาสเทล) พร้อมมาสคอต Eddy และโครงสร้างพร้อมต่อ Gemini API กับ PostgreSQL ในอนาคต 1. Node.js เวอร์ชัน 18.18 ขึ้นไป (แนะนำ 20 LTS) ดาวน์โหลดที่ https://nodejs.org แล้วติดตั้งตามปกติ ตรวจสอบว่าติดตั้งสำเร็จด้วยคำสั่งใน Terminal:檢視完整 README ↗
โปรเจกต์ Next.js สำหรับ Capstone/Senior Project สาขาวิศวกรรมคอมพิวเตอร์ สไตล์ "Friendly 3D Pastel" (ม่วงหลัก + พาสเทล, clay-morphism) พร้อมมาสคอต Eddy
ต่อ PostgreSQL (Prisma), Gemini API, Google OAuth/Calendar และระบบอีเมล (Resend) จริงทั้งหมดแล้ว ไม่ใช่ mock/prototype อีกต่อไป
node -v
npm -v
schema.prisma).env.local (ไม่ต้องลง PostgreSQL บนเครื่องเอง)เปิดโฟลเดอร์โปรเจกต์ด้วย VS Code (File → Open Folder...)
เปิด Terminal ใน VS Code (กด Ctrl+`) แล้วรันคำสั่ง:
npm install
(postinstall จะรัน prisma generate ให้อัตโนมัติ ใช้เวลาประมาณ 1-3 นาที ขึ้นกับความเร็วอินเทอร์เน็ต)
คัดลอกไฟล์ตัวอย่าง environment variables:
copy .env.example .env.local
(Mac/Linux ใช้ cp .env.example .env.local)
ระบบทั้งหมด (login/register, ปฏิทัน, สิ่งที่ต้องทำ, กลุ่ม, แชท Eddy, เชื่อม Google Calendar,
ลืมรหัสผ่าน) ต่อกับฐานข้อมูล/API จริง จึงต้องใส่ค่าใน .env.local ให้ครบตามหัวข้อ 4-6
ก่อนถึงจะใช้งานได้เต็มรูปแบบ — ใส่แค่ DATABASE_URL + AUTH_SECRET ก็เพียงพอสำหรับรันและ login
ด้วยอีเมล/รหัสผ่านได้แล้ว ส่วนที่เหลือ (Google OAuth, Resend) เป็น optional ตามฟีเจอร์ที่จะลองใช้
(ฟีเจอร์ AI ไม่ได้ตั้งค่าผ่าน .env.local อีกต่อไป — ผู้ใช้แต่ละคนใส่ Gemini API key ของตัวเองใน
หน้า "ตั้งค่า > ผู้ช่วย AI" หลัง login ดูหัวข้อ 5)
สั่งรันเว็บแอป:
npm run dev
เปิดเบราว์เซอร์ไปที่ http://localhost:3000 — ระบบจะ redirect ไปหน้า /login ให้อัตโนมัติ
eddy-app/
├── auth.ts # ตั้งค่า NextAuth (Auth.js v5) — Credentials + Google, JWT session
├── middleware.ts # ป้องกันหน้ากลุ่ม (app) ไม่ให้เข้าถ้ายังไม่ login
├── app/
│ ├── login/, register/ # เข้าสู่ระบบ / สมัครสมาชิก
│ ├── forgot-password/, reset-password/ # ลืมรหัสผ่าน (ส่งอีเมลผ่าน Resend)
│ ├── onboarding/ # ตั้งค่าเริ่มต้นหลังสมัคร (เวลาทำงาน, ระยะโฟกัส ฯลฯ)
│ ├── privacy/ # หน้านโยบายความเป็นส่วนตัว
│ ├── (app)/ # กลุ่มหน้าที่ login แล้ว (มี Sidebar/Mobile nav ร่วมกัน)
│ │ ├── dashboard/ # ภาพรวม workload, burnout risk, สรุป AI
│ │ ├── calendar/ # ปฏิทิน + เชื่อมต่อ Google Calendar, งานที่เกิดซ้ำ
│ │ ├── todo/ # สิ่งที่ต้องทำ, แตกงานย่อยด้วย AI, จัดลงปฏิทินอัตโนมัติ
│ │ ├── groups/ # กลุ่ม: งานร่วมกัน, แชร์ปฏิทิน, กระจายงานตาม workload
│ │ ├── profile/ # โปรไฟล์ผู้ใช้ (avatar, ทักษะ, บทบาท)
│ │ └── settings/ # ตั้งค่าบัญชี/โปรไฟล์/การทำงาน/ธีม, ลบบัญชี
│ └── api/
│ ├── auth/ # register, forgot-password, reset-password, NextAuth handler
│ ├── chat/ # แชทกับ Eddy (ต่อ Gemini จริง)
│ ├── ai/ # วิเคราะห์กิจกรรม, สรุปรายสัปดาห์, insight เรื่อง workload
│ ├── tasks/, subtasks/ # งาน + แตกงานย่อยด้วย AI + จัดตารางอัตโนมัติ
│ ├── events/, categories/, recurring/ # กิจกรรม, หมวดหมู่, กิจกรรมที่เกิดซ้ำ
│ ├── groups/ # กลุ่ม, เชิญ/เข้าร่วมด้วยโค้ด, มอบหมายงาน, กระจายงานตาม workload
│ ├── google/calendar/ # เชื่อมต่อ/ยกเลิกเชื่อม Google Calendar (แยกจากบัญชี login)
│ └── profile/ # แก้ไขโปรไฟล์, เปลี่ยนรหัสผ่าน, ลบบัญชี
├── components/ # Sidebar, ChatWidget, OnboardingWizard, Modal ต่างๆ ฯลฯ
├── lib/ # gemini.ts, google.ts, priorityScore.ts, freeTime.ts,
│ # groupWorkload.ts, rateLimit.ts, email.ts ฯลฯ (ลอจิกหลักของแอป)
├── prisma/schema.prisma # โครงสร้างตาราง (User, Task, Subtask, Event, Group, GroupTask,
│ # GoogleCalendarLink, ChatMessage, AiCache ฯลฯ)
├── tailwind.config.js # สีม่วง + พาสเทล + clay shadow ทั้งหมดอยู่ที่นี่
└── .env.example # ตัวอย่างตัวแปร environment
DATABASE_URL ใน .env.localAUTH_SECRET แบบสุ่ม แล้วใส่ใน .env.local:
npx auth secret
npm run prisma:push
npm run prisma:generate
npm run dev แล้วไปที่ /register เพื่อสมัครสมาชิก จากนั้น login ที่ /loginถ้าต้องการ login ด้วย Google ด้วย (นอกจาก email/password) ต้องตั้งค่าเพิ่ม:
http://localhost:3000/api/auth/callback/google ตอน dev)AUTH_GOOGLE_ID และ AUTH_GOOGLE_SECRET ใน .env.local
(ไม่ตั้งค่านี้ก็ไม่เป็นไร — ปุ่ม "เข้าสู่ระบบด้วย Google" แค่จะใช้งานไม่ได้ ส่วน login ด้วย email/password ปกติดี)การเชื่อมต่อ Google Calendar (ในหน้าปฏิทิน) เป็นระบบแยกจากการ login — เชื่อม Google
account ไหนก็ได้ ไม่จำเป็นต้องเป็นอีเมลเดียวกับที่สมัคร EDDY ใช้ OAuth Client เดียวกับข้างบน
แต่ต้องเพิ่ม redirect URI อีกตัว: http://localhost:3000/api/google/calendar/callback
ใช้ขับเคลื่อนฟีเจอร์ AI หลักของแอป เช่น แตกงานใหญ่เป็นงานย่อย, แชทกับ Eddy, วิเคราะห์ภาพรวม
สัปดาห์ และ insight เรื่อง workload (lib/gemini.ts) — ไม่มี key กลางของระบบใน .env.local แล้ว
ผู้ใช้แต่ละคนต้องตั้งค่า Gemini API key ของตัวเองก่อนถึงจะใช้ฟีเจอร์ AI ได้ (เก็บไว้ในฐานข้อมูล
ต่อผู้ใช้ ไม่ใช่ env ของเซิร์ฟเวอร์):
/settings/ai)lib/aiMock.ts/lib/workload.ts แทน
ส่วนฟีเจอร์ที่ต้องพึ่งความเข้าใจภาษาจริง (แชทกับ Eddy, แตกงานเป็นขั้นตอนย่อย) จะแจ้งตรงๆ ให้ไปตั้งค่า
key ก่อน ไม่มี fallback ให้.env.local:
RESEND_API_KEY="ค่าที่ได้มา"
tailwind.config.js (ส่วน colors.eddy และ colors.pastel)components/EddyMascot.tsxlib/ แยกเป็นไฟล์ตามหน้าที่ (เช่น priorityScore.ts,
freeTime.ts, groupWorkload.ts) ไม่ปนกับโค้ด UI หรือ API route