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.
AI assistant ที่ช่วยจัดตารางชีวิตประจำวัน งาน และสิ่งที่ต้องทำ
Translation pending
ProductivityTypeScript · JavaScriptGitHub @nattaratk16OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Eddy - AI-assisted calendar/todo capstone project (Next.js + Prisma/Neon + Gemini)
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
โปรเจกต์ Next.js สำหรับ Capstone/Senior Project สาขาวิศวกรรมคอมพิวเตอร์ สไตล์ "Friendly 3D Pastel" (ม่วงหลัก + พาสเทล) พร้อมมาสคอต Eddy และโครงสร้างพร้อมต่อ Gemini API กับ PostgreSQL ในอนาคต 1. Node.js เวอร์ชัน 18.18 ขึ้นไป (แนะนำ 20 LTS) ดาวน์โหลดที่ https://nodejs.org แล้วติดตั้งตามปกติ ตรวจสอบว่าติดตั้งสำเร็จด้วยคำสั่งใน Terminal:Read the full 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