feat: initialize Next.js 16.1 project with Prisma 7, NextAuth and shadcn/ui

This commit is contained in:
Yusuf İpek
2025-12-24 14:37:24 +03:00
commit c2da0437d0
35 changed files with 9021 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
# Active Context - Dead Man Switch 2.0
## Şu Anki Durum
Proje planlaması tamamlandı, teknoloji stack'i belirlendi.
## Aktif Kararlar
- Next.js 16 + App Router kullanılacak
- Client-side encryption zorunlu değil, opsiyonel
- İlk fazda temel MVP hedefleniyor
## Sonraki Adım
Faz 1: Proje kurulumu ve Auth sistemi
## Notlar
- Şifreleme UX'i kritik - kullanıcı şifreyi kaybederse veri kurtarılamaz
- Check-in reminder email'leri düşünülmeli
+27
View File
@@ -0,0 +1,27 @@
# Product Context - Dead Man Switch 2.0
## Problem
- İnsanlar beklenmedik durumlarda sevdiklerine mesaj/bilgi bırakmak istiyor
- Mevcut çözümler ya güvensiz ya da kullanımı zor
- Sunucu tarafı şifreleme güven sorunu yaratıyor
## Çözüm
- Basit check-in mekanizması
- Client-side encryption ile zero-knowledge
- Kullanıcı dostu arayüz
## Kullanıcı Akışı
1. Kayıt ol / Giriş yap
2. Yeni mesaj oluştur (metin + dosya)
3. Alıcı e-postaları ekle
4. Check-in süresi belirle (örn: 7 gün)
5. Opsiyonel: Şifre ile encrypt et
6. Periyodik check-in yap
7. Check-in kaçırılırsa → alıcılara link gönderilir
8. Alıcı linke tıklar, şifre girerse decrypt eder
## UX Hedefleri
- Minimal, sade arayüz
- Mobil responsive
- Hızlı onboarding
- Güvenlik hissi veren tasarım
+61
View File
@@ -0,0 +1,61 @@
# Progress - Dead Man Switch 2.0
## Fazlar
### Faz 1: Proje Kurulumu & Auth ✅
- [x] Next.js proje kurulumu (Next.js 15, current latest)
- [x] Tailwind + shadcn/ui setup
- [x] PostgreSQL + Prisma setup
- [x] NextAuth.js entegrasyonu
- [x] User tablosu ve auth akışı
- [x] Temel layout ve routing
### Faz 2: Mesaj CRUD 🔲
- [ ] Message, Recipient, Attachment şemaları
- [ ] Mesaj oluşturma formu
- [ ] Mesaj listeleme/detay sayfaları
- [ ] Mesaj düzenleme/silme
### Faz 3: Dosya Yükleme (R2) 🔲
- [ ] Cloudflare R2 entegrasyonu
- [ ] Dosya upload/download API
- [ ] Dosya listeleme UI
### Faz 4: Client-side Encryption 🔲
- [ ] Web Crypto API wrapper
- [ ] Encrypt/decrypt utilities
- [ ] Şifreli mesaj oluşturma akışı
- [ ] Decrypt sayfası (alıcı için)
### Faz 5: Check-in & Cron 🔲
- [ ] Check-in API endpoint
- [ ] node-cron scheduler setup
- [ ] Deadline kontrolü
- [ ] Status güncellemeleri
### Faz 6: Email Gönderimi 🔲
- [ ] Nodemailer setup
- [ ] Email templates
- [ ] Deadline triggered email
- [ ] Check-in reminder emails
### Faz 7: Admin Panel 🔲
- [ ] Admin role ve guard
- [ ] Kullanıcı yönetimi
- [ ] Mesaj istatistikleri
- [ ] System logs
### Faz 8: Polish & Deploy 🔲
- [ ] Error handling
- [ ] Loading states
- [ ] Responsive tasarım
- [ ] Production deployment
- [ ] Monitoring setup
## Tamamlanan
- ✅ Teknoloji stack seçimi
- ✅ Memory bank oluşturma
- ✅ Faz planlaması
## Bilinen Sorunlar
(henüz yok)
+22
View File
@@ -0,0 +1,22 @@
# Project Brief - Dead Man Switch 2.0
## Proje Özeti
Kullanıcıların belirli süre check-in yapmaması durumunda önceden belirlenen alıcılara şifreli mesaj ve dosya gönderen web uygulaması.
## Temel Özellikler
1. **Check-in Sistemi** - Kullanıcı belirlediği süre boyunca periyodik check-in yapar
2. **Mesaj & Dosya** - Mesaj yazma ve dosya ekleme
3. **Otomatik Gönderim** - Check-in süresi geçerse e-posta ile bağlantı gönderimi
4. **Client-side Şifreleme** - Opsiyonel, sunucu verileri göremez
5. **Kullanıcı Yönetimi** - Kayıt, giriş, admin paneli
6. **Çoklu Mesaj** - Kullanıcı birden fazla mesaj ayarlayabilir
## Hedef Kullanıcılar
- Dijital miras bırakmak isteyenler
- Acil durum mesajı hazırlamak isteyenler
- Gizli bilgileri güvenli şekilde aktarmak isteyenler
## Kapsam Dışı (v1)
- Mobil uygulama
- Çoklu dil desteği
- Ödeme sistemi
+42
View File
@@ -0,0 +1,42 @@
# System Patterns - Dead Man Switch 2.0
## Mimari
```
┌─────────────────────────────────────────────────┐
│ Next.js App │
├─────────────────┬───────────────────────────────┤
│ Frontend │ API Routes │
│ (React + RSC) │ (Auth, CRUD, Cron) │
└────────┬────────┴───────────────┬───────────────┘
│ │
│ Web Crypto API │ Prisma
│ (encrypt/decrypt) │
│ ▼
│ ┌─────────────────┐
│ │ PostgreSQL │
│ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Cloudflare R2 │ │ Nodemailer │
│ (encrypted │ │ (SMTP) │
│ files) │ └─────────────────┘
└─────────────────┘
```
## Veritabanı Şeması (Draft)
- **User**: id, email, password, role, createdAt
- **Message**: id, userId, title, encryptedContent, isEncrypted, checkInInterval, lastCheckIn, nextDeadline, status
- **Recipient**: id, messageId, email, name
- **Attachment**: id, messageId, r2Key, encryptedName, size
## Güvenlik Patterns
- Şifreleme client-side (AES-256-GCM)
- Şifre hash'i sunucuya gönderilmez
- Derived key PBKDF2 ile üretilir
- Salt her mesaj için unique
## API Patterns
- REST endpoints under `/api/*`
- NextAuth session-based auth
- Zod validation
+25
View File
@@ -0,0 +1,25 @@
# Tech Context - Dead Man Switch 2.0
## Tech Stack
| Katman | Teknoloji |
|--------|-----------|
| Frontend | Next.js 16 (App Router) |
| Backend | Next.js API Routes |
| Database | PostgreSQL + Prisma |
| Auth | NextAuth.js (Auth.js) |
| Email | Nodemailer + SMTP |
| File Storage | Cloudflare R2 |
| Encryption | Web Crypto API (client-side) |
| Cron/Scheduler | node-cron |
| Styling | Tailwind CSS + shadcn/ui |
## Geliştirme Ortamı
- Node.js 20+
- pnpm (paket yöneticisi)
- Docker (PostgreSQL için)
- TypeScript
## Önemli Kararlar
- **Client-side encryption**: Şifreleme tamamen tarayıcıda, sunucu sadece encrypted blob saklar
- **R2**: S3-compatible, ucuz, edge-friendly
- **node-cron**: Basit, in-process scheduler (production'da ayrı worker düşünülebilir)