{"id":28226689,"url":"https://github.com/berkanjs/quizapp-backend-spring-boot","last_synced_at":"2025-06-13T08:32:34.606Z","repository":{"id":291518921,"uuid":"977864294","full_name":"BerkanJs/QuizApp-Backend-Spring-Boot","owner":"BerkanJs","description":"Şirket içi veya dışı kullanıcıların sınavlara katılabildiği, sorulara yanıt verebildiği ve sonuçlarının değerlendirildiği **Spring Boot tabanlı bir mülakat platformudur**. Uygulama, kullanıcı yönetimi, soru yönetimi, sınav organizasyonu ve sonuç takibi gibi temel modülleri içerir.","archived":false,"fork":false,"pushed_at":"2025-05-21T05:33:04.000Z","size":64,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-21T06:32:11.553Z","etag":null,"topics":["java","postgresql","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BerkanJs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-05T05:06:00.000Z","updated_at":"2025-05-21T05:33:08.000Z","dependencies_parsed_at":"2025-05-05T06:24:20.962Z","dependency_job_id":"cc0e180c-13d7-4d18-aefa-7b4b765e1a4b","html_url":"https://github.com/BerkanJs/QuizApp-Backend-Spring-Boot","commit_stats":null,"previous_names":["berkanjs/quizapp-backend-spring-boot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BerkanJs/QuizApp-Backend-Spring-Boot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BerkanJs%2FQuizApp-Backend-Spring-Boot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BerkanJs%2FQuizApp-Backend-Spring-Boot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BerkanJs%2FQuizApp-Backend-Spring-Boot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BerkanJs%2FQuizApp-Backend-Spring-Boot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BerkanJs","download_url":"https://codeload.github.com/BerkanJs/QuizApp-Backend-Spring-Boot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BerkanJs%2FQuizApp-Backend-Spring-Boot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259610096,"owners_count":22884192,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","postgresql","spring-boot"],"created_at":"2025-05-18T12:09:18.053Z","updated_at":"2025-06-13T08:32:34.600Z","avatar_url":"https://github.com/BerkanJs.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# - Mülakat Platformu\n\n## 📝 Proje Açıklaması\n\nŞirket içi veya dışı kullanıcıların sınavlara katılabildiği, sorulara yanıt verebildiği ve sonuçlarının değerlendirildiği **Spring Boot tabanlı bir mülakat platformudur**. Uygulama, kullanıcı yönetimi, soru yönetimi, sınav organizasyonu ve sonuç takibi gibi temel modülleri içerir.\n\n## 🎯 Temel Özellikler\n\n- JWT tabanlı kimlik doğrulama (Access ve Refresh Token)\n- Rol bazlı yetkilendirme (`ADMIN`, `EMPLOYEE`, `SUPERVISOR`)\n- Kullanıcı, departman ve kategori CRUD işlemleri\n- Soru oluşturma, güncelleme ve sınavlara ekleme\n- Kullanıcı cevap yönetimi\n- Sınav planlama, değerlendirme ve listeleme\n- DTO (Data Transfer Object) kullanımı\n- SOLID prensiplerine uygun, katmanlı mimari yapı\n\n## 🏗️ Mimari Yapı\n\nUygulama katmanlı bir yapı üzerine kurulmuştur:\n\n```\ncom.berkanozcelik.atmacaapp\n├── config                 → Security \u0026 genel konfigürasyon\n├── controller             → REST API endpoint'leri\n├── dto                    → Veri transfer nesneleri\n├── entity                 → JPA Entity tanımları\n├── repository             → Spring Data JPA repository arayüzleri\n├── service                → İş mantığı (business logic)\n├── service.impl           → Servislerin implementasyonları\n├── exception              → Özel hata sınıfları\n└── security               → JWT filtreleri, authentication servisleri\n```\n\n\u003e Proje SOLID prensiplerine uygun olacak şekilde aşağıdaki tasarım kararlarını benimser:\n\u003e - **S**ingle Responsibility: Her sınıf yalnızca kendi sorumluluğuna odaklanır.\n\u003e - **O**pen/Closed: Servisler ve controller’lar genişlemeye açık, değişikliğe kapalıdır.\n\u003e - **L**iskov Substitution: Interface’ler doğru şekilde uygulanarak türetilmiş sınıflar kullanılabilir.\n\u003e - **I**nterface Segregation: Gereksiz metodlar içermeyen, ayrık interface yapıları\n\u003e - **D**ependency Inversion: `@Autowired` ile bağımlılıklar enjekte edilmiştir.\n\n## 🔐 Kimlik Doğrulama\n\n- `/register` - Kullanıcı kayıt\n- `/authenticate` - Giriş ve token alma\n- `/refreshToken` - Access token yenileme\n\nJWT yapısı ile birlikte hem access hem refresh token güvenliği sağlanır.\n\n## 📦 Postman Collection\n\nTüm endpointlerin test edilebileceği bir [Postman koleksiyonu](https://berkans-7487.postman.co/workspace/Berkans-Workspace~5c906657-c128-42f7-833c-5f7e1bee44d9/collection/43071018-a7d053e3-b75a-42d7-b9dc-02f61c6d2628?action=share\u0026source=collection_link\u0026creator=43071018) mevcuttur. Alternatif olarak bu repo ile birlikte `.json` dosyası olarak da bulunmaktadır.\n\n## 📘 Örnek API Kullanımları\n\n### ➕ Kullanıcı Kayıt\n\n```http\nPOST /register\n{\n  \"username\": \"john4\",\n  \"email\": \"john3@example.com\",\n  \"password\": \"123456\",\n  \"userRole\": \"ADMIN\",\n  \"department\": { \"id\": 1 }\n}\n```\n\n### 🔐 Giriş Yapma\n\n```http\nPOST /authenticate\n{\n  \"username\": \"john4\",\n  \"password\": \"123456\"\n}\n```\n\n### ❓ Soru Oluşturma\n\n```http\nPOST /questions/create\n{\n  \"questionText\": \"Hangisi bir frontend framework değildir?\",\n  \"questionType\": \"CLASSIC\",\n  \"options\": [\"React\", \"Vue\", \"Spring\", \"Angular\"],\n  \"correctOption\": \"Spring\",\n  \"questionPoint\": 10,\n  \"userId\": 1,\n  \"departmentId\": 1,\n  \"categoryId\": 1\n}\n```\n\n### 📝 Cevap Gönderme\n\n```http\nPOST /api/user-answers\n{\n  \"userId\": 1,\n  \"questionId\": 2,\n  \"answer\": \"Spring\"\n}\n```\n\n## 💾 Teknolojiler\n\n- **Java 17**\n- **Spring Boot 3.x**\n- **Spring Security \u0026 JWT**\n- **Spring Data JPA (Hibernate)**\n- **PostgreSQL / H2 (dev)**\n- **Lombok**\n- **MapStruct (isteğe bağlı DTO mapping)**\n- **Postman (API test)**\n\n## 🚀 Kurulum\n\n```bash\ngit clone https://github.com/berkanozcelik/atmaca-app.git\ncd atmaca-app\n./mvnw spring-boot:run\n```\n\nUygulama `http://localhost:8080` üzerinden yayında olacaktır.\n\n## 📂 DTO Örnekleri\n\n```java\npublic class RegisterRequest {\n    private String username;\n    private String email;\n    private String password;\n    private UserRole userRole;\n    private Department department;\n}\n```\n\n```java\npublic class QuestionDto {\n    private String questionText;\n    private String questionType;\n    private List\u003cString\u003e options;\n    private String correctOption;\n    private Integer questionPoint;\n    private Long userId;\n    private Long departmentId;\n    private Long categoryId;\n}\n```\n\n\n## 👨‍💻 Geliştirici\n\n**Berkan Özçelik**  \nEmail: berkanozcelik3.6@gmail.com  \nLinkedIn: [linkedin.com/in/berkanozcelik](https://linkedin.com/in/berkanozcelik)\n\n---\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberkanjs%2Fquizapp-backend-spring-boot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fberkanjs%2Fquizapp-backend-spring-boot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberkanjs%2Fquizapp-backend-spring-boot/lists"}