SkillMap, SAP uzmanlarını kategorize etmek, filtrelemek ve eşleştirmek için geliştirilmiş modern bir web uygulamasıdır. Sistem, üç farklı kullanıcı rolü (Owner, Partner, Müşteri) ile çalışır ve PII maskeleme özelliği sunar.
- Rol Tabanlı Erişim Kontrolü (RBAC): Owner, Partner Admin, Partner User rolleri
- PII Maskeleme: Müşteri görünümü için kişisel bilgilerin maskelenmesi
- Gelişmiş Filtreleme: Tag tabanlı arama ve skorlama sistemi
- Public Katalog: Girişsiz erişim ile profil arama
- İletişim Talebi Sistemi: Müşterilerden gelen taleplerin yönetimi
- Partner organizasyonları ekler/siler
- Tüm profilleri görüntüler ve düzenler
- Tag sözlüğünü yönetir
- İletişim taleplerini işler
- Sistem genelinde tam yetki
- Kendi organizasyonunun profillerini yönetir
- Yeni çalışan profilleri ekler
- Diğer organizasyonların profillerini maskeli görür
- Sadece kendi profilini görüntüler ve düzenler
- Girişsiz katalog araması
- Maskeli profil kartları görür
- İletişim talebi gönderir
- Frontend: Next.js 15 (App Router), React, TypeScript
- Backend: Next.js API Routes, Supabase
- Veritabanı: PostgreSQL (Supabase)
- Kimlik Doğrulama: Supabase Auth
- Styling: Tailwind CSS
- UI Bileşenleri: Custom UI components
- Icons: Lucide React
- Node.js 18+
- npm veya yarn
- Supabase hesabı
-
Projeyi klonlayın
git clone <repo-url> cd skillmap-inopeak
-
Bağımlılıkları yükleyin
npm install
-
Environment variables'ları ayarlayın
.env.local
dosyası oluşturun:NEXT_PUBLIC_SUPABASE_URL=https://rwvcngqooxdvsmgyqluz.supabase.co/ NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ3dmNuZ3Fvb3hkdnNtZ3lxbHV6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTgwMDQ0MDksImV4cCI6MjA3MzU4MDQwOX0.GZLipQ8-1av8SK1xc6K5clJnc6vK0Q1j-y84h62q494 SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
-
Supabase veritabanını kurun
# Supabase CLI ile migration'ları çalıştırın supabase db reset # Veya manuel olarak SQL dosyalarını çalıştırın: # 1. supabase/migrations/001_initial_schema.sql # 2. supabase/migrations/002_rls_policies.sql # 3. supabase/seed.sql (test verileri için)
-
Geliştirme sunucusunu başlatın
npm run dev
Uygulama http://localhost:3000 adresinde çalışacaktır.
organizations
: Organizasyon bilgileri (Owner/Partner)users
: Kullanıcı hesapları ve rolleriprofiles
: Çalışan profilleri (PII + mesleki bilgiler)experiences
: Proje deneyimleritags
: Master tag sözlüğü (modül, teknoloji, rol, vs.)profile_tags
: Profil-tag ilişkileri (N:N)contact_requests
: Müşteri iletişim talepleriaudit_logs
: Sistem aktivite kayıtları
- module: SAP-MM, SAP-FI, SAP-SD, vs.
- tech: ABAP-OO, Fiori, BTP, CDS, vs.
- role: Lead, Senior, Mid, Junior, vs.
- scope: FullCycle, Support
- sector: Pharma, E-Commerce, Automotive, vs.
- lang: TR-Native, EN-B1, EN-B2, vs.
- level: 1y+, 3y+, 5y+, 8y+
- Supabase RLS politikaları ile veri erişim kontrolü
- Kullanıcı rolüne göre otomatik filtreleme
- Organizasyon bazlı veri izolasyonu
- İsim maskeleme: "Ahmet Yılmaz" → "A* Y***"
- E-posta maskeleme: "user@domain.com" → "u***@d***"
- Müşteri adı maskeleme: Sektör genellemesi
- Telefon maskeleme: Tam gizleme
- Tüm CRUD operasyonları kayıt altına alınır
- Kullanıcı aktiviteleri izlenir
- Metadata ile detaylı log tutma
- http://localhost:3000 adresine gidin
- Arama çubuğuna teknoloji/modül yazın
- "Filtrele" butonu ile gelişmiş filtreleri açın
- SAP modülleri, teknolojiler, deneyim seviyesi seçin
- Sonuçları görüntüleyin ve "İletişim" butonuna tıklayın
/login
sayfasından giriş yapın (owner hesabıyla)- Dashboard'dan hızlı erişim menüsünü kullanın
- Partner yönetimi, tag sözlüğü, profil yönetimi
- İletişim taleplerini inceleyin ve yanıtlayın
- Partner admin hesabıyla giriş yapın
- "Çalışanlarım" bölümünden profilleri yönetin
- "Yeni Profil Ekle" ile CV ekleme sihirbazını kullanın
- 3 adımlı süreç: Temel bilgiler → Deneyimler → Tag seçimi
src/
├── app/ # Next.js App Router
│ ├── api/ # API routes
│ ├── dashboard/ # Dashboard sayfaları
│ ├── login/ # Auth sayfaları
│ └── page.tsx # Ana sayfa (Public katalog)
├── components/
│ └── ui/ # UI bileşenleri
├── contexts/ # React contexts
├── lib/ # Utility fonksiyonları
├── types/ # TypeScript tipleri
└── styles/ # CSS dosyaları
supabase/
├── migrations/ # Veritabanı migration'ları
└── seed.sql # Test verileri
GET /api/tags
- Tag listesiGET /api/profiles
- Profil arama (filtreleme destekli)POST /api/profiles
- Yeni profil oluşturmaGET /api/contact-requests
- İletişim talepleri (Owner)POST /api/contact-requests
- Yeni iletişim talebi
Skor = (Module eşleşmesi × 3) +
(Tech eşleşmesi × 2) +
(Role eşleşmesi × 2) +
(Scope eşleşmesi × 2) +
(Sector eşleşmesi × 1) +
(Language eşleşmesi × 1) +
(Kıdem yakınlığı × 1) +
(Güncellik bonusu × 1)
Sistem, supabase/seed.sql
dosyasında tanımlı test verileri ile gelir:
- 1 Owner organizasyonu (InoPeak Technologies)
- 2 Partner organizasyonu (TechPartner A, ConsultCorp B)
- 5 kullanıcı (farklı rollerle)
- 6 örnek profil (farklı uzmanlık alanları)
- Kapsamlı tag sözlüğü
- Örnek iletişim talepleri
- Vercel hesabınıza projeyi import edin
- Environment variables'ları Vercel dashboard'da ayarlayın
- Supabase production veritabanını kurun
- Migration'ları production'da çalıştırın
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_production_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_production_service_role_key
Bu proje MIT lisansı altında lisanslanmıştır.
- Fork edin
- Feature branch oluşturun (
git checkout -b feature/amazing-feature
) - Değişikliklerinizi commit edin (
git commit -m 'Add amazing feature'
) - Branch'inizi push edin (
git push origin feature/amazing-feature
) - Pull Request oluşturun
Proje hakkında sorularınız için issue oluşturabilirsiniz.