Files
api-btekno/MODULE_GUIDE.md

2.4 KiB

Panduan Menambah Module Baru

📦 Struktur Module

Setiap module baru mengikuti pola yang sama:

src/Modules/ModuleBaru/
 ├── ModuleBaruRoutes.php    # Register routes
 ├── Controller.php           # Request handler
 └── Service.php              # Business logic

🚀 Langkah Menambah Module

1. Buat Struktur Folder

mkdir -p src/Modules/ModuleBaru

2. Buat Routes File

src/Modules/ModuleBaru/ModuleBaruRoutes.php:

<?php

declare(strict_types=1);

namespace App\Modules\ModuleBaru;

use Slim\App;

class ModuleBaruRoutes
{
    public static function register(App $app): void
    {
        $app->group('/modulebaru', function ($group) {
            $group->group('/v1', function ($v1Group) {
                // Routes di sini
                $v1Group->get('/endpoint', [Controller::class, 'method']);
            });
        });
    }
}

3. Register di public/index.php

Tambahkan di bagian "Register module routes":

use App\Modules\ModuleBaru\ModuleBaruRoutes;

// ...

// Register module routes
HealthRoutes::register($app);
AuthRoutes::register($app);
RetribusiRoutes::register($app);
ModuleBaruRoutes::register($app);  // <-- Tambahkan di sini

4. Update OpenAPI Spec (Opsional)

Edit public/docs/openapi.json dan tambahkan endpoint baru di paths.

Contoh: Module "Parkir"

// src/Modules/Parkir/ParkirRoutes.php
namespace App\Modules\Parkir;

use App\Middleware\JwtMiddleware;
use Slim\App;

class ParkirRoutes
{
    public static function register(App $app): void
    {
        $jwtMiddleware = new JwtMiddleware();
        
        $app->group('/parkir', function ($group) use ($jwtMiddleware) {
            $group->group('/v1', function ($v1Group) use ($jwtMiddleware) {
                $v1Group->get('/zones', [ParkirController::class, 'getZones'])
                    ->add($jwtMiddleware);
            });
        });
    }
}

🔄 Best Practices

  1. Isolasi: Setiap module independen
  2. Naming: Gunakan namespace yang jelas
  3. Routes: Group by module name
  4. Versioning: Gunakan /v1 untuk future compatibility
  5. Middleware: Apply di level group atau route

📝 Checklist Module Baru

  • Buat folder src/Modules/ModuleName/
  • Buat ModuleNameRoutes.php dengan method register()
  • Buat Controller & Service (jika perlu)
  • Register di public/index.php
  • Test routes
  • Update OpenAPI spec (opsional)
  • Commit & push