Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Tournament API

A RESTful API built with C# and ASP.NET Core for managing e-sports/sports tournaments.

📁 Struktur Projek

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 (seperti JwtService untuk generate token autentikasi).

📦 Package Yang Digunakan

  • .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.

🚀 Endpoints

Berikut adalah beberapa endpoint utama yang tersedia di API ini:

Auth

  • POST /api/Auth/register: Registrasi akun baru.
  • POST /api/Auth/login: Login dan mendapatkan token JWT.

Tournament

  • 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).

Team

  • 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).

Player

  • 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).

Match

  • 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).

Game

  • 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).

📄 Format Response

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
}

🛠️ Getting Started

Prerequisites

  • .NET 10 SDK
  • SQL Server

Setup

  1. Clone the repository.
  2. Navigate to the Tournament_api directory.
  3. Copy appsettings.example.json to a new file named appsettings.json dan atur konfigurasinya:
    • Masukkan connection string SQL Server milik Anda.
    • Masukkan kunci rahasia (Secret Key) untuk JWT.
  4. Jalankan perintah migrasi EF Core untuk setup skema database:
    dotnet ef database update
  5. 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.

About

API Tournament Game Online

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages