Skip to content

Commit 51c2f49

Browse files
committed
README.md — kapsamlı proje dokümantasyonu eklendi
1 parent bcf736d commit 51c2f49

1 file changed

Lines changed: 255 additions & 0 deletions

File tree

README.md

Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,255 @@
1+
<p align="center">
2+
<img src="varliklar/belediye-logo.svg" width="80" alt="Silivri Belediyesi">
3+
</p>
4+
5+
<h1 align="center">SECAP Portalı</h1>
6+
7+
<p align="center">
8+
<strong>Silivri Belediyesi — Sürdürülebilir Enerji ve İklim Eylem Planı Takip Sistemi</strong>
9+
</p>
10+
11+
<p align="center">
12+
<img src="https://img.shields.io/badge/PHP-7.4+-8892BF?style=flat-square&logo=php&logoColor=white" alt="PHP 7.4+">
13+
<img src="https://img.shields.io/badge/MySQL-5.7+-4479A1?style=flat-square&logo=mysql&logoColor=white" alt="MySQL 5.7+">
14+
<img src="https://img.shields.io/badge/Bootstrap-5.3-7952B3?style=flat-square&logo=bootstrap&logoColor=white" alt="Bootstrap 5.3">
15+
<img src="https://img.shields.io/badge/Lisans-Kurum%20İçi-red?style=flat-square" alt="Lisans">
16+
</p>
17+
18+
---
19+
20+
## Hakkında
21+
22+
SECAP Portalı, Silivri Belediyesi'nin **Covenant of Mayors** (Belediye Başkanları Sözleşmesi) kapsamında hazırladığı Sürdürülebilir Enerji ve İklim Eylem Planı'nın (SECAP) takibini sağlayan kurum içi web uygulamasıdır.
23+
24+
Sistem; SECAP eylemlerinin tanımlanması, müdürlüklere atanması, ilerleme verilerinin toplanması, KPI takibi, kanıt dosyası yönetimi ve Excel/PDF raporlama süreçlerini tek bir merkezden yönetir.
25+
26+
### Temel Özellikler
27+
28+
| Modül | Açıklama |
29+
|-------|----------|
30+
| **Eylem Yönetimi** | SECAP eylemlerini oluşturma, düzenleme, müdürlüklere atama ve durum takibi |
31+
| **Veri Toplama** | Müdürlüklerden periyodik veri girişi toplama ve onay mekanizması |
32+
| **KPI İzleme** | Her eylem için özel KPI tanımlama ve ilerleme ölçümü |
33+
| **Faaliyet Kayıtları** | Eylemler altında faaliyet oluşturma ve kanıt dosyası ekleme |
34+
| **Veri Onay Sistemi** | Admin tarafından gelen verilerin onay/red süreç yönetimi |
35+
| **Veri İzleme** | Grafik tabanlı veri izleme ve trend analizi (Chart.js) |
36+
| **Raporlama** | Excel ve PDF formatında detaylı rapor dışa aktarımı |
37+
| **Bildirim Sistemi** | Kullanıcılara otomatik ve manuel bildirim gönderimi |
38+
| **Denetim Günlüğü** | Tüm sistem işlemlerinin kayıt altına alınması |
39+
| **Yedekleme** | Veritabanı yedekleme ve geri yükleme |
40+
| **Çöp Kutusu** | Soft-delete ile silinen kayıtları geri yükleme |
41+
| **Oturum Yönetimi** | Aktif oturumları izleme ve uzaktan sonlandırma |
42+
43+
---
44+
45+
## Mimari
46+
47+
```
48+
secap-portal/
49+
50+
├── index.php # Giriş noktası → kontrol merkezine yönlendirir
51+
├── giris.php # Oturum açma ekranı
52+
├── kontrol-merkezi.php # Ana panel (dashboard)
53+
54+
├── uygulama/ # Çekirdek katman (web erişimine kapalı)
55+
│ ├── baslat.php # Bootstrap — tüm bağımlılıkları yükler
56+
│ ├── php7-uyumluluk.php # PHP 7.4 polyfill (str_starts_with vb.)
57+
│ ├── ayarlar/ # Yapılandırma sınıfları
58+
│ │ ├── kimlik-dogrulama.php # Auth sınıfı, oturum, brute-force koruması
59+
│ │ ├── uygulama-ayarlari.php # AppConfig — host/proxy yapılandırması
60+
│ │ └── veritabani.php # Database — PDO singleton bağlantısı
61+
│ ├── parcalar/ # Tekrar kullanılabilir UI bileşenleri
62+
│ │ ├── cop-kutusu-modal.php # Geri yükleme onay modalı
63+
│ │ └── yardim-merkezi.php # Kapsamlı kullanım kılavuzu (data-driven)
64+
│ ├── yardimcilar/ # Servis katmanı
65+
│ │ ├── bildirim-servisi.php # NotificationService — bildirim motoru
66+
│ │ ├── cop-kutusu-servisi.php # TrashService — soft-delete yönetimi
67+
│ │ ├── csrf.php # CSRF token üretimi ve doğrulaması
68+
│ │ ├── denetim-kaydi.php # AuditLog — tüm işlem kayıtları
69+
│ │ ├── dogrulayici.php # Validator — form veri doğrulama
70+
│ │ ├── excel-aktarim.php # Excel export (XML Spreadsheet 2003)
71+
│ │ ├── istek-korumasi.php # RequestGuard — trusted host kontrolü
72+
│ │ ├── istemci-ip.php # ClientIp — proxy arkası IP tespiti
73+
│ │ ├── mesaj.php # Flash — tek seferlik bildirim mesajları
74+
│ │ ├── pdf-rapor.php # PDF rapor oluşturma motoru
75+
│ │ └── v2-yardimcilari.php # Genel yardımcı fonksiyonlar
76+
│ └── yerlesim/ # Ana şablon
77+
│ ├── ust.php # Header, sidebar navigasyon, bildirim zili
78+
│ └── alt.php # Footer, sidebar JS, bildirim polling
79+
80+
├── yonetim/ # Admin paneli (16 sayfa)
81+
│ ├── eylemler.php # SECAP eylem listesi ve filtreleme
82+
│ ├── eylem-formu.php # Eylem oluşturma/düzenleme formu
83+
│ ├── faaliyet-formu.php # Faaliyet oluşturma formu
84+
│ ├── kpi-formu.php # KPI tanımlama ve düzenleme
85+
│ ├── veri-onay.php # Gelen verileri onaylama/reddetme
86+
│ ├── veri-izleme.php # Grafik tabanlı veri izleme
87+
│ ├── disa-aktar.php # Excel/PDF rapor dışa aktarım
88+
│ ├── kullanicilar.php # Kullanıcı listesi ve yönetimi
89+
│ ├── kullanici-formu.php # Kullanıcı oluşturma/düzenleme
90+
│ ├── operasyon.php # Operasyon merkezi (toplu işlemler)
91+
│ ├── denetim-gunlugu.php # İşlem denetim geçmişi
92+
│ ├── yedekler.php # Veritabanı yedek yönetimi
93+
│ ├── oturumlar.php # Aktif oturum izleme
94+
│ ├── cop-kutusu.php # Silinen kayıtları geri yükleme
95+
│ └── yardim.php # Kullanım kılavuzu
96+
97+
├── mudurluk/ # Müdürlük paneli (5 sayfa)
98+
│ ├── eylemlerim.php # Müdürlüğe atanmış eylemler
99+
│ ├── veri-girisi.php # Periyodik veri giriş formu
100+
│ ├── veri-gecmisim.php # Geçmiş veri girişleri
101+
│ ├── faaliyet-ekle.php # Faaliyet oluşturma
102+
│ └── yardim.php # Kullanım kılavuzu
103+
104+
├── varliklar/ # Statik dosyalar (public)
105+
│ ├── stiller/arayuz.css # Ana stil dosyası (Türkçe class isimleri)
106+
│ ├── fontlar/ # Lokal fontlar (Manrope, Outfit)
107+
│ ├── kutuphaneler/ # Bootstrap 5, Bootstrap Icons, Chart.js
108+
│ └── gorseller/ # Görseller
109+
110+
└── depolama/ # Dinamik dosyalar (web erişimine kapalı)
111+
├── gecici-dosyalar/ # Geçici yükleme alanı
112+
├── kanit-dosyalari/ # Kanıt belgeleri (yıl/ay bazlı)
113+
└── sistem-yedekleri/ # Veritabanı yedekleri
114+
```
115+
116+
---
117+
118+
## Gereksinimler
119+
120+
| Bileşen | Minimum | Önerilen |
121+
|---------|---------|----------|
122+
| PHP | 7.4 | 8.1+ |
123+
| MySQL / MariaDB | 5.7 / 10.3 | 8.0 / 10.6+ |
124+
| Web Sunucusu | Apache 2.4 veya IIS 10 ||
125+
126+
**PHP Eklentileri:** `pdo_mysql`, `mbstring`, `json`, `session`
127+
128+
> PHP 8.x ile tam uyumludur. `uygulama/php7-uyumluluk.php` dosyası PHP 7.4 ortamlar için `str_starts_with`, `str_ends_with`, `str_contains` polyfill'lerini sağlar.
129+
130+
---
131+
132+
## Kurulum
133+
134+
### 1. Dosyaları Yükleyin
135+
136+
```bash
137+
git clone https://github.com/dusova/silivribel-secap-portal.git
138+
```
139+
140+
### 2. Ortam Ayarlarını Yapılandırın
141+
142+
```bash
143+
cp ornek-ortam-ayarlari.php ortam.php
144+
```
145+
146+
`ortam.php` dosyasını düzenleyin:
147+
148+
```php
149+
return [
150+
'DB_HOST' => 'localhost',
151+
'DB_PORT' => '3306',
152+
'DB_NAME' => 'secap_portal',
153+
'DB_USER' => 'kullanici',
154+
'DB_PASS' => 'sifre',
155+
'DB_CHARSET' => 'utf8mb4',
156+
157+
'BASE_PATH' => '', // Alt dizinde ise: '/secap'
158+
'PRODUCTION' => true, // Canlıda true
159+
'APP_DEBUG' => false, // Canlıda false
160+
];
161+
```
162+
163+
### 3. Veritabanını Oluşturun
164+
165+
SQL şemasını veritabanınıza import edin.
166+
167+
### 4. Web Sunucusunu Yapılandırın
168+
169+
**Apache:** `.htaccess` dosyası otomatik çalışır. `mod_rewrite` aktif olmalıdır.
170+
171+
**IIS:** `web.config` dosyası otomatik çalışır. URL Rewrite modülü kurulu olmalıdır.
172+
173+
### 5. Dizin İzinlerini Ayarlayın
174+
175+
```bash
176+
chmod 755 depolama/
177+
chmod 755 depolama/gecici-dosyalar/
178+
chmod 755 depolama/kanit-dosyalari/
179+
chmod 755 depolama/sistem-yedekleri/
180+
```
181+
182+
---
183+
184+
## Kullanıcı Rolleri
185+
186+
Sistem üç katmanlı bir yetkilendirme yapısına sahiptir:
187+
188+
| Rol | Erişim | Açıklama |
189+
|-----|--------|----------|
190+
| **Süper Admin** | Tüm sistem | Kullanıcı yönetimi, yedekleme, denetim günlüğü, oturum yönetimi, operasyon merkezi |
191+
| **İklim Admin** | Eylem ve veri yönetimi | Eylem oluşturma, veri onaylama, raporlama, KPI tanımlama |
192+
| **Müdürlük** | Kendi eylemleri | Atanmış eylemlere veri girişi, faaliyet oluşturma, kendi geçmişini görme |
193+
194+
---
195+
196+
## Güvenlik
197+
198+
| Önlem | Detay |
199+
|-------|-------|
200+
| **CSRF Koruması** | Tüm POST formlarında token doğrulaması |
201+
| **Brute-Force Koruması** | Başarısız giriş denemelerinde IP/kullanıcı bazlı geçici kilitleme |
202+
| **Oturum Güvenliği** | HttpOnly cookie, session fixation koruması, tek oturum politikası |
203+
| **XSS Koruması** | Tüm çıktılarda `htmlspecialchars()` ile encoding |
204+
| **SQL Injection** | PDO prepared statements ile parametrik sorgular |
205+
| **Dizin Koruması** | `uygulama/` ve `depolama/` dizinleri web erişimine kapalı |
206+
| **Güvenlik Başlıkları** | CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy |
207+
| **Dosya Erişim Engeli** | `.sql`, `.env`, `.log`, `.md`, `.bak` uzantıları ve hassas dosyalar engellenmiş |
208+
| **Trusted Host** | İsteğe bağlı host whitelist ile domain kısıtlaması |
209+
| **Denetim Kaydı** | Tüm CRUD işlemleri, giriş/çıkış ve yetki değişiklikleri loglanır |
210+
211+
---
212+
213+
## Teknoloji Altyapısı
214+
215+
| Katman | Teknoloji |
216+
|--------|-----------|
217+
| **Backend** | Vanilla PHP (framework'süz, sınıf tabanlı mimari) |
218+
| **Veritabanı** | MySQL / MariaDB, PDO |
219+
| **Frontend** | Bootstrap 5.3, Bootstrap Icons, Chart.js |
220+
| **Tipografi** | Manrope (UI), Outfit (başlıklar) — lokal woff2 |
221+
| **Sunucu** | Apache (.htaccess) veya IIS (web.config) desteği |
222+
| **Dış Bağımlılık** | Yok — tüm kütüphaneler lokal, offline çalışır |
223+
224+
---
225+
226+
## Kod Yapısı
227+
228+
Proje tamamen **Türkçe isimlendirme** kullanır:
229+
230+
- **Dosya isimleri:** `kontrol-merkezi.php`, `eylem-formu.php`, `veri-onay.php`
231+
- **Dizin isimleri:** `uygulama/`, `varliklar/`, `yonetim/`, `mudurluk/`, `depolama/`
232+
- **CSS class'ları:** `uygulama-kapsayici`, `ust-cubuk`, `istatistik-karti`, `rozet-planli`
233+
- **CSS değişkenleri:** `--arkaplan-govde`, `--renk-vurgu`, `--yazi-birincil`, `--kenar-acik`
234+
- **HTML ID'leri:** `kenar-cubugu`, `ana-icerik`, `kenarDaraltBtn`
235+
- **URL yolları:** `/kontrol-merkezi`, `/yonetim/eylemler`, `/mudurluk/veri-girisi`
236+
237+
> Bootstrap ve üçüncü parti kütüphane class isimleri (card, btn, badge, d-flex vb.) İngilizce olarak korunmuştur.
238+
239+
---
240+
241+
## Ekran Görüntüleri
242+
243+
> Ekran görüntüleri eklenecek.
244+
245+
---
246+
247+
## Lisans
248+
249+
Bu yazılım **T.C. Silivri Belediyesi Bilgi İşlem Müdürlüğü** tarafından kurum içi kullanım amacıyla geliştirilmiştir. Tüm hakları saklıdır.
250+
251+
---
252+
253+
<p align="center">
254+
<sub>Silivri Belediyesi Bilgi İşlem Müdürlüğü tarafından 💚 ile geliştirilmiştir.</sub>
255+
</p>

0 commit comments

Comments
 (0)