feat: add form components and UI elements for enhanced user interaction

- Introduced Form, FormField, FormItem, FormLabel, FormControl, FormDescription, FormMessage components for structured form handling.
- Added Input, Textarea, and Select components for user input.
- Implemented Label and Separator components for better UI organization.
- Created Skeleton component for loading states.
- Developed Toast and Toaster components for user notifications.
- Integrated useToast hook for managing toast notifications.
- Established AI analysis functionality with analyzeJournalWithLocalAI.
- Set up Dexie for local database management with Journal and Task models.
- Configured Supabase client for server-side and browser-side interactions.
- Defined database schema for journals, tasks, chat sessions, and messages with Row Level Security policies.

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Poyraz Avsever
2026-05-06 16:20:14 +03:00
co-authored by Copilot
parent 3432bbab33
commit c73bf0e499
40 changed files with 9104 additions and 569 deletions
+105
View File
@@ -0,0 +1,105 @@
# MindSpace Proje Yol Haritası (Roadmap)
Bu doküman, `PRD.md` gereksinimlerinin **Supabase**, **Gemini API** ve **Shadcn UI** kullanılarak uygulanması için detaylı, faz bazlı geliştirme planını içermektedir.
---
## Faz 1: Proje Kurulumu ve Altyapı
**Amacı:** Geliştirme ortamının hazırlanması, UI bileşen sisteminin kurulması ve veritabanı / yetkilendirme (Auth) altyapısının Supabase ile entegre edilmesi.
1. **Next.js Kurulumu**
- Next.js (App Router), React 19, TypeScript ve Tailwind CSS kullanılarak projenin başlatılması.
- Dizin yapısının oluşturulması (`src/app`, `src/components`, `src/lib`, `src/hooks`).
2. **Shadcn UI ve Stil Entegrasyonu**
- Shadcn UI CLI ile başlatılması.
- Temel bileşenlerin (Button, Card, Input, Label, Dialog, Form, Toast vb.) eklenmesi.
- `next-themes` kullanılarak Dark/Light mod geçişinin ayarlanması (Varsayılan olarak Dark Mode ağırlıklı tasarım).
3. **Supabase Proje Kurulumu**
- Supabase projesinin oluşturulması ve API key'lerin `.env.local` dosyasına eklenmesi.
- `@supabase/ssr` veya `@supabase/supabase-js` ile client ve server bileşenleri için istemcilerin oluşturulması.
4. **Veritabanı Şemasının Oluşturulması (Supabase SQL)**
- `users` tablosu (Supabase Auth ile senkronize çalışacak yapı).
- `journals` tablosu: Kullanıcının günlükleri (id, user_id, date, mood, energy, content, ai_tags, ai_sentiment_score, ai_summary vb.).
- `tasks` tablosu: Görev yönetimi (id, user_id, title, description, status, source_journal_id).
- `chat_sessions` ve `chat_messages` tabloları (Geçmiş sohbetleri tutmak için).
5. **Kimlik Doğrulama (Authentication)**
- Supabase Auth kullanılarak Email/Şifre ile kayıt olma (Register) ve giriş yapma (Login) sayfalarının geliştirilmesi.
- Auth middleware ile yetkisiz kullanıcıların Dashboard'a erişiminin engellenmesi.
---
## Faz 2: Dashboard ve Temel Düzen (Layout)
**Amacı:** Kullanıcının giriş yaptığında karşılaşacağı ana navigasyon ve dashboard iskeletinin modern bir görünümle inşa edilmesi.
1. **Ana Layout ve Navigasyon**
- Masaüstü için sol veya üst menü bar (Sidebar/Navbar).
- Menü linkleri: Dashboard, Günlük, Görevler, Sohbet, Ayarlar.
- Responsive tasarım ile mobilde hamburger menü yapısı.
2. **Dashboard İskeleti**
- CSS Grid/Flexbox kullanarak kartların yerleşimi.
- Profil bilgisi ve Çıkış Yap butonu içeren bir üst bilgi (header) alanı.
3. **Boş Durum (Empty State) Yönetimi**
- Kullanıcının henüz günlüğü, görevi veya AI analizi yoksa gösterilecek yönlendirici ve estetik bileşenlerin tasarlanması (örn. "Henüz veri yok, ilk günlüğünü yaz").
---
## Faz 3: Günlük (Journal) ve Görev (Task) Modülleri
**Amacı:** Kullanıcının duygu, enerji ve günlük notlarını yazabilmesi, ayrıca manuel olarak görev ekleyip takip edebilmesi.
1. **Günlük (Journal) Modülü**
- **Oluşturma Ekranı:** Günlük yazma formu. Shadcn form bileşenleriyle validasyon sağlanması.
- **Mood & Enerji Seçimi:** Buton grupları veya slider kullanılarak duygu durumu ve enerji (1-5) seçimi.
- **Listeleme:** Kaydedilen günlüklerin tarih sırasına göre listelenmesi.
- **Detay Görünümü:** Seçilen günlüğün tam sayfa veya modal içinde okunması, silinmesi ve düzenlenmesi.
2. **Görev (Task) Modülü**
- **Görev Ekleme:** Basit başlık ve detay içeren görev ekleme formu.
- **Görev Durumu:** "Todo", "In Progress", "Completed" durumlarının listelenmesi ve checkbox veya sürükle bırak tarzında güncellenmesi.
- **Günlükle İlişkilendirme:** Görevlerin varsa kaynak günlük ID'sini göstermesi.
---
## Faz 4: Gemini API Entegrasyonu (AI Analizi)
**Amacı:** Kullanıcının girdiği günlük metninin Google Gemini API ile analiz edilip etiketler, duygu skoru, özet ve görev önerileri üretmesi.
1. **Gemini API Kurulumu**
- `@google/generative-ai` SDK'sının projeye dahil edilmesi.
- API Key'in `.env.local` içinde güvenli yapılandırılması.
2. **Analiz Endpoint'inin Geliştirilmesi**
- `POST /api/analyze-journal` gibi bir route oluşturularak, kullanıcının günlüğünün modele gönderilmesi.
- **Prompt Engineering:** Gemini'ye gönderilecek prompt'un, yanıtın stabil bir JSON formatında (tags, sentiment_score, summary, reflection, suggested_tasks) dönmesini garantileyecek şekilde tasarlanması.
3. **Veritabanı ve UI Entegrasyonu**
- Dönen AI analiz sonuçlarının Supabase'deki `journals` tablosuna (ai_tags, ai_summary vb.) Update edilmesi.
- Günlük detay ekranında AI analiz sonucunun görsel bir kart olarak sunulması.
4. **Görev Önerileri (Suggested Tasks) Akışı**
- AI'ın günlüğe bakarak çıkardığı görev önerilerinin kullanıcıya sunulması ("Bunu görev listene eklemek ister misin?").
- Onaylanan önerilerin `tasks` tablosuna kaydedilmesi.
---
## Faz 5: Dashboard Veri Görselleştirme
**Amacı:** Toplanan verilerin (mood, enerji, etiketler) grafikler yardımıyla analiz edilmesi ve özetlerin sunulması.
1. **Recharts Entegrasyonu ve Veri Hazırlama**
- Recharts kütüphanesinin eklenmesi.
- Supabase'den son 7 ve 30 güne ait verilerin çekilip grafiklere uygun formata dönüştürülmesi.
2. **Mood ve Enerji Trend Grafikleri**
- Günlere göre duygu skorları ve enerji (1-5) seviyesini gösteren çizgi veya bar grafikleri.
3. **Etiket Dağılımı Grafiği**
- AI tarafından en çok oluşturulan etiketlerin pasta (Pie) veya yatay çubuk (Bar) grafik ile gösterilmesi.
4. **Dashboard Özet Kartları**
- "Son Günlüklerin", "Aktif Görevlerin" ve "Haftalık AI İçgörüsünün" özet widget'lar halinde Dashboard ekranında sergilenmesi.
---
## Faz 6: AI Chat Modülü (Sohbet)
**Amacı:** Kullanıcının geçmiş günlüklerini bağlam olarak sunup, bir "Dijital Yansıma Asistanı" (Gemini) ile sohbet etmesi.
1. **Sohbet UI Tasarımı**
- Shadcn UI ile scrollable mesaj listesi, kullanıcı giriş alanı ve mesaj baloncuklarının tasarlanması.
2. **Bağlam (Context) Yönetimi**
- Kullanıcı bir soru sorduğunda, Supabase'den son X günlüğün veya içeriğe uygun günlüklerin çekilerek Gemini API'ye sistem mesajı/context olarak verilmesi.
3. **Sohbet Akışı ve Veri Kaydı**
- Gemini API üzerinden yanıtların tercihen "stream" (akış) yöntemiyle hızlıca UI'da gösterilmesi.
- Tamamlanan konuşmaların `chat_sessions` ve `chat_messages` tablolarına kaydedilerek, sayfa yenilendiğinde eski sohbetin görünmesinin sağlanması.
4. **Güvenlik ve Sınırlar**
- Prompt seviyesinde Gemini'ye "Tıbbi veya klinik tavsiye verme, sadece yansıtıcı ol" komutunun sıkıca verilmesi.