# Proje Yapısı Dokümantasyonu Yakıt Takip Sistemi proje dosya yapısı, organizasyon ve mimari desenleri hakkında detaylı bilgi. ## 📋 İçerik - [Genel Bakış](#genel-bakış) - [Dizin Yapısı](#dizin-yapısı) - [Frontend Mimarisi](#frontend-mimarisi) - [Backend Mimarisi](#backend-mimarisi) - [Veri Akışı](#veri-akışı) - [Kurallar ve Standartlar](#kurallar-ve-standartlar) ## 🎯 Genel Bakış ### Proje Türü - **Tip**: Full-stack Web Uygulaması - **Mimari**: Client-Server - **Deployment**: Monolitik - **Database**: SQLite (file-based) ### Teknoloji Stack - **Frontend**: Svelte + Vite - **Backend**: Node.js + Express - **Real-time**: Socket.IO - **Database**: SQLite3 - **Styling**: CSS3 (no framework) - **Build**: Vite ### Geliştirme Yaklaşımı - **Component-based**: Bileşen tabanlı geliştirme - **API-first**: API odaklı tasarım - **Role-based**: Rol bazlı yetkilendirme - **Responsive**: Mobil uyumlu tasarım ## 📁 Dizin Yapısı ``` ytp/ ├── 📂 client/ # Frontend uygulaması │ ├── 📂 src/ │ │ ├── 📂 components/ # Svelte bileşenleri │ │ │ ├── 📄 LoginView.svelte │ │ │ ├── 📄 AdminPanel.svelte │ │ │ ├── 📄 FuelManagerPanel.svelte │ │ │ ├── 📄 InventoryManagerPanel.svelte │ │ │ └── 📄 RoleWelcome.svelte │ │ ├── 📂 lib/ # Yardımcı kütüphaneler │ │ │ └── 📄 numberToWordsTr.js │ │ ├── 📄 api.js # API istemcisi │ │ ├── 📄 app.css # Ana stil dosyası │ │ ├── 📄 main.js # Uygulama giriş noktası │ │ └── 📄 App.svelte # Ana uygulama bileşeni │ ├── 📄 index.html # HTML template │ ├── 📄 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ı ├── 📂 docs/ # Dokümantasyon │ ├── 📄 README.md │ ├── 📄 API.md │ ├── 📄 DATABASE.md │ ├── 📄 STRUCTURE.md │ └── 📄 DEPLOYMENT.md ├── 📄 package.json # Proje bağımlılıkları └── 📄 README.md # Proje açıklaması ``` ## 🎨 Frontend Mimarisi ### Component Hiyerarşisi ``` App.svelte (Ana uygulama) ├── LoginView.svelte (Giriş) ├── RoleWelcome.svelte (Karşılama) ├── AdminPanel.svelte (Admin paneli) ├── FuelManagerPanel.svelte (Yakıt sorumlusu) └── InventoryManagerPanel.svelte (Mal sorumlusu) ``` ### Dosya Açıklamaları #### App.svelte - **Amaç**: Ana uygulama bileşeni ve routing - **Sorumluluklar**: - Oturum yönetimi - Routing mantığı - Global durum yönetimi - Temel layout #### components/LoginView.svelte - **Amaç**: Kullanıcı giriş arayüzü - **Features**: - Form validasyonu - Hata yönetimi - Başarılı giriş olayı - Responsive tasarım #### components/AdminPanel.svelte - **Amaç**: Admin yönetim paneli - **Features**: - CRUD operasyonları - Tablo gösterimi - Form yönetimi - Modal dialoglar #### components/FuelManagerPanel.svelte - **Amaç**: Yakıt sorumlusu paneli - **Features**: - Fiş oluşturma - Kaynak yönetimi - Socket.IO entegrasyonu - PDF indirme #### components/InventoryManagerPanel.svelte - **Amaç**: Mal sorumlusu paneli - **Features**: - Fiş onay/reddetme - Atanan fiş listesi - Socket.IO bildirimleri - Durum yönetimi #### lib/numberToWordsTr.js - **Amaç**: Sayıları Türkçe metne çevirme - **Kullanım**: PDF fişlerde rakam→yazı dönüşümü #### api.js - **Amaç**: API istemcisi - **Features**: - HTTP istekleri - Error handling - Token yönetimi - Base URL konfigürasyonu ### State Management - **Local State**: Svelte reaktif değişkenleri - **Session Storage**: Token ve oturum bilgileri - **Prop Drilling**: Component veri akışı - **Custom Events**: Component haberleşmesi ### Styling Architecture - **CSS3**: Modern CSS özellikleri - **CSS Variables**: Tema ve renk yönetimi - **Flexbox/Grid**: Responsive layout - **Mobile-first**: Responsive tasarım yaklaşımı ## ⚙️ Backend Mimarisi ### Server Structure ``` server/ ├── index.js # Ana Express sunucusu ├── db.js # Veritabanı katmanı └── db-init.js # Veritabanı başlangıç ``` ### index.js - Express Sunucusu **Amaç**: Ana uygulama sunucusu **Bileşenler**: - **HTTP Server**: Express.js uygulaması - **WebSocket Server**: Socket.IO sunucusu - **Authentication**: Token bazlı kimlik doğrulama - **Authorization**: Rol bazlı yetkilendirme - **API Routes**: RESTful endpoint'ler - **Middleware**: CORS, JSON parsing, logging **Route Structure**: ```javascript // Authentication POST /api/auth/login POST /api/auth/logout GET /api/session // Admin routes CRUD /api/inventory-managers CRUD /api/vehicles CRUD /api/units CRUD /api/fuel-personnel // Fuel Manager routes GET /api/fuel/resources GET /api/fuel-slips POST /api/fuel-slips GET /api/fuel-slips/:id/pdf // Inventory Manager routes GET /api/fuel-slips/assigned PATCH /api/fuel-slips/:id/status ``` ### db.js - Veritabanı Katmanı **Amaç**: Veritabanı işlemleri ve model yönetimi **Features**: - **Connection Management**: SQLite bağlantısı - **Schema Management**: Tablo oluşturma ve migration - **CRUD Operations**: Create, Read, Update, Delete - **Data Validation**: Veri doğrulama ve constraint'ler - **Error Handling**: Veritabanı hata yönetimi - **Sample Data**: Başlangıç verileri **Function Groups**: ```javascript // User management getUserByUsername() createInventoryManager() listInventoryManagers() updateInventoryManager() deleteInventoryManager() // Vehicle management createVehicle() listVehicles() updateVehicle() deleteVehicle() getVehicleById() // Unit management createUnit() listUnits() updateUnit() deleteUnit() getUnitById() // Personnel management createFuelPersonnel() listFuelPersonnel() updateFuelPersonnel() deleteFuelPersonnel() getFuelPersonnelById() // Fuel slip management createFuelSlip() listFuelSlips() listFuelSlipsByInventoryManager() getFuelSlipById() updateFuelSlipStatus() ``` ### db-init.js - Veritabanı Başlangıç **Amaç**: Veritabanı başlangıç ve örnek veriler **Features**: - **Schema Creation**: Tablo oluşturma script'i - **Sample Data**: Test verileri - **Migration**: Versiyon geçişleri - **Data Seeding**: Başlangıç verileri ## 🔄 Veri Akışı ### Authentication Flow ``` 1. Kullanıcı giriş formu doldurur 2. Client → POST /api/auth/login 3. Server validates credentials 4. Server creates session token 5. Server returns token + user data 6. Client stores token (localStorage) 7. Client includes token in headers 8. Server validates token (middleware) ``` ### Real-time Communication Flow ``` 1. Client connects with token 2. Server validates and authenticates 3. Server adds client to appropriate rooms 4. Server emits events to relevant clients 5. Client handles events and updates UI ``` ### Fuel Slip Creation Flow ``` 1. Fuel Manager fills form 2. Client validates form data 3. Client → POST /api/fuel-slips 4. Server validates data 5. Server creates fuel slip 6. Server generates slip number 7. Server saves to database 8. Server emits to Inventory Manager 9. Server emits confirmation to Fuel Manager 10. Client updates UI ``` ### Approval Flow ``` 1. Inventory Manager reviews slip 2. Client → PATCH /api/fuel-slips/:id/status 3. Server validates permissions 4. Server updates status 5. Server emits to Fuel Manager 6. Server emits confirmation to Inventory Manager 7. Client updates UI ``` ## 📏 Kurallar ve Standartlar ### Kodlama Standartları #### JavaScript/Node.js - **ES6+**: Modern JavaScript özellikleri - **CamelCase**: Değişken ve fonksiyon isimleri - **PascalCase**: Class ve constructor isimleri - **UPPER_SNAKE_CASE**: Constant'lar - **Async/Await**: Asenkron operasyonlar - **Error Handling**: Try-catch blokları #### Svelte - **Component-based**: Tek sorumluluk ilkesi - **Props**: Veri akışı parent → child - **Events**: Haberleşme child → parent - **Reactive**: $: reaktif değişkenler - **Lifecycle**: onMount, onDestroy #### CSS - **BEM-like**: Component bazlı naming - **Mobile-first**: Responsive yaklaşım - **Flexbox/Grid**: Modern layout - **CSS Variables**: Tema yönetimi - **Minification**: Prodüksiyon için ### Dosya Organizasyonu #### Frontend ``` src/ ├── components/ # Svelte components │ ├── View*.svelte # Page-level components │ ├── *Panel.svelte # Feature components │ └── *.svelte # Reusable components ├── lib/ # Utility libraries ├── api.js # API client ├── main.js # App entry point └── App.svelte # Root component ``` #### Backend ``` server/ ├── index.js # Main server ├── db.js # Database layer └── db-init.js # Database initialization ``` ### API Design Standartları #### RESTful Conventions - **GET**: Veri okuma - **POST**: Veri oluşturma - **PUT**: Tam veri güncelleme - **PATCH**: Kısmi veri güncelleme - **DELETE**: Veri silme #### Response Format ```javascript // Success { "data": { ... }, "message": "Operation successful" } // Error { "error": "Error description", "message": "User-friendly message" } ``` #### HTTP Status Codes - **200**: Success - **201**: Created - **204**: No Content - **400**: Bad Request - **401**: Unauthorized - **403**: Forbidden - **404**: Not Found - **409**: Conflict - **500**: Server Error ### Security Standards #### Authentication - **JWT-like**: Token based authentication - **Secure storage**: localStorage için güvenlik - **Token rotation**: Session management - **Logout**: Proper token cleanup #### Authorization - **Role-based**: Access control by role - **Route-level**: Middleware protection - **Resource-level**: Ownership validation - **API-level**: Permission checks #### Data Validation - **Input validation**: All user inputs - **SQL injection**: Parameterized queries - **XSS prevention**: Output escaping - **CSRF protection**: Token validation ### Performance Standards #### Frontend - **Lazy loading**: Component lazy loading - **Code splitting**: Dynamic imports - **Bundle optimization**: Vite optimization - **Asset optimization**: Image compression #### Backend - **Connection pooling**: Database connections - **Query optimization**: Efficient queries - **Caching**: Response caching - **Compression**: Gzip compression #### Database - **Indexing**: Proper indexes - **Query optimization**: Efficient queries - **Connection management**: Single connection - **Backup strategy**: Regular backups --- **Not**: Bu yapı geliştirme sürecinde evrilebilir. Değişiklikler için ekibin onayı gerekir.