Files
api-btekno/MODULE_GUIDE.md

112 lines
2.4 KiB
Markdown
Raw Normal View History

# 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
```bash
mkdir -p src/Modules/ModuleBaru
```
### 2. Buat Routes File
`src/Modules/ModuleBaru/ModuleBaruRoutes.php`:
```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":
```php
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"
```php
// 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