AISigner, stajyer/öğrencilerin kısa bir anketle güçlü yönlerini ve seviyelerini belirleyip uygun mentörle eşleştiren; proje havuzundan uygun bir proje atandıktan sonra AI destekli bir öğrenme yol haritası (roadmap) oluşturan açık kaynak bir platformdur.
- Öğrencinin kayıt + anket süreci
- AI ile temel profil çıkarımı (seviye / yatkın alanlar)
- Admin’in mentör ataması
- Mentörün proje havuzundan öğrenciye proje ataması
- AI destekli roadmap üretimi ve adımların onaylanması
- GitHub fork/PR akışına dayalı çalışma düzeni (bkz. "GitHub Entegrasyonu — Mevcut Durum")
- ✅ Proje şablonlarına GitHub repository URL'i eklenebilir (admin,
ProjectTemplate.githubRepoUrl). - ✅ Roadmap adımlarına GitHub issue linki eklenebilir (mentor,
RoadmapStep.githubIssueUrl); öğrenci roadmap üzerinde bu linki görür. - ❌ Henüz yok: otomatik fork/PR oluşturma, issue durumu senkronizasyonu, webhook/GitHub App entegrasyonu. Şu an akış tamamen link-bazlı ve manuel — öğrenci/mentor repo ve issue linklerini elle takip eder.
Projeyi kurmadan önce sisteminizde aşağıdaki yazılımların kurulu olduğundan emin olun:
- Node.js (v20 veya üzeri — CI de bu sürümü kullanıyor)
- npm (Node.js ile birlikte gelir)
- Docker & Docker Compose
- Git
git clone https://github.com/Posinowa/AISigner.git
→ Projeyi kendi bilgisayarına indir.
cd AISigner
→ Proje klasörüne geç.
docker compose up -d
→ PostgreSQL veritabanını arka planda başlat.
.envdosyasını oluştur
→ Ortam değişkenlerini.env.exampledosyasına göre tanımla (örnek:DATABASE_URL,AUTH_SECRET— NextAuth v4'ün beklediği değişken adı budur,NEXTAUTH_SECRETdeğil).
npm install
→ Proje bağımlılıklarını yükle (Next.js, Prisma, Argon2 vb.)
npx prisma migrate deployardındannpx prisma generate
→ Repoda hazır bulunan tüm migration'ları veritabanına uygula ve Prisma Client'i üret. (migrate devyalnızca schema.prisma'da yeni bir değişiklik yapıp yeni migration üretirken kullanılır; mevcut projeyi ilk kez ayağa kaldırırkendeploydoğru komuttur.)
npm run seed
→ Demo verisini oluştur: admin/mentor/student kullanıcıları, student'ın mentor'a ataması ve örnek proje şablonları (idempotent — tekrar çalıştırmak duplicate üretmez, bkz. "Seed Nasıl Çalıştırılır?").
npm run dev
→ Uygulamayı başlat (http://localhost:3000adresinde çalışır).
Create Database->PostgreSQL- Örnek ad:
aisigner-db - Bölge: kullanıcı kitlene en yakın bölge (TR için Frankfurt uygun)
- Oluşan connection string'i kopyala
- Outplane
Deploy New ApplicationekranındaPublic Reposeç - Repo URL'sini gir (kendi fork'un veya ana repo)
- Build yöntemi olarak
Dockerfileseç - Port:
3000
Bu repo Outplane için gerekli Docker dosyalarıyla birlikte gelir:
Dockerfile.dockerignore
Container başlangıcında migration otomatik uygulanır:
npx prisma migrate deploy
Outplane uygulamasına aşağıdaki değişkenleri ekle:
DATABASE_URL=<outplane-postgres-connection-string>
AUTH_SECRET=<uzun-rastgele-string>
NEXT_PUBLIC_APP_URL=<outplane-app-url>
NODE_ENV=production
PORT=3000AI özelliklerini de production'da kullanacaksan ek olarak:
GOOGLE_CLOUD_PROJECT=<gcp-project-id>
GOOGLE_CLOUD_LOCATION=us-central1
GOOGLE_APPLICATION_CREDENTIALS=gcp-credentials.jsonve gcp-credentials.json dosyasını Outplane tarafında güvenli dosya/secret olarak mount etmen gerekir.
- Deploy tamamlanınca
/api/healthendpointini kontrol et - Gerekirse Outplane terminalinden seed çalıştır:
npm run seedNOT: Seed sonrası test kullanıcıları
Rol Şifre Admin admin@example.com geçici_şifre Mentor mentor@example.com geçici_şifre Student student@example.com geçici_şifre
Bu kullanıcılarla
/signinüzerinden giriş yapabilir, yönlendirme ve layout guard’ları test edebilirsin.
Adım adım kurulum için yukarıdaki "Hızlı Kurulum" bölümüne bakın. Burada yalnızca sık karşılaşılan sorunlar ve doğrulama komutları var. Modellerin güncel/otoriter tanımı için
prisma/schema.prismadosyasına bakın — bu dosyanın README'de ayrı bir kopyası tutulmuyor (kopyalar zamanla kodla çelişip eskiyor).
Docker/veritabanı çalışıyor mu?
docker compose psTablolar doğru oluştu mu?
docker exec -it aisigner_db bash -c "psql -U postgres -d aisigner -c '\dt'"Prisma Studio ile görsel kontrol (http://localhost:5555):
npx prisma studioMigration/schema uyumsuzluğu yaşıyorsan (yalnızca lokal/geliştirme ortamında — veri kaybına yol açar):
npx prisma migrate resetTest verisi eklemek için npm run seed kullanın (bkz. "Seed Nasıl Çalıştırılır?") — argon2 ile şifreleri güvenli şekilde hash'ler. Elle INSERT ile düz metin şifre eklemeyin.
🔹 Seed (Birleşik Demo Verisi)
npm run seed, lokal geliştirme sırasında hızlıca test edilebilecek bir demo ortamı kurar:admin@example.com/mentor@example.com/student@example.comkullanıcıları,- Student'ın Mentor'a atanmış bir
StudentProfile'ı (deneyim seviyesi, ilgi alanı, hedef, uygunluk), - Örnek proje şablonları (
scripts/seed-projects.ts'ten,seed.tstarafından çağrılır).
- Şifreler güvenli şekilde argon2 ile hashlenir.
- Script tamamen idempotent'tir — kullanıcılar
upsert, profilupsert, proje şablonları title'a göre varlık kontrolüyle oluşturulur. Tekrar çalıştırmak duplicate veri üretmez.
Seed Script Çalıştırma
Seed'i çalıştırmak için terminalden proje klasöründe şu komutu çalıştır:
npm run seed
Script çalıştığında terminalde şöyle bir çıktı görürsün:
✅ ADMIN user created: admin@example.com
✅ MENTOR user created: mentor@example.com
✅ STUDENT user created: student@example.com
✅ Student, mentor'a atandı: student@example.com → mentor@example.com
✅ Proje şablonu eklendi: Kişisel Portföy Web Sitesi
...
🎉 Seed tamamlandı — admin/mentor/student kullanıcıları, mentor-stajyer ataması ve proje şablonları hazır.
Sadece proje şablonlarını ayrıca eklemek/kontrol etmek istersen (örn. mevcut bir DB'ye): tsx scripts/seed-projects.ts.
Bu projede kimlik doğrulama altyapısı NextAuth ile kurulmuştur. Prisma adapter kullanılarak session verileri veritabanında saklanır. Cookie ayarları SameSite=Lax olarak tanımlanmıştır.
Dosya: src/lib/auth/nextauth.ts
Veritabanı bağlantısını test etmek için:
Tarayıcıda: http://localhost:3000/api/health
veya
Terminalde:
curl http://localhost:3000/api/health
Beklenen çıktı:
{
"status": "ok",
"db": "connected",
"timestamp": "2025-09-03T21:44:00.000Z"
}Eğer veritabanı bağlantısı koparsa, status: "error" ve db: "disconnected" döner.
GET /api/health
Bu endpoint SELECT 1 sorgusu ile bağlantıyı kontrol eder.
200 OK→ Bağlantı sağlıklı500 ERROR→ Bağlantı başarısız
Bu modül, öğrencinin kayıt sonrası onboarding sürecini ve profil özetini yönetir.
features/student/ui/OnboardingForm.tsx→ Çok adımlı form bileşenifeatures/student/models/onboarding.ts→ Zod doğrulama şemalarıfeatures/student/server/onboarding.ts→saveOnboarding(data)server actionfeatures/student/server/profileSummary.ts→ AI profil analizi (getProfileSummary) + yedek mock fonksiyonu (getMockProfileSummary)features/student/ui/ProfileSummaryCard.tsx→ Profil özeti bileşeniapp/(student)/student-dashboard/page.tsx→ Öğrenci dashboard sayfası
- Öğrenci
OnboardingFormüzerinden kişisel bilgilerini, deneyim seviyesini ve hedeflerini girer. - Form submit edildiğinde
saveOnboarding()ile veritabanınaStudentProfileolarak kaydedilir. - Ardından
getProfileSummary()ile Gemini AI özeti oluşturulur (hata durumunda mock fallback kullanılır). - Öğrenci
student-dashboardsayfasına yönlendirilir ve profil özeti + proje durumu gösterilir.
Yeni gelen bir geliştirici aşağıdaki adımları izleyerek M2 sürecini uçtan uca test edebilir:
-
npm run devile projeyi başlat -
http://localhost:3000/signin üzerinden test kullanıcısı ile giriş yap:
- E-posta:
student@example.com - Şifre:
geçici_şifre
- E-posta:
-
Oturum açıldıktan sonra http://localhost:3000/profile-setup sayfasına git. (Eski
/student-onboardingURL'i hâlâ çalışır ama/profile-setup'a kalıcı yönlendirme yapar.) -
Formu 3 adımda doldur:
- Kişisel Bilgiler
- Deneyim Seviyesi
- Öğrenme Hedefleri
-
“Gönder” butonuna basıldığında veriler veritabanına kaydedilir (
StudentProfile) -
Ardından
student-dashboardsayfasına yönlendirilirsin -
Dashboard’da:
- Hoşgeldin mesajı
- Profil özeti (mock AI ile)
- Proje durumu (“Henüz proje atanmadı” mesajı)
Onboarding sonrası veriyi doğrulamak için npx prisma studio komutuyla veritabanını görsel olarak inceleyebilirsiniz.
getProfileSummary()fonksiyonu Gemini AI ile profil analizi yapar. Hata durumundagetMockProfileSummary()yedek fonksiyonu devreye girer.
Bu modül, admin ve mentor rollerinin temel işlevlerini kapsar: kullanıcı yönetimi, proje şablonu kontrolü ve öğrenci–proje eşleşmesi.
-
User
- Roller:
ADMIN,MENTOR,STUDENT - Mentor–öğrenci ilişkisi:
- Bir mentorun birden fazla öğrencisi olabilir (
StudentProfile.mentorIdüzerinden). - Bir öğrencinin tek mentor ilişkisi vardır.
- Bir mentorun birden fazla öğrencisi olabilir (
- Roller:
-
StudentProfile (M2’de tanımlandı, M3 ile genişletildi)
- Yeni ilişkiler:
mentorId→ Mentor ile bağlantı.assignedProjects→ Öğrenciye atanmış projeler listesi.
- Yeni ilişkiler:
-
ProjectTemplate
- Admin tarafından tanımlanan proje şablonları.
- Alanlar:
id,title,description (md),difficulty (enum: EASY, MEDIUM, HARD),track (string[]). - İlişki:
assignedProjectsile bağlantılı.
-
AssignedProject
- Mentorun, öğrencisine atadığı projeleri tutar.
- Alanlar:
id,studentProfileId,projectTemplateId,status. - Statü enum:
PENDING,IN_PROGRESS,COMPLETED. - İlişkiler:
studentProfile→ Öğrenciye bağlı.projectTemplate→ Proje şablonuna bağlı.
Amaç
Admin tüm kullanıcıları görüntüleyebilir, rollerini değiştirebilir ve mentor ataması yapabilir.
Dosya Yapısı
- Dosya:
src/features/admin/server/user.tsgetAllUsers()→ Tüm kullanıcıları ve ilişkili profil bilgilerini döndürür.getMentors()→ Sadece mentor rolündeki kullanıcıları listeler.updateUserRole(userId, role)→ Kullanıcının rolünü günceller.assignMentor(studentId, mentorId)→ Öğrenciye mentor atar.
- Dosya:
app/(admin)/admin-dashboard/page.tsx→ Admin UI
Gerçekleştirilenler
- Kullanıcı listesi tablosu.
- Rol değiştirme butonu.
- Mentor atama dropdown.
- Değişiklikler Prisma üzerinden anında DB’ye yansır.
Amaç
Admin proje şablonu ekleyebilir, güncelleyebilir, silebilir, listeleyebilir.
Dosya Yapısı
- Dosya:
src/features/projects/server/templates.ts - Fonksiyonlar:
listTemplates()→ Tüm şablonları listeler (createdAt desc).createTemplate(data)→ Yeni şablon oluşturur.updateTemplate(id, data)→ Şablonu günceller.deleteTemplate(id)→ Şablonu siler.getTemplateById(id)→ Şablonu id ile getirir.
- Alanlar:
difficulty:EASY | MEDIUM | HARDtrack:string[]description: Markdown destekli içerik `
- Dosya:
app/(admin)/admin-dashboard/projects/page.tsx→ UI
Gerçekleştirilenler
- Yeni proje ekleme formu.
- Listeleme tablosu.
- Düzenleme & silme işlemleri.
- Açıklama MD formatında saklanır.
trackalanı çoklu seçim olarak oluşturuldu.
Amaç
Mentor yalnızca kendi öğrencilerini görebilir ve onlara proje atayabilir.
Dosya Yapısı
- Dosya:
app/(mentor)/mentor-dashboard/page.tsx→ Öğrenci listesi - Dosya:
app/(mentor)/mentor-dashboard/[studentId]/page.tsx→ Öğrenci profili + proje atama - Dosya:
features/mentors/server/actions.ts→getMentorStudents(),getStudentDetail(),assignProjectToStudent(),updateProjectStatus()
Gerçekleştirilenler
- Mentor dashboard’da yalnızca kendi öğrencileri listelenir.
- Öğrenci detay sayfasında profil bilgileri ve proje şablonları gösterilir.
- “Projeyi Ata” butonu →
AssignedProjectkaydı oluşturur. - Öğrencinin dashboard’unda proje listesi görünür.
- Admin dashboard üzerinden tüm kullanıcıları görür.
- Kullanıcının rolünü veya mentorunu güncelleyebilir.
- Admin proje şablonlarını ekleyip düzenleyebilir.
- Mentor dashboard’da sadece kendisine atanmış öğrencileri görür.
- Öğrenci detayına girip uygun projeyi seçer ve atar.
- Atanan proje öğrencinin dashboard’unda görünür.
Yeni gelen bir geliştirici aşağıdaki adımları izleyerek M3 sürecini uçtan uca test edebilir:
npm run devile projeyi başlat.- http://localhost:3000/signin üzerinden admin veya mentor hesabı ile giriş yap.
- http://localhost:3000/admin-dashboard
- Kullanıcı listesi tablosunu görüntüle.
- Rol değiştirme butonunu test et.
- Öğrenciler için mentor atama dropdown’unu kullan.
- http://localhost:3000/admin-dashboard/projects
- Yeni proje şablonu ekleme formunu doldur ve kaydet.
- Listeleme tablosunda eklenen şablonun göründüğünü doğrula.
- Düzenleme ve silme işlemlerini test et.
- Markdown açıklamasının DB’de saklandığını ve UI’da render edildiğini kontrol et.
- http://localhost:3000/mentor-dashboard
- Yalnızca kendisine atanmış öğrencilerin listelendiğini doğrula.
- Öğrenci detay sayfasına git:
- Öğrenci profil özetini görüntüle.
- Proje şablonları listesinden seçim yap ve “Projeyi Ata” butonuna bas.
- Atanan projenin öğrencinin dashboard’unda göründüğünü doğrula.
- http://localhost:3000/student-dashboard
- Onboarding sonrası profil özetini görüntüle.
- Mentor tarafından atanmış projelerin listelendiğini kontrol et.
- Admin: Kayıtlı kullanıcıları görür, mentör atar, proje şablonlarını yönetir.
- Mentör: Kendisine atanan öğrenciyi görür, proje atar, roadmap’i onaylar/düzenler.
- Öğrenci: Anketi doldurur, atanan projeyi ve görevlerini takip eder, fork/PR akışında çalışır.
- Öğrenci kayıt olur ve anketi tamamlar.
- AI, öğrencinin seviyesini ve yatkın alanlarını çıkarır (özet).
- Admin, uygun mentörü atar.
- Mentör, proje havuzundan uygun bir proje seçer.
- AI, proje + öğrenci profiline göre bir roadmap üretir (mentör onaylar/düzenler).
- Roadmap adımları GitHub issue/PR döngüsü ile yürütülür.
- Uygulama: Next.js 15 (App Router), TypeScript, TailwindCSS
- Sunucu uçları: Next.js Route Handlers (REST) + Server Actions
- Kimlik doğrulama: NextAuth (Credentials provider, JWT strategy)
- Veritabanı: PostgreSQL + Prisma ORM
- AI servisi: Google Vertex AI (Gemini) — profil analizi, proje önerisi ve roadmap üretimi
- UI: shadcn/ui + Radix UI
Detaylı katkı rehberi için CONTRIBUTING.md dosyasına bakın.
- Fork → branch → PR akışı ile katkı verin.
- Küçük ve odaklı PR’lar tercih edilir.
MIT
Yaklaşım: Feature‑based.
src/
app/ # Next App Router (route segmentleri)
(public)/ # kayıt/anket, landing vb.
(student)/ # öğrenci alanı
(mentor)/ # mentor alanı
(admin)/ # admin alanı
api/ # (gerekirse) route handlers
features/
auth/
ui/ # sayfa ve bileşenler (UI-only)
server/ # server actions, service, repo katmanı
models/ # Zod şemaları, tipler, domain modelleri
lib/ # yardımcı fonksiyonlar (yalnızca feature içi)
hooks/ # client hooks
components/ # feature-özel küçük bileşenler
student/...
mentor/...
admin/...
lib/ # app-geneli yardımcılar (fetcher, auth guard)
styles/ # global css/tailwind
prisma/
schema.prisma # yalnızca veritabanı şeması (Prisma)
- Şemalar (schemas):
- Veritabanı şeması yalnızca
prisma/schema.prismaiçinde tutulur. - Uygulama/doğrulama şemaları (Zod) ilgili feature altında
models/içinde tanımlanır.
- Veritabanı şeması yalnızca
- Dışa Açık API: Route Handlers →
features/<feature>/serverfonksiyonlarını çağırır. UI bu katmana doğrudan erişmez. - İsimlendirme: Dosya/klsr: kebab-case, React bileşenleri: PascalCase, tip/şema:
PascalCase, env anahtarları:SCREAMING_SNAKE_CASE. - İçe Aktarım:
@/*alias (mutlak import); feature dışından içeri bağımlılık minimum. - Stil/UI: Tailwind + shadcn/ui. Bileşenler erişilebilirlik (a11y) kurallarına uyar.
- Durum Yönetimi: Öncelik server actions; gerekli yerde minimal client state. (İleride React Query opsiyonel.)
- Güvenlik: Server-only işlemler Route Handler/Server Action’da kalır; gizli anahtarlar client’a sızmaz. HttpOnly cookie, SameSite=Lax.
- Kod Kalitesi: TypeScript strict, ESLint + Prettier zorunlu; küçük ve odaklı PR.
- Commit/Branch: Conventional Commits (
feat:,fix:,chore:…), branch:feat/<scope>-kısa-açıklama. - PR Kuralları: “Ne değişti?” + “Nasıl test edilir?” zorunlu; ekran görüntüsü/gif teşvik edilir.
Uygulama Next.js App Router mimarisiyle yapılandırılmıştır. Dosya sistemi route, rol ve işlev bazlı organize edilmiştir.
├── prisma/
│ ├── schema.prisma # Veritabanı modeli tanımları (User, Session, Role)
│ ├── migrations/ # Prisma migration dosyaları
├── public/ # Statik dosyalar (favicon, resimler vs.)
├── scripts/
│ ├── seed.ts # Birleşik demo seed (kullanıcılar + mentor-stajyer + proje şablonları)
│ └── seed-projects.ts # Örnek proje şablonları (seed.ts tarafından çağrılır)
├── src/
│ ├── app/
│ │ ├── (admin)/ # Admin'e özel route grubu
│ │ │ ├── admin-dashboard/
| | | ├ |── projects/ # Proje şablonu yönetim ekranları
│ │ │ └── layout.tsx # Admin layout guard (RBAC kontrolü)
│ │ ├── (mentor)/ # Mentör'e özel route grubu
│ │ │ ├── mentor-dashboard/
| | | | ├──[studentId]
│ │ │ └── layout.tsx
│ │ ├── (student)/ # Öğrenci'ye özel route grubu
| | | ├── student-dashboard/
| | | ├── profile-setup/ # Öğrenci onboarding/profil formu (gerçek sayfa)
| | | ├── student-onboarding/ # Eski URL — /profile-setup'a kalıcı yönlendirme
│ │ │ └── layout.tsx
│ │ ├── (auth)/ # Giriş / Kayıt / Çıkış sayfaları
│ │ │ ├── signin/
│ │ │ │ ├── page.tsx # Giriş formu
│ │ │ │ └── actions.ts # Giriş işlemi (server action)
│ │ │ ├── signup/
│ │ │ │ ├── page.tsx # Kayıt formu
│ │ │ │ └── actions.ts # Kayıt işlemi
│ │ │ ├── signout/
│ │ │ │ └── SignoutButton.tsx
│ │ ├── api/
│ │ │ ├── auth/
│ │ │ │ └── [...nextauth]/route.ts # NextAuth endpoint
│ │ │ ├── health/
│ │ │ │ └── route.ts # Veritabanı bağlantı kontrolü
│ │ │── debug/
│ │ │ ├── layout.tsx
│ │ │ └── page.tsx
├── components/
│ ├── DebugNavbar.tsx # Oturum bilgisi gösteren debug bileşeni
│ └── SessionProvider.tsx # NextAuth session sağlayıcısı (client context)
├── features/
│ |└── auth/modules/
│ | └── user.ts # Auth işlemleri ve Zod şemaları
│ ├── student/ui/
│ │ ├── OnboardingForm.tsx # Çok adımlı öğrenci onboarding formu
│ │ └── ProfileSummaryCard.tsx # Profil özeti bileşeni (AI + mock fallback)
│ ├── student/models/
│ │ └── onboarding.ts # Zod doğrulama şemaları (kişisel, deneyim, hedef)
│ ├── student/server/
│ │ ├── onboarding.ts # `saveOnboarding(data)` server action
│ │ └── profileSummary.ts # `getProfileSummary()` + `getMockProfileSummary()` fonksiyonu
|
├── lib/
│ ├── auth/
│ │ ├── nextauth.ts # NextAuth konfigürasyonu
│ │ ├── guard.ts # API route auth guard fonksiyonu
│ │ ├── prisma.ts # Prisma client instance
│ └── db.ts # Prisma veritabanı erişimi
├── types/
│ └── next-auth.d.ts # NextAuth tip genişletmeleri (Session, JWT, User)
- Next.js 15 + TS + Tailwind iskeleti, README ve lisans.
Veritabanı altyapısı: PostgreSQL (Docker Compose) + Prisma kurulumu
UserveRolemodeli tanımlandı- Prisma singleton (
src/lib/db.ts) ile bağlantı yönetimi sağlandı
Seed sistemi:
npm run seedile 1 admin, 1 mentor, 1 öğrenci + mentor-stajyer ataması + örnek proje şablonları oluşturuluyor (birleşik, idempotent akış — bkz. "Seed Nasıl Çalıştırılır?")- Şifreler hashlenmiş (
argon2) ve veritabanına kaydediliyor - Test kullanıcıları:
admin@example.com,mentor@example.com,student@example.com
Kimlik doğrulama (Auth):
- NextAuth kullanıldı (Lucia önerisi değerlendirildi)
src/app/api/auth/[...nextauth]/route.tsiçinde yapılandırıldı- Oturum yönetimi:
getServerSession(authOptions) - Giriş/kayıt akışı tamamlandı
RBAC (Role-Based Access Control):
- Rol bazlı layout guard’ları:
src/app/(admin|mentor|student)/layout.tsx session.user.rolekontrolü ile yönlendirme sağlanıyor- Giriş yapılmamış kullanıcılar
/signinsayfasına yönlendiriliyor
Healthcheck endpoint:
GET /api/health→ veritabanı bağlantısını kontrol eder- JSON çıktısı:
{ status, db, timestamp } - README’ye açıklayıcı not eklendi
Hızlı Başlangıç rehberi:
git clone → docker compose up -d → .env → migrate → seed → devadımları- README’de eksiksiz ve birebir uygulanabilir şekilde belgelendi
Çok adımlı anket formu:
features/student/ui/OnboardingForm.tsxiçinde ShadCN bileşenleriyle oluşturuldu- Adımlar: Kişisel Bilgiler → Deneyim → Hedefler
- Doğrulama:
features/student/models/onboarding.tsiçinde Zod şemaları - Progress bar ve stepper ile kullanıcı yönlendirmesi sağlandı
Veri kaydı (Server Action):
features/student/server/onboarding.ts→saveOnboarding(data)fonksiyonuprisma/schema.prisma→StudentProfilemodeli:userId,experienceLevel,interests,goals,availability,birthYear- Idempotent kayıt: aynı kullanıcıya tekrar çalıştırıldığında veri güncellenir
- Başarılı işlem sonrası redirect:
/app/(student)/student-dashboard
Profil özeti (Gemini AI):
features/student/server/profileSummary.ts→getProfileSummary()fonksiyonu (Gemini AI ile analiz, hata durumunda mock fallback)- Örnek response:
{ level, tracks, summary, recommendations } - UI:
features/student/ui/ProfileSummaryCard.tsxbileşeni ile gösterilir
Dashboard entegrasyonu:
app/(student)/student-dashboard/page.tsx→ Öğrenci verisi veritabanından çekilir- Hoşgeldin mesajı, profil özeti ve proje durumu gösterilir
- Proje henüz atanmadıysa bilgilendirici mesaj render edilir
- Admin: kullanıcı listesi, rol/mentör atama ekranı.
- Proje Havuzu (Admin): şablon CRUD, markdown editörü, zorluk/track alanları.
- Mentor: öğrenci detayında öneri sıralaması ile proje seçimi.
- AI ile roadmap taslağı üret; mentor düzenleyip yayınlar (yalnızca taslak aşaması, görevleştirmeyi sonraya bırakabiliriz).
- Dokümantasyon: fork → branch → PR akışı,
ghCLI yönergeleri. - (Opsiyon) PR/Issue read‑only durumlarını uygulamada göstermek için webhook/cron okuma taslağı.
- Öğrenci/Mentor yorum alanları (uygulama içi), ilerleme yüzdesi, bildirim taslağı.
- CI (lint/typecheck/test/build), e2e test iskeleti, güvenlik/gizlilik gözden geçirme.
Not: Bu roadmap yön göstericidir. Her milestone küçük PR’lara bölünmelidir; detaylı “tasklandırma” issue’larda yapılacaktır.



