A RESTful API built with C# and ASP.NET Core for managing e-sports/sports tournaments.
Proyek ini mengikuti arsitektur berlapis yang sederhana dan terorganisir dengan baik:
Controllers/: Menangani HTTP request dan response API (misal:PlayerController,TournamentController).DTOs/(Data Transfer Objects): Objek yang digunakan untuk transfer data antara client dan server, untuk menghindari eksposur entitas database secara langsung.Entities/: Model data yang merepresentasikan tabel-tabel di dalam database (misal:Player,Team,Tournament).Data/: Berisi konfigurasi DbContext dari Entity Framework Core untuk akses ke database.Migrations/: File-file migrasi Entity Framework untuk versioning skema database.Service/: Logika bisnis dan servis tambahan (sepertiJwtServiceuntuk generate token autentikasi).
- .NET 10.0
- Microsoft.EntityFrameworkCore.SqlServer (v10.0.9): ORM untuk akses dan manajemen database SQL Server.
- Microsoft.EntityFrameworkCore.Tools (v10.0.9): Tooling untuk migrasi database EF Core.
- Microsoft.AspNetCore.Authentication.JwtBearer (v10.0.9): Provider untuk autentikasi menggunakan token JWT.
- BCrypt.Net-Next (v4.2.0): Library untuk hashing password secara aman.
- Swashbuckle.AspNetCore (v10.2.2): Generator dokumentasi Swagger UI.
- Microsoft.AspNetCore.OpenApi (v10.0.3): Dukungan OpenAPI standar untuk ASP.NET.
Berikut adalah beberapa endpoint utama yang tersedia di API ini:
POST /api/Auth/register: Registrasi akun baru.POST /api/Auth/login: Login dan mendapatkan token JWT.
GET /api/Tournament: Mendapatkan semua tournament.GET /api/Tournament/{slug}: Mendapatkan detail tournament berdasarkan Slug (Public).POST /api/Tournament: Membuat tournament baru (Admin).PUT /api/Tournament/{id}: Memperbarui data tournament (Admin).DELETE /api/Tournament/{id}: Menghapus tournament (Admin).
GET /api/Team: Mendapatkan semua tim.GET /api/Team/{slug}: Mendapatkan detail tim berdasarkan Slug (Public).POST /api/Team: Membuat tim baru (Admin).PUT /api/Team/{id}: Memperbarui data tim (Admin).DELETE /api/Team/{id}: Menghapus tim (Admin).
GET /api/Player: Mendapatkan semua pemain.GET /api/Player/{slug}: Mendapatkan detail pemain berdasarkan Slug (Public).POST /api/Player: Membuat pemain baru (Admin).PUT /api/Player/{id}: Memperbarui data pemain (Admin).DELETE /api/Player/{id}: Menghapus pemain (Admin).
GET /api/Match: Mendapatkan semua pertandingan.GET /api/Match/{slug}: Mendapatkan detail pertandingan berdasarkan Slug (Public).POST /api/Match: Membuat pertandingan baru (Admin).PUT /api/Match/{id}: Memperbarui data pertandingan (Admin).DELETE /api/Match/{id}: Menghapus pertandingan (Admin).
GET /api/Game: Mendapatkan semua jenis permainan/game.GET /api/Game/{slug}: Mendapatkan detail permainan berdasarkan Slug (Public).POST /api/Game: Membuat jenis permainan baru (Admin).PUT /api/Game/{id}: Memperbarui data permainan (Admin).DELETE /api/Game/{id}: Menghapus jenis permainan (Admin).
Setiap respons dari API dibungkus (wrapped) dalam objek standar ApiResponse<T> agar formatnya konsisten dan mudah diproses oleh klien (frontend).
Contoh format respons ketika sukses:
{
"success": true,
"message": "Success",
"data": {
"id": 1,
"name": "Team A"
}
}Contoh format respons ketika terjadi error:
{
"success": false,
"message": "Data tidak ditemukan",
"data": null
}- .NET 10 SDK
- SQL Server
- Clone the repository.
- Navigate to the
Tournament_apidirectory. - Copy
appsettings.example.jsonto a new file namedappsettings.jsondan atur konfigurasinya:- Masukkan connection string SQL Server milik Anda.
- Masukkan kunci rahasia (Secret Key) untuk JWT.
- Jalankan perintah migrasi EF Core untuk setup skema database:
dotnet ef database update
- Jalankan aplikasi:
dotnet run
Sekali lagi, jika dijalankan secara lokal, Anda bisa membuka https://localhost:<port>/swagger Dan Di Postman https://localhost:<port>/api/Documentation (Dan jangan lupa untuk login terlebih dahulu untuk mendapatkan JWT Token) untuk melihat, mencoba, dan menguji dokumentasi endpoint secara interaktif.