Files
ytp/README.md
2025-11-03 23:12:45 +03:00

191 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Yakıt Takip Sistemi (YTP)
**Türk Silahlı Kuvvetleri Akaryakıt İkmal ve Yönetim Sistemi**
TSK bünyesindeki akaryakıt istasyonlarında yakıt ikmal süreçlerini dijital ortama taşıyan, rol bazlı yetkilendirme ile stok takibi ve fiş yönetimi sağlayan modern bir web uygulaması.
## 🚀 Özellikler
### 🎯 Rol Bazlı Erişim Sistemi
- **Admin**: Tüm sistem kullanıcılarını ve kaynakları yönetir
- **Yakıt Sorumlusu**: Yakıt fişleri oluşturur, süreci yönetir
- **Mal Sorumlusu**: Atanan yakıt fişlerini onaylar/reddeder
### ⚡ Gerçek Zamanlı İşlemler
- Socket.IO tabanlı anında bildirimler
- Otomatik güncellemeler ve durum takibi
- Çoklu kullanıcı desteği
### 📊 Kapsamlı Yönetim
- **Araç Yönetimi**: Plaka, marka, model, yıl bilgileri
- **Birim Yönetimi**: Adres, STK/BTK, sorumlu kişi bilgileri
- **Personel Yönetimi**: Yakıt personeli kayıt ve takibi
- **Fiş Yönetimi**: Oluşturma, onay, red ve arşivleme
### 📋 Dijital Fiş Sistemi
- Otomatik fiş numarası üretimi
- PDF formatında resmi fiş çıkarma
- Tüm kuvvetler için destek (MSB, K.K.K., Dz.K.K., Hv.K.K., SGK, Gnkur. Bşk., Hrt.Gn.K.)
### 🔒 Güvenlik
- Token bazlı oturum yönetimi
- Rol bazlı yetkilendirme
- SQLite veritabanı güvenliği
## 🏗️ Teknik Mimari
### Backend
- **Node.js + Express**: REST API sunucusu
- **Socket.IO**: Gerçek zamanlu iletişim
- **SQLite3**: Hafif veritabanı
- **PDFKit**: PDF belge oluşturma
- **CORS**: Çapraz kaynak paylaşımı
### Frontend
- **Svelte 4**: Modern ve reaktif UI kütüphanesi
- **Vite**: Hızlı geliştirme ve build aracı
- **Socket.IO Client**: Gerçek zamanlu istemci
- **Font Awesome**: İkon kütüphanesi
### Veritabanı
- **SQLite**: Hafif ve taşınabilir veritabanı
- **Foreign Key** desteği ile veri bütünlüğü
- **Otomatik yedekleme ve migration
## 📁 Proje Yapısı
```
ytp/
├── client/ # Frontend uygulaması
│ ├── src/
│ │ ├── components/ # Svelte bileşenleri
│ │ │ ├── LoginView.svelte # Giriş ekranı
│ │ │ ├── AdminPanel.svelte # Admin paneli
│ │ │ ├── FuelManagerPanel.svelte # Yakıt sorumlusu paneli
│ │ │ ├── InventoryManagerPanel.svelte # Mal sorumlusu paneli
│ │ │ └── RoleWelcome.svelte # Rol karşılama ekranı
│ │ ├── lib/ # Yardımcı kütüphaneler
│ │ │ └── numberToWordsTr.js # Sayıdan metne çeviri
│ │ ├── api.js # API istemcisi
│ │ ├── app.css # Ana stil dosyası
│ │ ├── main.js # Uygulama giriş noktası
│ │ └── App.svelte # Ana uygulama bileşeni
│ ├── package.json # Frontend bağımlılıkları
│ ├── vite.config.js # Vite yapılandırması
│ └── svelte.config.js # Svelte yapılandırması
├── server/ # Backend uygulaması
│ ├── index.js # Express sunucusu
│ ├── db.js # Veritabanı işlemleri
│ └── db-init.js # Veritabanı başlangıç
├── data/ # Veritabanı dosyaları
│ └── app.db # SQLite veritabanı
└── package.json # Proje bağımlılıkları
```
## 🚀 Kurulum
### Gereksinimler
- Node.js 16+
- npm 7+
- SQLite3 (otomatik yüklenir)
### Adım 1: Projeyi Klonlayın
```bash
git clone <repository-url>
cd ytp
```
### Adım 2: Bağımlılıkları Yükleyin
```bash
# Ana proje bağımlılıkları
npm install
# Frontend bağımlılıkları
cd client
npm install
cd ..
```
### Adım 3: Veritabanını Başlatın
```bash
npm run prepare:db
```
### Adım 4: Uygulamayı Çalıştırın
```bash
# Geliştirme modunda çalıştırma
npm run dev
# Veya sadece sunucuyu başlatma
npm run start:server
```
### Adım 5: Tarayıcıda Açın
Uygulama `http://localhost:5005` adresinde çalışacaktır.
## 👤 Varsayılan Kullanıcılar
Sistem ilk kurulumda aşağıdaki test kullanıcılarını oluşturur:
| Rol | Kullanıcı Adı | Şifre | Açıklama |
|-----|--------------|-------|----------|
| Admin | `admin` | `Admin!123` | Sistem yöneticisi |
| Yakıt Sorumlusu | `yakitsorum` | `Yakit@123` | Yakıt fişi oluşturabilir |
| Mal Sorumlusu | `malsorum1` | `Mal@123` | Fiş onay/reddeder |
## 📚 API Dokümantasyonu
### Kimlik Doğrulama
- `POST /api/auth/login` - Giriş
- `POST /api/auth/logout` - Çıkış
- `GET /api/session` - Oturum bilgisi
### Yönetim (Admin)
- `GET/POST/PUT/DELETE /api/inventory-managers` - Mal sorumluları
- `GET/POST/PUT/DELETE /api/vehicles` - Araçlar
- `GET/POST/PUT/DELETE /api/units` - Birlikler
- `GET/POST/PUT/DELETE /api/fuel-personnel` - Personel
### Yakıt İşlemleri
- `GET /api/fuel/resources` - Kaynak bilgileri
- `GET /api/fuel-slips` - Tüm fişler
- `POST /api/fuel-slips` - Fiş oluştur
- `GET /api/fuel-slips/:id/pdf` - PDF indir
- `PATCH /api/fuel-slips/:id/status` - Durum güncelle
## 🔧 Geliştirme
### Proje Özellikleri
- **Responsive Tasarım**: Mobil uyumlu arayüz
- **Real-time Updates**: Socket.IO ile anında bildirimler
- **Type Safety**: JavaScript tabanlı yapı
- **Modern CSS**: Flexbox/Grid tabanlı responsive design
- **Error Handling**: Kapsamlı hata yönetimi
- **Session Management**: Güvenli oturum yönetimi
### Kod Standartları
- ESLint kullanımı önerilir
- Bileşen tabanlı geliştirme
- Clean Code prensipleri
- Responsive first design
## 📄 Lisans
Bu proje ISC lisansı ile lisanslanmıştır.
## 🤝 Katkıda Bulunma
1. Projeyi fork edin
2. Geliştirme branch'ini oluşturun (`git checkout -b feature/AmazingFeature`)
3. Değişikliklerinizi commit edin (`git commit -m 'Add some AmazingFeature'`)
4. Branch'e push edin (`git push origin feature/AmazingFeature`)
5. Pull Request oluşturun
## 📞 Destek
Geliştirici: [İletişim Bilgileri]
Proje Sayfası: [GitHub Repository]
---
**Not**: Bu proje TSK bünyesindeki akaryakıt yönetim süreçlerini dijitalleştirmek amacıyla geliştirilmiş örnek bir uygulamadır.