191 lines
6.1 KiB
Markdown
191 lines
6.1 KiB
Markdown
# 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. |