İki ayrı panel içeren görev onay sistemi: User Panel (çalışan talebi) ve Admin Panel (yönetici onayı).
- User Panel: https://internal-requests-user-panel.vercel.app
- Admin Panel: https://internal-requests-panel-admin-panel.vercel.app
- Backend API: https://internal-requests-panel-production.up.railway.app
Test kullanıcıları aşağıda listelenmiştir.
task-approval-system/
├── user-panel/ → Çalışan paneli (port: 3000)
├── admin-panel/ → Yönetici paneli (port: 3001)
├── shared-ui/ → Paylaşılan UI component kütüphanesi
├── mock-api/ → JSON Server mock API (port: 4000)
└── README.md → Bu dosya
cd mock-api
npm install
npm run devMock API http://localhost:4000 adresinde çalışacaktır.
cd user-panel
npm install
npm run devUser Panel http://localhost:3000 adresinde çalışacaktır.
cd admin-panel
npm install
npm run devAdmin Panel http://localhost:3001 adresinde çalışacaktır.
- Email: user1@test.com | Şifre: 123456
- Email: user2@test.com | Şifre: 123456
| Şifre | Rol | |
|---|---|---|
| admin@test.com | admin123 | Admin |
| moderator@test.com | mod123 | Moderator |
| viewer@test.com | viewer123 | Viewer |
- React 19 - UI kütüphanesi
- TypeScript - Tip güvenliği
- Redux Toolkit - State yönetimi
- React Router - Routing
- Axios - HTTP client
- React Hook Form + Zod - Form yönetimi ve validation
- SCSS Modules - Stil yönetimi
- Vite - Build tool
- @task-approval/shared-ui - Paylaşılan component kütüphanesi
- Badge, PriorityBadge, StatusBadge
- Spinner, Tooltip
- Toast: Her panelde
react-hot-toastkullanılıyor (hooks uyumluluğu için)
- Express.js - RESTful API server
- Socket.io - Real-time WebSocket communication
- ✅ Login/Logout
- ✅ Dashboard (istatistikler)
- ✅ Talep Oluşturma (form validation ile)
- ✅ Taleplerim (filtreleme, detay görüntüleme)
- ✅ Status badge'leri (pending, approved, rejected)
- ✅ Priority badge'leri (low, normal, high, urgent)
- ✅ Real-time updates (Socket.io)
- ✅ Login/Logout (rol bazlı)
- ✅ Dashboard (bekleyen talep istatistikleri)
- ✅ Bekleyen Talepler (onay/red işlemleri, filtreleme, arama)
- ✅ Tüm Talepler (filtreleme, pagination)
- ✅ Kullanıcı Yönetimi (CRUD, sadece Admin rolü)
- ✅ Rol bazlı erişim kontrolü
- ✅ Real-time updates (Socket.io)
- ✅ Dark/Light theme
// user-panel veya admin-panel içinde
import {
Badge,
PriorityBadge,
StatusBadge,
Spinner,
Tooltip,
} from "@task-approval/shared-ui";
function MyComponent() {
return (
<div>
<PriorityBadge priority="high" />
<StatusBadge status="pending" />
<Spinner />
</div>
);
}Shared UI'da değişiklik yaptıysanız:
cd shared-ui
npm run build
# Sonra panellerde yeniden yükleyin
cd ../user-panel
npm install
cd ../admin-panel
npm installMock API (http://localhost:4000)
GET /users- Kullanıcı listesiGET /tasks- Görev listesiPOST /tasks- Yeni görev oluşturPATCH /tasks/:id- Görev güncelleGET /adminUsers- Admin kullanıcı listesiPOST /adminUsers- Yeni admin kullanıcı ekle
{
"id": "t1",
"title": "VPN bağlantısı kopuyor",
"description": "Evden çalışırken VPN sürekli kopuyor",
"priority": "high",
"category": "Teknik Destek",
"status": "pending",
"createdBy": "u1",
"createdAt": "2026-01-18T08:10:00.000Z",
"rejectionReason": null
}- Her panel bağımsız çalışabilir
- Shared UI components ile kod tekrarı önlendi
- Local workspace packages kullanıldı (
file:../shared-ui)
- Redux Toolkit ile merkezi state yönetimi
createAsyncThunkile async işlemler- Slice pattern ile modüler yapı
- React Hook Form performans için
- Zod schema validation
- Type-safe form handling
- SCSS Modules ile scope'lu stiller
- Paylaşılan componentlerde inline styles (portability)
- Axios instance ile merkezi config
- Express.js ve Socket.io ile real-time API
- Frontend'de auth state yönetimi
cd user-panel
npm run buildBuild dosyaları user-panel/dist klasöründe oluşur.
cd admin-panel
npm run buildBuild dosyaları admin-panel/dist klasöründe oluşur.
- 🌍 Localization (i18n) desteği
MIT License - Open source olarak kullanıma açıktır. Detaylar için LICENSE dosyasına bakın.