Bu dosya, projenin genel bir özetini sunar. Detaylı teknik bilgi için lütfen backend/README.md ve frontend/README.md dosyalarını inceleyiniz.
Bu proje, modern bir Full-Stack web uygulamasının geliştirilmesi, güvenliğin sağlanması ve iki yönlü iletişimin kurulması amacıyla oluşturulmuş bir Kullanıcıya Özel Not Yönetim Uygulamasıdır.
Uygulama, kullanıcıların kişisel notlarını güvenli bir şekilde oluşturmasını, okumasını, güncellemesini ve silmesini (CRUD) sağlarken, aynı zamanda yetkilendirme (Authorization) mekanizması ile Admin ve User rollerini yönetmektedir.
Bu proje, bir geliştiricinin aşağıdaki kilit yetkinliklere sahip olduğunu kanıtlar:
- Güvenlik: JSON Web Token (JWT) kullanarak durum bilgisi olmayan (Stateless) kimlik doğrulama uygulama becerisi.
- Mimarinin Ayrılması: Birbirinden bağımsız çalışan bir Back-end API'si (Spring Boot) ve bir Front-end SPA (React) oluşturma.
- Verimlilik: Çok sayıda kaydın yönetimi için Paginasyon (Sayfalama) mekanizmasının tam Full-Stack entegrasyonu (Spring Data Paging ve React entegrasyonu).
- Yetkilendirme (RBAC): Role-Based Access Control (RBAC) ile yönetici haklarının (Admin Panel) doğru bir şekilde yönetilmesi.
- Merkezi Hata Yönetimi: Back-end'deki Global Exception Handling ve Front-end'deki Axios Interceptor yapısı ile tüm HTTP hatalarını (401/403/500) tutarlı bir şekilde yönetme.
| Özellik Kategorisi | Açıklama |
|---|---|
| 🔐 Kimlik Doğrulama (Auth) | Kullanıcı Kaydı (Sign-up) ve JWT tabanlı Giriş (Sign-in) sistemi. |
| 📝 Not Yönetimi (CRUD) | Kullanıcıların başlık, içerik ve durum (Tamamlandı/Beklemede) ile not oluşturması, görüntülemesi, düzenlemesi ve silmesi. |
| 🔍 Gelişmiş Filtreleme | Notları anahtar kelimeye göre arama, duruma göre filtreleme ve oluşturulma tarihine göre sıralama. |
| 🛡️ Yetkilendirme (RBAC) | Kullanıcı ve Yönetici (Admin) rolleri. Notlara sadece sahibi erişebilirken, Adminler tüm kullanıcı ve not verilerine erişebilir. |
| 💻 Admin Yönetimi | Yöneticilerin tüm kullanıcıları listeleyebileceği, rol atamaları yapabileceği ve kullanıcıları silebileceği ayrı bir panel. |
| 🎨 Kullanıcı Deneyimi | Modern UI/UX için Dark/Light tema geçişi ve React Modal ile not düzenleme. |
Projenin profesyonel ve ölçeklenebilir olması için sektörde kabul görmüş kurumsal teknolojiler kullanılmıştır.
| Teknoloji | Versiyon | Rolü ve Vurgu |
|---|---|---|
| Java | Amazon Corretto 17 (LTS) | Kurumsal düzeyde kararlılık ve uzun süreli destek (LTS) sunan bir JVM. |
| Spring Boot | 3.2.x+ | Mikroservis ve REST API oluşturmak için kullanılan popüler Java çatısı. |
| Spring Data JPA | 3.2.x ile uyumlu | Veritabanı işlemleri için kullanılan güçlü ORM katmanı. Paginasyon entegrasyonu. |
| Spring Security | 6.2.x ile uyumlu | JWT tabanlı kimlik doğrulama, şifreleme ve yetkilendirme (RBAC) yönetimi. |
| PostgreSQL | 14/15+ | Yerel ortamda dahi üretim veritabanını simüle etmek için seçilmiştir. |
| Apache Maven | 3.9+ | Proje bağımlılıklarını yönetmek ve Back-end uygulamasını standart bir şekilde derlemek için kullanılır. |
| Teknoloji | Versiyon | Rolü ve Vurgu |
|---|---|---|
| React | 18.x | Bileşen tabanlı, hızlı ve dinamik kullanıcı arayüzü oluşturmak için temel kütüphane. |
| Vite | 4.x+ | Hızlı geliştirme ortamı (Dev Server) ve optimizasyonlu derleme aracı. |
| Axios | En son stabil | Özellikle Interceptor yapısı ile tüm HTTP hatalarını merkezi olarak yönetmeyi sağlar. |
| React Hooks | 18.x ile entegre | Temiz ve yeniden kullanılabilir state mantığı (useContext, useCallback vb.). |
Bu projeyi yerel makinenizde sıfırdan kurup çalıştırabilmek için aşağıdaki yazılımların kurulu ve doğru yapılandırılmış olması şarttır.
| Program | Amaç | Yükleme Kaynağı |
|---|---|---|
| Java JDK (Corretto) | Java kodunu derlemek ve Spring Boot'u çalıştırmak için. | İndir Amazon Corretto 17 |
| Apache Maven | Back-end bağımlılık yönetimi. | İndir Apache Maven |
| Node.js & NPM/Yarn | React projesini çalıştırmak için. | İndir Node.js |
| PostgreSQL | Veritabanı sunucusu. | İndir PostgreSQL |
| DBeaver / pgAdmin 4 | PostgreSQL veritabanını oluşturmak ve bağlantıyı kontrol etmek için görsel araçlar. | İndir DBeaver |
| IntelliJ IDEA | Back-end geliştirme ortamı için önerilen profesyonel IDE. | İndir IntelliJ IDEA |
| Visual Studio Code (VS Code) | Front-end geliştirme ortamı için önerilen hafif editör. | İndir VS Code |
| Postman | Geliştirme sırasında API endpoint'lerini bağımsız olarak test etmek için. | İndir Postman |
- Veritabanı Oluşturma:
pgAdmin 4veyaDBeaverkullanarak yeni bir veritabanı oluşturun. Önerilen İsim:notedb. - Bağlantı Ayarları:
backend/src/main/resources/application.propertiesdosyasını kendi kimlik bilgilerinizle güncelleyin.
- Dizin Değiştirme:
cd backend - Çalıştırma: Terminalde:
./mvnw spring-boot:run - Başarı Kontrolü: Konsolda
Started NoteApplication...mesajını gördüğünüzden emin olun.
❗ Önemli Not: Spring Security ayarları gereği, uygulama ilk çalıştığında veritabanına otomatik olarak bir Admin ve bir Normal Kullanıcı hesabı eklenir.
- Dizin Değiştirme:
cd ../frontend - Bağımlılıkları Yükleme:
npm install - Uygulamayı Başlatma:
npm run dev - Erişim: Uygulama, genellikle
http://localhost:5173/adresinde açılacaktır.
Bu görseller, projenin tüm katmanlarının (Kod, Güvenlik, Veri) hatasız çalıştığını ve entegrasyonun başarıyla sağlandığını kanıtlar. Tüm görseller assets/ dizininden referans alınmıştır.
Geliştirme sunucularının eş zamanlı olarak başarıyla başladığını gösterir.
- Kanıt: Spring Boot API'sinin hata almadan başlayıp
http://localhost:8080adresinde dinlemeye hazır olduğunu kanıtlar.
- Kanıt: React (Vite) geliştirme sunucusunun başarıyla başlatıldığını gösterir.
API'nin verileri doğru şema ile kaydettiğini ve yetkilendirme altyapısını gösterir.
- Kanıt:
_usertablosunda ROLE_ADMIN ve ROLE_USER rollerinin oluşturulduğunu gösterir. Şifreler BCrypt ile şifrelenmiştir.
- Kanıt: Notların başlık, içerik,
completeddurumu ile birlikte kalıcı olarak saklandığını kanıtlar.
Projenin en kritik özelliği olan JWT tabanlı güvenliğin kusursuz çalıştığını kanıtlar.
- Açıklama: Kullanıcı adı/şifre ile başarılı giriş sonrası API'nin 200 OK ile JWT Token'ı döndürdüğü kanıtlanır.
- Açıklama: Alınan JWT'nin
Authorization: Bearerbaşlığı ile korumalı CRUD endpoint'ine başarılı erişimi gösterir.
- Açıklama: Normal bir kullanıcının (USER rolü), Admin endpoint'ine erişiminin 403 Forbidden ile engellendiğini kanıtlar.
Son kullanıcının etkileşimde bulunduğu ana ekranları ve kritik özellikleri gösterir.
- Açıklama: Kullanıcı kayıt arayüzünün görünümü.
- Açıklama: Temel not listeleme, Paginasyon ve yeni not oluşturma işlevini gösterir.
- Açıklama: Notların durumuna (tamamlandı/beklemede) göre filtreleme işlevinin kanıtıdır.
- Açıklama: Metin arama işlevinin aktif olduğunu gösterir.
- Açıklama: Sadece Admin rolünün erişebildiği kullanıcı yönetimi panelini gösterir (RBAC Görsel Kanıtı).
- Açıklama: Dark/Light tema geçişi özelliğinin kanıtıdır.
| Dizin | İçerik Örnekleri | Ana Sorumluluklar |
|---|---|---|
config |
SecurityConfig, JwtAuthenticationFilter |
JWT Güvenlik Zinciri yapılandırması. |
controller |
NoteController, AdminController |
API Endpoint yönetimi, gelen HTTP isteklerini karşılama. |
dto |
AuthenticationRequest, RegisterRequest |
Veri Transfer Nesneleri (DTO). |
entity |
NoteEntity, UserEntity, Role (Enum) |
Veritabanı tablolarını temsil eden JPA varlıkları. |
exception |
GlobalExceptioHandler |
Uygulama genelinde merkezi Hata Yönetimi. |
repository |
NoteRepository, UserRepository |
Veritabanı erişim katmanı (Spring Data JPA). |
service |
NoteService, AdminService, JwtService |
Uygulamanın İş Mantığının ve Transactional işlemlerin yönetimi. |
| Dizin | İçerik Örnekleri | Ana Sorumluluklar |
|---|---|---|
pages |
HomePage, AdminPage, LoginPage |
Uygulamanın Routing tarafından erişilen ana görünümler. |
components |
Navbar, NoteEditModal, NoteForm |
Tekrar kullanılabilir, küçük ve orta ölçekli UI parçaları. |
context |
AuthContext, ThemeContext |
Uygulama genelindeki Global State yönetimi. |
services |
NoteApiServices, AuthApiService |
Axios tabanlı tüm Back-end API çağrılarının ve Interceptor mantığının yönetildiği yer. |
routes |
AdminRoute |
Kullanıcı yetkisine göre sayfa erişimini kontrol eden korumalı rotalar. |
Bu başlık, projenin sadece "yapıldı" demenin ötesinde, sürekli gelişime açık bir bakış açısıyla ele alındığını gösterir.
- Token Yenileme (Refresh Token): Kullanıcı deneyimini kesintiye uğratmamak ve güvenliği artırmak amacıyla, kısa ömürlü JWT'lerin süresi dolduğunda otomatik olarak yenilenmesi.
- Back-end Filtreleme Optimizasyonu: Front-end'de uygulanan filtreleme/arama mantığını, performans ve verimlilik için tamamen Back-end'e taşımak.
- Unit ve Integration Testleri: Back-end'de JUnit ve Mockito; Front-end'de Jest ve React Testing Library ile kapsamlı testler eklenmesi.
- CI/CD Pipeline: Otomatik dağıtım için Jenkins veya GitHub Actions entegrasyonu.





