first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 21:46:42 +03:00
commit 2a5b661443
202 changed files with 49770 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,377 @@
Proje `frontend` klasörü altında yapılandırılmıştır. Gerekli tüm paketler (`package.json`) önceden yüklenmiştir:
- **Framework:** Next.js 16 (App Router)
- **UI:** React 19, Tailwind CSS v4, shadcn/ui
- **İkonlar:** lucide-react
- **Validasyon:** Zod
- **Auth:** NextAuth.js
- **Bildirimler:** SweetAlert2
- **Güvenlik:** nextjs-turnstile (Cloudflare)
- **Senin ile sadece Frontend Üstünde Çalışıyorum**
- **Backend ile ilgili bir şey Yapman Gerekirse Bana Söylemen Yeterli**
##############
Yeni Hero Kaydi
curl -X 'POST' \
'http://localhost:8080/api/v1/admin/heroes' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MDU3NjYsImlhdCI6MTc3MTM5NDk2NiwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.pKMS0trKymCVgLZL-fTSUWB8QDAzfRVikHD_-I2iC-A' \
-H 'Content-Type: multipart/form-data' \
-F 'color=11111' \
-F 'title=Title' \
-F 'text1=Text1' \
-F 'text2=Text2' \
-F 'text4=Text4' \
-F 'text5=Text5' \
-F 'is_active=true' \
-F 'image=@845575.png;type=image/png'
Request URL
http://localhost:8080/api/v1/admin/heroes
Server response
Code Details
201
Response body
{
"data": {
"ID": 1,
"CreatedAt": "2026-02-18T06:17:46.077799Z",
"UpdatedAt": "2026-02-18T06:17:46.077799Z",
"DeletedAt": null,
"color": "11111",
"title": "Title",
"text1": "Text1",
"text2": "Text2",
"text4": "Text4",
"text5": "Text5",
"image": "/uploads/heroes/hero-1771395466075911000.png",
"is_active": true
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 286
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 06:17:46 GMT
vary: Origin
##################
restore hero
curl -X 'POST' \
'http://localhost:8080/api/v1/admin/heroes/2/restore' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MDU3NjYsImlhdCI6MTc3MTM5NDk2NiwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.pKMS0trKymCVgLZL-fTSUWB8QDAzfRVikHD_-I2iC-A' \
-d ''
Request URL
http://localhost:8080/api/v1/admin/heroes/2/restore
Server response
Code Details
200
Response body
{
"data": {
"ID": 2,
"CreatedAt": "2026-02-18T09:18:32.257+03:00",
"UpdatedAt": "2026-02-18T06:19:40.645922Z",
"DeletedAt": null,
"color": "22222",
"title": "Title",
"text1": "Text1",
"text2": "Text2",
"text4": "Text4",
"text5": "Text5",
"image": "/uploads/heroes/hero-1771395512255077000.png",
"is_active": true
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 288
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 06:19:40 GMT
vary: Origin
##################
hero silmek
curl -X 'DELETE' \
'http://localhost:8080/api/v1/admin/heroes/3' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MDU3NjYsImlhdCI6MTc3MTM5NDk2NiwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.pKMS0trKymCVgLZL-fTSUWB8QDAzfRVikHD_-I2iC-A'
Request URL
http://localhost:8080/api/v1/admin/heroes/3
Server response
Code Details
200
Undocumented
Response body
{
"id": 3,
"message": "hero deleted successfully"
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 46
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 06:20:49 GMT
vary: Origin
##################
sadece soft delete olmuslar
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/heroes?soft=only' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MDU3NjYsImlhdCI6MTc3MTM5NDk2NiwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.pKMS0trKymCVgLZL-fTSUWB8QDAzfRVikHD_-I2iC-A'
Request URL
http://localhost:8080/api/v1/admin/heroes?soft=only
Server response
Code Details
200
Response body
{
"items": [
{
"ID": 3,
"CreatedAt": "2026-02-18T09:20:43.16+03:00",
"UpdatedAt": "2026-02-18T09:20:43.16+03:00",
"DeletedAt": "2026-02-18T09:20:49.969+03:00",
"color": "22222",
"title": "Title",
"text1": "Text1",
"text2": "Text2",
"text4": "Text4",
"text5": "Text5",
"image": "/uploads/heroes/hero-1771395643158537000.png",
"is_active": true
},
{
"ID": 2,
"CreatedAt": "2026-02-18T09:18:32.257+03:00",
"UpdatedAt": "2026-02-18T09:18:32.257+03:00",
"DeletedAt": "2026-02-18T09:19:05.81+03:00",
"color": "22222",
"title": "Title",
"text1": "Text1",
"text2": "Text2",
"text4": "Text4",
"text5": "Text5",
"image": "/uploads/heroes/hero-1771395512255077000.png",
"is_active": true
}
],
"page": 1,
"per_page": 20,
"total": 2
}
Response headers
content-length: 659
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 06:22:05 GMT
##################
soft delete olmuslar ve silinmeyenler yani hepsi
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/heroes?soft=with' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MDU3NjYsImlhdCI6MTc3MTM5NDk2NiwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.pKMS0trKymCVgLZL-fTSUWB8QDAzfRVikHD_-I2iC-A'
Request URL
http://localhost:8080/api/v1/admin/heroes?soft=with
Server response
Code Details
200
Response body
{
"items": [
{
"ID": 3,
"CreatedAt": "2026-02-18T09:20:43.16+03:00",
"UpdatedAt": "2026-02-18T09:20:43.16+03:00",
"DeletedAt": "2026-02-18T09:20:49.969+03:00",
"color": "22222",
"title": "Title",
"text1": "Text1",
"text2": "Text2",
"text4": "Text4",
"text5": "Text5",
"image": "/uploads/heroes/hero-1771395643158537000.png",
"is_active": true
},
{
"ID": 2,
"CreatedAt": "2026-02-18T09:18:32.257+03:00",
"UpdatedAt": "2026-02-18T09:18:32.257+03:00",
"DeletedAt": "2026-02-18T09:19:05.81+03:00",
"color": "22222",
"title": "Title",
"text1": "Text1",
"text2": "Text2",
"text4": "Text4",
"text5": "Text5",
"image": "/uploads/heroes/hero-1771395512255077000.png",
"is_active": true
},
{
"ID": 1,
"CreatedAt": "2026-02-18T09:17:46.077+03:00",
"UpdatedAt": "2026-02-18T09:17:46.077+03:00",
"DeletedAt": null,
"color": "11111",
"title": "Title",
"text1": "Text1",
"text2": "Text2",
"text4": "Text4",
"text5": "Text5",
"image": "/uploads/heroes/hero-1771395466075911000.png",
"is_active": true
}
],
"page": 1,
"per_page": 20,
"total": 3
}
Response headers
content-length: 941
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 06:22:49 GMT
##################
tek getiröe
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/heroes/2' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MDU3NjYsImlhdCI6MTc3MTM5NDk2NiwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.pKMS0trKymCVgLZL-fTSUWB8QDAzfRVikHD_-I2iC-A'
Request URL
http://localhost:8080/api/v1/admin/heroes/2
Server response
Code Details
200
Response body
{
"data": {
"ID": 2,
"CreatedAt": "2026-02-18T09:18:32.257+03:00",
"UpdatedAt": "2026-02-18T09:18:32.257+03:00",
"DeletedAt": "2026-02-18T09:19:05.81+03:00",
"color": "22222",
"title": "Title",
"text1": "Text1",
"text2": "Text2",
"text4": "Text4",
"text5": "Text5",
"image": "/uploads/heroes/hero-1771395512255077000.png",
"is_active": true
}
}
Response headers
content-length: 316
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 06:24:07 GMT
##################
hero guncelleme
curl -X 'PUT' \
'http://localhost:8080/api/v1/admin/heroes/1' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MDU3NjYsImlhdCI6MTc3MTM5NDk2NiwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.pKMS0trKymCVgLZL-fTSUWB8QDAzfRVikHD_-I2iC-A' \
-H 'Content-Type: multipart/form-data' \
-F 'color=ee' \
-F 'title=ee' \
-F 'text1=ee' \
-F 'text2=ee' \
-F 'text4=ee' \
-F 'text5=ee' \
-F 'is_active=true' \
-F 'image=@accounts.jpg;type=image/jpeg'
Request URL
http://localhost:8080/api/v1/admin/heroes/1
Server response
Code Details
200
Response body
{
"data": {
"ID": 1,
"CreatedAt": "2026-02-18T09:17:46.077+03:00",
"UpdatedAt": "2026-02-18T06:25:06.633353Z",
"DeletedAt": null,
"color": "ee",
"title": "ee",
"text1": "ee",
"text2": "ee",
"text4": "ee",
"text5": "ee",
"image": "/uploads/heroes/hero-1771395906631296000.jpg",
"is_active": true
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 270
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 06:25:06 GMT
vary: Origin
##################
Eklenen alanlari
"width": 0,
"height": 0,
"quality": 0,
"format": ""

View File

@@ -0,0 +1,369 @@
Proje `frontend` klasörü altında yapılandırılmıştır. Gerekli tüm paketler (`package.json`) önceden yüklenmiştir:
- **Framework:** Next.js 16 (App Router)
- **UI:** React 19, Tailwind CSS v4, shadcn/ui
- **İkonlar:** lucide-react
- **Validasyon:** Zod
- **Auth:** NextAuth.js
- **Bildirimler:** SweetAlert2
- **Güvenlik:** nextjs-turnstile (Cloudflare)
- **Senin ile sadece Frontend Üstünde Çalışıyorum**
- **Backend ile ilgili bir şey Yapman Gerekirse Bana Söylemen Yeterli**
#######################
Silnmis ve silinmemiş kategorileri hepsini getirir
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/categories?soft=with' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTcyMzksImlhdCI6MTc3MTM4NjQzOSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.ueKzmNpcFfyZlwruom6odx3ZegIJG_WCr5xJuepiG64'
Request URL
http://localhost:8080/api/v1/admin/categories?soft=with
Server response
Code Details
200
Response body
{
"items": [
{
"id": 126,
"title": "Edebiyat",
"slug": "edebiyat-1771357850441632000",
"deleted_at": "2026-02-18T07:13:44.315+03:00"
},
{
"id": 125,
"title": "Müzik",
"slug": "muzik-1771357850322048000"
},
{
"id": 124,
"title": "Sinema",
"slug": "sinema-1771357850310914000"
},
{
"id": 123,
"title": "Sanat",
"slug": "sanat-1771357850300423000"
},
{
"id": 122,
"title": "İçecekler",
"slug": "icecekler-1771357850183010000"
},
{
"id": 121,
"title": "Ana Yemekler",
"slug": "ana-yemekler-1771357850172046000"
},
{
"id": 120,
"title": "Tatlılar",
"slug": "tatlilar-1771357850161422000"
},
{
"id": 119,
"title": "Yemek",
"slug": "yemek-1771357850149748000"
},
{
"id": 118,
"title": "Dekorasyon",
"slug": "dekorasyon-1771357850137823000",
"deleted_at": "2026-02-18T07:11:49.576+03:00"
},
{
"id": 117,
"title": "Gezi",
"slug": "gezi-1771357850126021000"
},
{
"id": 116,
"title": "Spor",
"slug": "spor-1771357850110558000"
},
{
"id": 115,
"title": "Sağlık",
"slug": "saglik-1771357850098589000"
},
{
"id": 114,
"title": "Yaşam",
"slug": "yasam-1771357850085843000"
},
{
"id": 113,
"title": "Mobil",
"slug": "mobil-1771357850074407000"
},
{
"id": 112,
"title": "Yapay Zeka",
"slug": "yapay-zeka-1771357850062505000"
},
{
"id": 111,
"title": "Donanım",
"slug": "donanim-1771357850051551000"
},
{
"id": 110,
"title": "Yazılım",
"slug": "yazilim-1771357850031651000"
},
{
"id": 109,
"title": "Teknoloji",
"slug": "teknoloji-1771357849936045000"
}
],
"page": 1,
"per_page": 20,
"total": 18
}
Response headers
content-length: 1331
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 04:14:02 GMT
#######################
sadece silinmisleri getirir
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/categories?soft=only' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTcyMzksImlhdCI6MTc3MTM4NjQzOSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.ueKzmNpcFfyZlwruom6odx3ZegIJG_WCr5xJuepiG64'
Request URL
http://localhost:8080/api/v1/admin/categories?soft=only
Server response
Code Details
200
Response body
{
"items": [
{
"id": 126,
"title": "Edebiyat",
"slug": "edebiyat-1771357850441632000",
"deleted_at": "2026-02-18T07:13:44.315+03:00"
},
{
"id": 118,
"title": "Dekorasyon",
"slug": "dekorasyon-1771357850137823000",
"deleted_at": "2026-02-18T07:11:49.576+03:00"
}
],
"page": 1,
"per_page": 20,
"total": 2
}
Response headers
content-length: 274
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 04:15:47 GMT
Responses
#######################
yeni kategori ekler
curl -X 'POST' \
'http://localhost:8080/api/v1/admin/categories' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTcyMzksImlhdCI6MTc3MTM4NjQzOSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.ueKzmNpcFfyZlwruom6odx3ZegIJG_WCr5xJuepiG64' \
-H 'Content-Type: application/json' \
-d '{
"description": "yeni kategori",
"parent_id": null,
"slug": "eni-kategori",
"title": "yeni kategori"
}'
Request URL
http://localhost:8080/api/v1/admin/categories
Server response
Code Details
201
Response body
{
"data": {
"id": 128,
"title": "yeni kategori",
"slug": "eni-kategori"
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 65
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 04:17:18 GMT
vary: Origin
#######################
yeni alt kategori ekler
curl -X 'POST' \
'http://localhost:8080/api/v1/admin/categories' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTcyMzksImlhdCI6MTc3MTM4NjQzOSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.ueKzmNpcFfyZlwruom6odx3ZegIJG_WCr5xJuepiG64' \
-H 'Content-Type: application/json' \
-d '{
"description": "yeni alt kategori",
"parent_id": 128,
"slug": "yeni-alt-kategori",
"title": "yeni alt kategori"
}'
Request URL
http://localhost:8080/api/v1/admin/categories
Server response
Code Details
201
Response body
{
"data": {
"id": 129,
"title": "yeni alt kategori",
"slug": "yeni-alt-kategori"
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 74
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 04:18:15 GMT
vary: Origin
Responses
#######################
kategori gunceller
curl -X 'PUT' \
'http://localhost:8080/api/v1/admin/categories/128' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTcyMzksImlhdCI6MTc3MTM4NjQzOSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.ueKzmNpcFfyZlwruom6odx3ZegIJG_WCr5xJuepiG64' \
-H 'Content-Type: application/json' \
-d '{
"description": "update",
"parent_id": null,
"slug": "update",
"title": "update"
}'
Request URL
http://localhost:8080/api/v1/admin/categories/128
Server response
Code Details
200
Response body
{
"data": {
"id": 128,
"title": "update",
"slug": "update"
}
}
Respons
#######################
siler
curl -X 'DELETE' \
'http://localhost:8080/api/v1/admin/categories/122' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTcyMzksImlhdCI6MTc3MTM4NjQzOSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.ueKzmNpcFfyZlwruom6odx3ZegIJG_WCr5xJuepiG64'
Request URL
http://localhost:8080/api/v1/admin/categories/122
Server response
Code Details
200
Undocumented
Response body
{
"id": 122,
"message": "category deleted successfully"
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 52
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 04:20:35 GMT
vary: Origin
#######################
soft delte restore
curl -X 'POST' \
'http://localhost:8080/api/v1/admin/categories/122/restore' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTcyMzksImlhdCI6MTc3MTM4NjQzOSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.ueKzmNpcFfyZlwruom6odx3ZegIJG_WCr5xJuepiG64' \
-d ''
Request URL
http://localhost:8080/api/v1/admin/categories/122/restore
Server response
Code Details
200
Response body
{
"data": {
"id": 122,
"title": "İçecekler",
"slug": "icecekler-1771357850183010000"
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 80
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 04:21:57 GMT
vary: Origin

View File

@@ -0,0 +1,624 @@
Settigns ekleme
curl -X 'POST' \
'http://localhost:8080/api/v1/admin/settings' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MTYyMjcsImlhdCI6MTc3MTQwNTQyNywiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.X6mTnoiYJ1CUlarQlmwka0VpuDxYTIAV0QfS72AuBXs' \
-H 'Content-Type: multipart/form-data' \
-F 'title=Title' \
-F 'meta_title=Meta title' \
-F 'meta_description=Meta description' \
-F 'phone=Phone' \
-F 'url=URL' \
-F 'email=Email' \
-F 'facebook=Facebook' \
-F 'x=x' \
-F 'instagram=Instagram' \
-F 'whatsapp=Whatsapp' \
-F 'pinterest=Pinterest' \
-F 'linkedin=Linkedin' \
-F 'slogan=Slogan' \
-F 'address=Address' \
-F 'copyright=Copyright' \
-F 'map_embed=Map embed' \
-F 'w_logo=@354473ed-59e9-41cf-a655-ec5f7a77ccaa.png;type=image/png' \
-F 'b_logo=@354473ed-59e9-41cf-a655-ec5f7a77ccaa.png;type=image/png' \
-F 'is_active=true' \
-F 'w_width=100' \
-F 'w_height=100' \
-F 'w_quality=100' \
-F 'w_format=avif' \
-F 'b_width=100' \
-F 'b_height=100' \
-F 'b_quality=100' \
-F 'b_format=avif'
Request URL
http://localhost:8080/api/v1/admin/settings
Server response
Code Details
201
Response body
{
"data": {
"ID": 1,
"CreatedAt": "2026-02-18T09:06:07.242338Z",
"UpdatedAt": "2026-02-18T09:06:07.242338Z",
"DeletedAt": null,
"title": "Title",
"meta_title": "Meta title",
"meta_description": "Meta description",
"phone": "Phone",
"url": "URL",
"email": "Email",
"facebook": "Facebook",
"x": "x",
"instagram": "Instagram",
"whatsapp": "Whatsapp",
"pinterest": "Pinterest",
"linkedin": "Linkedin",
"slogan": "Slogan",
"address": "Address",
"copyright": "Copyright",
"map_embed": "Map embed",
"w_logo": "/uploads/logos/wlogo-1771405567230290000.png",
"b_logo": "/uploads/logos/blogo-1771405567233377000.png",
"is_active": true,
"w_width": 100,
"w_height": 100,
"w_quality": 100,
"w_format": "avif",
"b_width": 100,
"b_height": 100,
"b_quality": 100,
"b_format": "avif"
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 705
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 09:06:07 GMT
vary: Origin
##################
Setiiggs tek gor
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/settings/2' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MTYyMjcsImlhdCI6MTc3MTQwNTQyNywiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.X6mTnoiYJ1CUlarQlmwka0VpuDxYTIAV0QfS72AuBXs'
Request URL
http://localhost:8080/api/v1/admin/settings/2
Server response
Code Details
200
Response body
{
"data": {
"ID": 2,
"CreatedAt": "2026-02-18T12:07:50+03:00",
"UpdatedAt": "2026-02-18T12:07:50+03:00",
"DeletedAt": null,
"title": "Title",
"meta_title": "Meta title",
"meta_description": "Meta description",
"phone": "Phone",
"url": "URL",
"email": "Email",
"facebook": "Facebook",
"x": "x",
"instagram": "Instagram",
"whatsapp": "Whatsapp",
"pinterest": "Pinterest",
"linkedin": "Linkedin",
"slogan": "Slogan",
"address": "Address",
"copyright": "Copyright",
"map_embed": "Map embed",
"w_logo": "/uploads/logos/wlogo-1771405669986265000.png",
"b_logo": "/uploads/logos/blogo-1771405669989575000.png",
"is_active": true,
"w_width": 100,
"w_height": 100,
"w_quality": 100,
"w_format": "avif",
"b_width": 100,
"b_height": 100,
"b_quality": 100,
"b_format": "avif"
}
}
Response headers
content-length: 701
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 09:08:04 GMT
###############
setting guncelleme
curl -X 'PUT' \
'http://localhost:8080/api/v1/admin/settings/2' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MTYyMjcsImlhdCI6MTc3MTQwNTQyNywiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.X6mTnoiYJ1CUlarQlmwka0VpuDxYTIAV0QfS72AuBXs' \
-H 'Content-Type: multipart/form-data' \
-F 'title=ewr' \
-F 'meta_title=wer' \
-F 'meta_description=werwer' \
-F 'phone=wer' \
-F 'url=wer' \
-F 'email=wer' \
-F 'facebook=wer' \
-F 'x=wer' \
-F 'instagram=wer' \
-F 'whatsapp=ewr' \
-F 'pinterest=wer' \
-F 'linkedin=wer' \
-F 'slogan=wer' \
-F 'address=wre' \
-F 'copyright=wer' \
-F 'map_embed=wer' \
-F 'w_logo=@1657955547black-google-icon.png;type=image/png' \
-F 'b_logo=@845660.png;type=image/png' \
-F 'is_active=false' \
-F 'w_width=111' \
-F 'w_height=111' \
-F 'w_quality=100' \
-F 'w_format=avif' \
-F 'b_width=111' \
-F 'b_height=111' \
-F 'b_quality=100' \
-F 'b_format=avif'
Request URL
http://localhost:8080/api/v1/admin/settings/2
Server response
Code Details
200
Response body
{
"data": {
"ID": 2,
"CreatedAt": "2026-02-18T12:07:50+03:00",
"UpdatedAt": "2026-02-18T09:10:27.629761Z",
"DeletedAt": null,
"title": "ewr",
"meta_title": "wer",
"meta_description": "werwer",
"phone": "wer",
"url": "wer",
"email": "wer",
"facebook": "wer",
"x": "wer",
"instagram": "wer",
"whatsapp": "ewr",
"pinterest": "wer",
"linkedin": "wer",
"slogan": "wer",
"address": "wre",
"copyright": "wer",
"map_embed": "wer",
"w_logo": "/uploads/logos/wlogo-1771405827623476000.png",
"b_logo": "/uploads/logos/blogo-1771405827627412000.png",
"is_active": false,
"w_width": 111,
"w_height": 111,
"w_quality": 100,
"w_format": "avif",
"b_width": 111,
"b_height": 111,
"b_quality": 100,
"b_format": "avif"
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 637
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 09:10:27 GMT
vary: Origin
settings restore
curl -X 'POST' \
'http://localhost:8080/api/v1/admin/settings/2/restore' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MTYyMjcsImlhdCI6MTc3MTQwNTQyNywiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.X6mTnoiYJ1CUlarQlmwka0VpuDxYTIAV0QfS72AuBXs' \
-d ''
Request URL
http://localhost:8080/api/v1/admin/settings/2/restore
Server response
Code Details
200
Response body
{
"data": {
"ID": 2,
"CreatedAt": "2026-02-18T12:07:50+03:00",
"UpdatedAt": "2026-02-18T09:11:59.255443Z",
"DeletedAt": null,
"title": "ewr",
"meta_title": "wer",
"meta_description": "werwer",
"phone": "wer",
"url": "wer",
"email": "wer",
"facebook": "wer",
"x": "wer",
"instagram": "wer",
"whatsapp": "ewr",
"pinterest": "wer",
"linkedin": "wer",
"slogan": "wer",
"address": "wre",
"copyright": "wer",
"map_embed": "wer",
"w_logo": "/uploads/logos/wlogo-1771405827623476000.png",
"b_logo": "/uploads/logos/blogo-1771405827627412000.png",
"is_active": false,
"w_width": 111,
"w_height": 111,
"w_quality": 100,
"w_format": "avif",
"b_width": 111,
"b_height": 111,
"b_quality": 100,
"b_format": "avif"
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 637
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 09:11:59 GMT
vary: Origin
Responses
Code Description
200
##################
settings silmek
curl -X 'DELETE' \
'http://localhost:8080/api/v1/admin/settings/2' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MTYyMjcsImlhdCI6MTc3MTQwNTQyNywiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.X6mTnoiYJ1CUlarQlmwka0VpuDxYTIAV0QfS72AuBXs'
Request URL
http://localhost:8080/api/v1/admin/settings/2
Server response
Code Details
200
Undocumented
Response body
{
"id": 2,
"message": "setting deleted successfully"
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 49
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 09:13:23 GMT
vary: Origin
Responses
Code Description
204
No Content
400
Bad Request
{
"additionalProp1":
####################
hepsini listele
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/settings' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MTYyMjcsImlhdCI6MTc3MTQwNTQyNywiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.X6mTnoiYJ1CUlarQlmwka0VpuDxYTIAV0QfS72AuBXs'
Request URL
http://localhost:8080/api/v1/admin/settings
Server response
Code Details
200
Response body
{
"items": [
{
"ID": 2,
"CreatedAt": "2026-02-18T12:07:50+03:00",
"UpdatedAt": "2026-02-18T12:10:27.629+03:00",
"DeletedAt": null,
"title": "ewr",
"meta_title": "wer",
"meta_description": "werwer",
"phone": "wer",
"url": "wer",
"email": "wer",
"facebook": "wer",
"x": "wer",
"instagram": "wer",
"whatsapp": "ewr",
"pinterest": "wer",
"linkedin": "wer",
"slogan": "wer",
"address": "wre",
"copyright": "wer",
"map_embed": "wer",
"w_logo": "/uploads/logos/wlogo-1771405827623476000.png",
"b_logo": "/uploads/logos/blogo-1771405827627412000.png",
"is_active": false,
"w_width": 111,
"w_height": 111,
"w_quality": 100,
"w_format": "avif",
"b_width": 111,
"b_height": 111,
"b_quality": 100,
"b_format": "avif"
},
{
"ID": 1,
"CreatedAt": "2026-02-18T12:06:07.242+03:00",
"UpdatedAt": "2026-02-18T12:06:07.242+03:00",
"DeletedAt": null,
"title": "Title",
"meta_title": "Meta title",
"meta_description": "Meta description",
"phone": "Phone",
"url": "URL",
"email": "Email",
"facebook": "Facebook",
"x": "x",
"instagram": "Instagram",
"whatsapp": "Whatsapp",
"pinterest": "Pinterest",
"linkedin": "Linkedin",
"slogan": "Slogan",
"address": "Address",
"copyright": "Copyright",
"map_embed": "Map embed",
"w_logo": "/uploads/logos/wlogo-1771405567230290000.png",
"b_logo": "/uploads/logos/blogo-1771405567233377000.png",
"is_active": true,
"w_width": 100,
"w_height": 100,
"w_quality": 100,
"w_format": "avif",
"b_width": 100,
"b_height": 100,
"b_quality": 100,
"b_format": "avif"
}
],
"page": 1,
"per_page": 20,
"total": 2
}
Response headers
content-length: 1376
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 09:31:04 GMT
sadece softdelete edilmisleri listele
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/settings?soft=only' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MTYyMjcsImlhdCI6MTc3MTQwNTQyNywiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.X6mTnoiYJ1CUlarQlmwka0VpuDxYTIAV0QfS72AuBXs'
Request URL
http://localhost:8080/api/v1/admin/settings?soft=only
Server response
Code Details
200
Response body
{
"items": [
{
"ID": 2,
"CreatedAt": "2026-02-18T12:07:50+03:00",
"UpdatedAt": "2026-02-18T12:10:27.629+03:00",
"DeletedAt": "2026-02-18T12:32:38.237+03:00",
"title": "ewr",
"meta_title": "wer",
"meta_description": "werwer",
"phone": "wer",
"url": "wer",
"email": "wer",
"facebook": "wer",
"x": "wer",
"instagram": "wer",
"whatsapp": "ewr",
"pinterest": "wer",
"linkedin": "wer",
"slogan": "wer",
"address": "wre",
"copyright": "wer",
"map_embed": "wer",
"w_logo": "/uploads/logos/wlogo-1771405827623476000.png",
"b_logo": "/uploads/logos/blogo-1771405827627412000.png",
"is_active": false,
"w_width": 111,
"w_height": 111,
"w_quality": 100,
"w_format": "avif",
"b_width": 111,
"b_height": 111,
"b_quality": 100,
"b_format": "avif"
}
],
"page": 1,
"per_page": 20,
"total": 1
}
Response headers
content-length: 702
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 09:32:56 GMT
Responses
Code
hem soft delete hemde delete olmayan lari listele
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/settings?soft=with' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzE0MTYyMjcsImlhdCI6MTc3MTQwNTQyNywiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.X6mTnoiYJ1CUlarQlmwka0VpuDxYTIAV0QfS72AuBXs'
Request URL
http://localhost:8080/api/v1/admin/settings?soft=with
Server response
Code Details
200
Response body
{
"items": [
{
"ID": 2,
"CreatedAt": "2026-02-18T12:07:50+03:00",
"UpdatedAt": "2026-02-18T12:10:27.629+03:00",
"DeletedAt": "2026-02-18T12:32:38.237+03:00",
"title": "ewr",
"meta_title": "wer",
"meta_description": "werwer",
"phone": "wer",
"url": "wer",
"email": "wer",
"facebook": "wer",
"x": "wer",
"instagram": "wer",
"whatsapp": "ewr",
"pinterest": "wer",
"linkedin": "wer",
"slogan": "wer",
"address": "wre",
"copyright": "wer",
"map_embed": "wer",
"w_logo": "/uploads/logos/wlogo-1771405827623476000.png",
"b_logo": "/uploads/logos/blogo-1771405827627412000.png",
"is_active": false,
"w_width": 111,
"w_height": 111,
"w_quality": 100,
"w_format": "avif",
"b_width": 111,
"b_height": 111,
"b_quality": 100,
"b_format": "avif"
},
{
"ID": 1,
"CreatedAt": "2026-02-18T12:06:07.242+03:00",
"UpdatedAt": "2026-02-18T12:06:07.242+03:00",
"DeletedAt": null,
"title": "Title",
"meta_title": "Meta title",
"meta_description": "Meta description",
"phone": "Phone",
"url": "URL",
"email": "Email",
"facebook": "Facebook",
"x": "x",
"instagram": "Instagram",
"whatsapp": "Whatsapp",
"pinterest": "Pinterest",
"linkedin": "Linkedin",
"slogan": "Slogan",
"address": "Address",
"copyright": "Copyright",
"map_embed": "Map embed",
"w_logo": "/uploads/logos/wlogo-1771405567230290000.png",
"b_logo": "/uploads/logos/blogo-1771405567233377000.png",
"is_active": true,
"w_width": 100,
"w_height": 100,
"w_quality": 100,
"w_format": "avif",
"b_width": 100,
"b_height": 100,
"b_quality": 100,
"b_format": "avif"
}
],
"page": 1,
"per_page": 20,
"total": 2
}
Response headers
content-length: 1403
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 09:34:15 GMT
Responses
Code Description
200
OK

View File

@@ -0,0 +1,259 @@
Proje `frontend` klasörü altında yapılandırılmıştır. Gerekli tüm paketler (`package.json`) önceden yüklenmiştir:
- **Framework:** Next.js 16 (App Router)
- **UI:** React 19, Tailwind CSS v4, shadcn/ui
- **İkonlar:** lucide-react
- **Validasyon:** Zod
- **Auth:** NextAuth.js
- **Bildirimler:** SweetAlert2
- **Güvenlik:** nextjs-turnstile (Cloudflare)
- **Senin ile sadece Frontend Üstünde Çalışıyorum**
- **Backend ile ilgili bir şey Yapman Gerekirse Bana Söylemen Yeterli**
#######################
Silnmis ve silinmemiş hepsini getirir
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/tags?soft=with' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTY3NDEsImlhdCI6MTc3MTM4NTk0MSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.yFU_fmErhi50MgvP7PYHDr0E-Dp5FUlSnJP5OmYgqG8'
Request URL
http://localhost:8080/api/v1/admin/tags?soft=with
Server response
Code Details
200
Response body
{
"items": [
{
"id": 10,
"name": "Travel"
},
{
"id": 9,
"name": "Food"
},
{
"id": 8,
"name": "Nature"
},
{
"id": 7,
"name": "Life"
},
{
"id": 6,
"name": "Coding"
},
{
"id": 5,
"name": "Tutorial"
},
{
"id": 4,
"name": "Api"
},
{
"id": 3,
"name": "Web"
},
{
"id": 2,
"name": "Gin"
},
{
"id": 1,
"name": "Go"
}
],
"page": 1,
"per_page": 20,
"total": 10
}
Response headers
content-length: 281
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 03:41:13 GMT
#######################
Sadece silinmiş tagları getir
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/tags?soft=only' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTY3NDEsImlhdCI6MTc3MTM4NTk0MSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.yFU_fmErhi50MgvP7PYHDr0E-Dp5FUlSnJP5OmYgqG8'
Request URL
http://localhost:8080/api/v1/admin/tags?soft=only
Server response
Code Details
200
Response body
{
"items": null,
"page": 1,
"per_page": 20,
"total": 0
}
Response headers
content-length: 47
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 03:39:38 GMT
Responses
Code Description
200
OK
#######################
Yeni Tag Olusturu
curl -X 'POST' \
'http://localhost:8080/api/v1/admin/tags' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTY3NDEsImlhdCI6MTc3MTM4NTk0MSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.yFU_fmErhi50MgvP7PYHDr0E-Dp5FUlSnJP5OmYgqG8' \
-H 'Content-Type: application/json' \
-d '{
"name": "yenitag"
}'
Request URL
http://localhost:8080/api/v1/admin/tags
Server response
Code Details
201
Response body
{
"data": {
"id": 11,
"name": "yenitag"
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 35
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 03:42:05 GMT
vary: Origin
#######################
tagi gunceller
curl -X 'PUT' \
'http://localhost:8080/api/v1/admin/tags/11' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTY3NDEsImlhdCI6MTc3MTM4NTk0MSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.yFU_fmErhi50MgvP7PYHDr0E-Dp5FUlSnJP5OmYgqG8' \
-H 'Content-Type: application/json' \
-d '{
"name": "update"
}'
Request URL
http://localhost:8080/api/v1/admin/tags/11
Server response
Code Details
200
Response body
{
"data": {
"id": 11,
"name": "update"
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 34
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 03:43:10 GMT
vary: Origin
#######################
tagi siler
curl -X 'DELETE' \
'http://localhost:8080/api/v1/admin/tags/11' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTY3NDEsImlhdCI6MTc3MTM4NTk0MSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.yFU_fmErhi50MgvP7PYHDr0E-Dp5FUlSnJP5OmYgqG8'
Request URL
http://localhost:8080/api/v1/admin/tags/11
Server response
Code Details
204
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
date: Wed,18 Feb 2026 03:43:45 GMT
vary: Origin
Responses
#######################
tag restore
curl -X 'POST' \
'http://localhost:8080/api/v1/admin/tags/11/restore' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTcyMzksImlhdCI6MTc3MTM4NjQzOSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.ueKzmNpcFfyZlwruom6odx3ZegIJG_WCr5xJuepiG64' \
-d ''
Request URL
http://localhost:8080/api/v1/admin/tags/11/restore
Server response
Code Details
200
Response body
{
"data": {
"id": 11,
"name": "update"
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 34
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 03:47:36 GMT
vary: Origin

View File

@@ -0,0 +1,112 @@
# Admin Panel — Görev Tanımı (Next.js 16 + TypeScript)
## Kısa Özet
Bu görevde Next.js 16 ve paylaştığın paketler kullanılarak önce masaüstü öncelikli,
responsive bir Admin Paneli geliştirilecek; Admin
Kod üretimi için aşağıdaki gereksinimler ve kabul kriterleri tam
uygulanmalıdır.
## Teknoloji Yığını (Zorunlu)
- Next.js 16 (App Router /app)
- React 19, TypeScript
- Tailwind CSS v4, shadcn bileşenleri
- class-variance-authority, tailwind-merge
- lucide-react (ikonlar)
- sweetalert2 (bildirimler/konfirmasyonlar)
- zod (validasyon)
- next-auth (kimlik doğrulama)
- nextjs-turnstile (Cloudflare Turnstile entegrasyonu)
- tw-animate-css (isteğe bağlı animasyonlar)
Yeni büyük kütüphaneler eklemek gerekiyorsa önceden onay istenmelidir.
Küçük yardımcı util paketleri gerektiğinde kabul edilebilir ama öncelik mevcut paketlerle çözmek.
## Tasarım Sistemi ve UI
- shadcn + Tailwind üzerinde tutarlı bir design-system oluştur: tokenlar (renk, spacing, tipografi), light/dark tema.
- Temel component seti: Button, Input, Select, TextArea, Modal, Table, Pagination, Badge, Toast, Card, Form.
- class-variance-authority ile variant/size yönetimi, tailwind-merge ile conditional class birleştirme.
- İkonlar lucide-react ile sağlanacak.
- Erişilebilirlik: semantic HTML, aria attributeleri, klavye erişimi, WCAG AA hedefleri.
## Mimari ve Veri Akışı
- App Router (app/) kullan, sunucu bileşenleri (server components) ile veri yüklemesi/SSR; client components interaktivite için.
- Veri yüklemelerinde sunucu tarafı yükleme (server components) tercih edilir; client-side filtreleme/paginasyon için fetch + useState/useEffect kullanılabilir.
- Global state gerekiyorsa React Context ile minimal çözüm (yeni global state kütüphanesi eklenmeyecek).
## Kimlik Doğrulama & Yetkilendirme
- NextAuth ile güvenli oturum/JWT tabanlı kimlik doğrulama uygulanacak.
- Role-based access control: en az iki rol (superadmin, admin).
- Admin rotaları server-side yetki kontrolü ile korunacak (middleware veya server actions).
- /admin/login sayfasına Cloudflare Turnstile (nextjs-turnstile) entegre edilecek.
## Routing & Sayfalar (Zorunlu)
- /admin/login
- /admin → /admin yönlendirme (Dashboard)
- /admin (KPI kartları, son işlemler, hızlı aksiyonlar)
- /admin/users (liste, arama, filtre, pagination, CSV export)
- /admin/users/[id] (profil, roller, aktif/devre dışı)
- /admin/products (CRUD: liste, oluştur, düzenle, sil)
- /admin/orders (liste, detay, durum güncelleme)
- /admin/settings (genel, güvenlik, entegrasyonlar)
- /admin/profile
## Veri Modelleri (Örnek)
- Users: id, name, email, role, status, createdAt
- Products: id, title, sku, price, inventory, images[], status
- Orders: id, userId, items[], total, status, createdAt
(Not: Backend yoksa örnek/mock endpointler veya mevcut API ile uyumlu yapı sağlanmalı.)
## Formlar & Validasyon
- Tüm formlarda Zod ile hem client-side hem server-side validasyon.
- Form submitleri server actions veya route handlers ile işlenmeli.
- Başarı/hata bildirimleri için sweetalert2 kullanılacak.
## Dosya/Resim Yükleme
- Gerçek bir backend/3rd-party (S3) yoksa: client-side önizleme sağlayan placeholder upload akışı oluştur; upload endpoint için gerekli iskelet/protokol hazır olsun.
## Güvenlik
- Tüm admin rotaları server-side yetkilendirmeyle korunacak.
- Hassas veriler .env ile saklanacak (READMEde açıkça listelenecek).
- XSS/CSRF/SSRF risklerini azaltacak NextAuth & server actions en iyi uygulamalarına uyulacak.
## Performans & Optimizasyon
- Hedef: sayfa başlangıç süresi < 1.5s (kritik CSS minimal, resimler optimize).
- Lazy load, code-splitting, image optimization kullanımı önerilir.
## Test & Kalite
- TypeScript tipleri zorunlu, ESLint konfigürasyonuna uyulacak.
- Component-level testler opsiyonel; ek paket gerekiyorsa sonradan onay alınacak.
- README: kurulum, env değişkenleri, çalıştırma ve mimari kısa açıklama olacak.
## Hata Yönetimi & İzleme
- Merkezi error handling mekanizması.
- Kullanıcıya sweetalert2 ile başarılı/başarısız geri bildirimleri göster.
## Internationalization
- Proje i18n'ye hazır olmalı (tüm metinler merkezi çeviri kaynağından çekilecek).
## Kabul Kriterleri (Öncelikli)
1. Admin login çalışıyor; Turnstile doğrulaması entegre ve çalışır.
2. Rol tabanlı erişim ile korunan tüm /admin sayfalarına yetkisiz erişim engelleniyor.
3. Dashboard KPI kartları ve tablolar sunuyor; kullanıcı ve ürün CRUD fonksiyonları tamam.
4. Tüm formlar Zod ile client ve server validasyonu sağlıyor.
5. Component kütüphanesi shadcn + Tailwind ile tutarlı, responsive ve erişilebilir.
6. UX geri bildirimleri sweetalert2 ile gösteriliyor.
7. Kod TypeScript ile tam tiplenmiş ve ESLint uyarılarına duyarlı.
## Teslimat (Çıktı)
- Çalışır Next.js projesi (kaynak kod).
- README: kurulum, env değişkenleri (NEXTAUTH_URL, NEXTAUTH_SECRET, DATABASE_URL, TURNSTILE_SITEKEY, TURNSTILE_SECRET vb.), çalıştırma talimatları.
- Temel component listesi ve kısa kullanım notları.
- Kabul testi checklist'i (madde madde doğrulanabilir).
## Ek Kurallar & Notlar
- Yeni ana kütüphaneler eklemeden önce onay iste.
- Tasarım ve component kararları tutarlılık için belgelenmeli.
- Admin tamamlandıktan sonra müşteri-facing frontend için aynı design-system kullanılacak; bu aşama ayrı kabul kriterleriyle planlanacak.
---
Bu dosyayı doğrudan görev olarak kullan:
ve detayli bir kulanama kılavuzu hazırla.

View File

@@ -0,0 +1,306 @@
frontend
Proje `frontend` klasörü altında yapılandırılmıştır. Gerekli tüm paketler (`package.json`) önceden yüklenmiştir:
- **Framework:** Next.js 16 (App Router)
- **UI:** React 19, Tailwind CSS v4, shadcn/ui
- **İkonlar:** lucide-react
- **Validasyon:** Zod
- **Auth:** NextAuth.js
- **Bildirimler:** SweetAlert2
- **Güvenlik:** nextjs-turnstile (Cloudflare)
Hem softdelete edilmisler hermse aktif olan userleri Userler
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/users?soft=with' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTQ1NjksImlhdCI6MTc3MTM4Mzc2OSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.HCXkj1sYeR-1sXCvIQDgzgLuRVWo2NwI5M0WFTsbEtU'
Request URL
http://localhost:8080/api/v1/admin/users?soft=with
Server response
Code Details
200
Response body
{
"items": [
{
"id": 12,
"username": "aaaa bbb cccc ddddd",
"email": "arxxxxes2000@gmail.com",
"email_verified": true,
"is_admin": false
},
{
"id": 11,
"username": "update",
"email": "update@update.cem",
"email_verified": true,
"is_admin": false
},
{
"id": 10,
"username": "asasa fgfg",
"email": "aaaareaaas2ddd000@gmail.com",
"email_verified": true,
"is_admin": false,
"deleted_at": "2026-02-18T06:20:56.99+03:00"
},
{
"id": 9,
"username": "dfgdfg dfgdfg",
"email": "ares2ggddd000@gmail.com",
"email_verified": false,
"is_admin": false
},
{
"id": 8,
"username": "vbcvbcvbb",
"email": "ares2000cvbcvb@gmail.com",
"email_verified": true,
"is_admin": false
},
{
"id": 7,
"username": "qweqweqwe",
"email": "areseeeeee2000@gmail.com",
"email_verified": false,
"is_admin": false
},
{
"id": 6,
"username": "adminsss@demo.com",
"email": "ares2sss000@gmail.com",
"email_verified": true,
"is_admin": false
},
{
"id": 5,
"username": "aresds",
"email": "ares@asdf.com",
"email_verified": true,
"is_admin": false
},
{
"id": 4,
"username": "sss",
"email": "sss@ss.com",
"email_verified": false,
"is_admin": false
},
{
"id": 3,
"username": "ddd",
"email": "ddd@dd.com",
"email_verified": false,
"is_admin": false
},
{
"id": 2,
"username": "beyhan",
"email": "beyhan@beyhan.dev",
"email_verified": true,
"is_admin": true
},
{
"id": 1,
"username": "admin",
"email": "admin@gauth.local",
"email_verified": true,
"is_admin": false
}
],
"page": 1,
"per_page": 20,
"total": 12
}
Response headers
content-length: 1302
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 03:30:26 GMT
#################
sadece soft delete edilmis Userler
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/users?soft=only' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTE5NDgsImlhdCI6MTc3MTM4MTE0OCwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.MmYgMyLECZD1TcDOvDZCyWRKk9ogjFYhXnTXYUGzhMo'
Request URL
http://localhost:8080/api/v1/admin/users?soft=only
Server response
Code Details
200
Response body
{
"items": null,
"page": 1,
"per_page": 20,
"total": 0
}
Response headers
content-length: 47
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 02:22:00 GMT
############
tek useri goster
curl -X 'GET' \
'http://localhost:8080/api/v1/admin/users/11' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTE5NDgsImlhdCI6MTc3MTM4MTE0OCwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.MmYgMyLECZD1TcDOvDZCyWRKk9ogjFYhXnTXYUGzhMo'
Request URL
http://localhost:8080/api/v1/admin/users/11
Server response
Code Details
200
Response body
{
"data": {
"id": 11,
"username": "zxzx jkhjk",
"email": "addredds2dd000@gmail.com",
"email_verified": true,
"is_admin": false
}
}
Response headers
content-length: 128
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 02:23:44 GMT
#################
user iguncelle
curl -X 'PUT' \
'http://localhost:8080/api/v1/admin/users/11' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTE5NDgsImlhdCI6MTc3MTM4MTE0OCwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.MmYgMyLECZD1TcDOvDZCyWRKk9ogjFYhXnTXYUGzhMo' \
-H 'Content-Type: application/json' \
-d '{
"email": "update@update.cem",
"is_admin": false,
"username": "update"
}'
Request URL
http://localhost:8080/api/v1/admin/users/11
Server response
Code Details
200
Response body
{
"data": {
"id": 11,
"username": "update",
"email": "update@update.cem",
"email_verified": true,
"is_admin": false
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 105
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 02:25:24 GMT
vary: Origin
Responses
#################
useri sil
curl -X 'DELETE' \
'http://localhost:8080/api/v1/admin/users/10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTE5NDgsImlhdCI6MTc3MTM4MTE0OCwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.MmYgMyLECZD1TcDOvDZCyWRKk9ogjFYhXnTXYUGzhMo'
Request URL
http://localhost:8080/api/v1/admin/users/10
Server response
Code Details
200
Undocumented
Response body
{
"id": 10,
"message": "user deleted successfully"
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 47
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 02:27:59 GMT
vary: Origin
#################
User Restore
curl -X 'POST' \
'http://localhost:8080/api/v1/admin/users/10/restore' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzOTE5NDgsImlhdCI6MTc3MTM4MTE0OCwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.MmYgMyLECZD1TcDOvDZCyWRKk9ogjFYhXnTXYUGzhMo' \
-d ''
Request URL
http://localhost:8080/api/v1/admin/users/10/restore
Server response
Code Details
200
Response body
{
"data": {
"id": 10,
"username": "sfsdf. rtyrty",
"email": "aaaareaaas2ddd000@gmail.com",
"email_verified": true,
"is_admin": false
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 122
content-type: application/json; charset=utf-8
date: Wed,18 Feb 2026 02:28:49 GMT
vary: Origin

View File

@@ -0,0 +1,194 @@
once login ve registeri yapalim
frontend
Proje `frontend` klasörü altında yapılandırılmıştır. Gerekli tüm paketler (`package.json`) önceden yüklenmiştir:
- **Framework:** Next.js 16 (App Router)
- **UI:** React 19, Tailwind CSS v4, shadcn/ui
- **İkonlar:** lucide-react
- **Validasyon:** Zod
- **Auth:** NextAuth.js
- **Bildirimler:** SweetAlert2
- **Güvenlik:** nextjs-turnstile (Cloudflare)
Login Backend
curl -X 'POST' \
'http://localhost:8080/api/v1/auth/login' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"email": "beyhan@beyhan.dev",
"password": "1923btO**"
}'
Request URL
http://localhost:8080/api/v1/auth/login
Server response
Code Details
200
Response body
Download
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzNzA1NzcsImlhdCI6MTc3MTM1OTc3NywiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.zBCWJlsJxOvB4EzGn5ReutjocF884kJjFsPojbMCWiY",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzY1NDM3NzcsImlhdCI6MTc3MTM1OTc3Nywic3ViIjoyLCJ0b2tlbl90eXBlIjoicmVmcmVzaCJ9.1ASz8UcbuWY7zKRipoFuHbpTBcBMWEbp4TuNKlFffmA",
"user": {
"id": 2,
"username": "beyhan",
"email": "beyhan@beyhan.dev",
"email_verified": true,
"is_admin": true
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 498
content-type: application/json; charset=utf-8
date: Tue,17 Feb 2026 20:22:57 GMT
vary: Origin
Responses
Register Backend
curl -X 'POST' \
'http://localhost:8080/api/v1/auth/register' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"email": "ares@asdf.com",
"password": "12345678",
"username": "aresds"
}'
Request URL
http://localhost:8080/api/v1/auth/register
Server response
Code Details
201
Response body
Download
{
"message": "Registration successful. Please check your email to verify your account.",
"user": {
"id": 5,
"username": "aresds",
"email": "ares@asdf.com",
"email_verified": false,
"is_admin": false
}
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 186
content-type: application/json; charset=utf-8
date: Tue,17 Feb 2026 20:24:12 GMT
vary: Origin
Email Token Dogrulama
curl -X 'GET' \
'http://localhost:8080/api/v1/auth/verify-email?token=e77abe8a0843b480cb00174d1a234568dea7ff8965c307365617f15726b20b00' \
-H 'accept: application/json'
Request URL
http://localhost:8080/api/v1/auth/verify-email?token=e77abe8a0843b480cb00174d1a234568dea7ff8965c307365617f15726b20b00
Server response
Code Details
200
Response body
Download
{
"message": "Email verified successfully"
}
Response headers
content-length: 41
content-type: application/json; charset=utf-8
date: Tue,17 Feb 2026 20:26:14 GMT
Refresh Token Backend
curl -X 'POST' \
'http://localhost:8080/api/v1/auth/refresh' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzY1NDM3NzcsImlhdCI6MTc3MTM1OTc3Nywic3ViIjoyLCJ0b2tlbl90eXBlIjoicmVmcmVzaCJ9.1ASz8UcbuWY7zKRipoFuHbpTBcBMWEbp4TuNKlFffmA"
}'
Request URL
http://localhost:8080/api/v1/auth/refresh
Server response
Code Details
200
Response body
Download
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzNzExMjUsImlhdCI6MTc3MTM2MDMyNSwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.aW_xKEF2bWcC1xJdUTG4RB8T4ITH2ChnXNIqr8kAqXE",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzY1NDQzMjUsImlhdCI6MTc3MTM2MDMyNSwic3ViIjoyLCJ0b2tlbl90eXBlIjoicmVmcmVzaCJ9.ybzA7oG7RJFSA5azD5h3mpwEXNapb2NyO4sWV-m3Jd4"
}
Response headers
access-control-allow-credentials: true
access-control-allow-headers: Authorization,Content-Type,Accept,Origin,X-Requested-With
access-control-allow-methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
access-control-allow-origin: http://localhost:8080
access-control-max-age: 600
content-length: 396
content-type: application/json; charset=utf-8
date: Tue,17 Feb 2026 20:32:05 GMT
vary: Origin
############################
Auth ME
curl -X 'GET' \
'http://localhost:8080/api/v1/auth/me' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzEzNzIyMzIsImlhdCI6MTc3MTM2MTQzMiwiaXNfYWRtaW4iOnRydWUsInN1YiI6MiwidG9rZW5fdHlwZSI6ImFjY2VzcyJ9.LfpH9ldKqR2h1zqwXYHPNsqrzh20pYhFAdgCCEbKtwc'
Request URL
http://localhost:8080/api/v1/auth/me
Server response
Code Details
200
Response body
Download
{
"email": "beyhan@beyhan.dev",
"email_verified": true,
"id": 2,
"is_admin": true,
"username": "beyhan"
}
Response headers
content-length: 94
content-type: application/json; charset=utf-8
date: Tue,17 Feb 2026 20:51:52 GMT