docs: Add module guide dan security guidelines untuk API documentation
This commit is contained in:
111
MODULE_GUIDE.md
Normal file
111
MODULE_GUIDE.md
Normal file
@@ -0,0 +1,111 @@
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user