getRouter(); // ══ Auth Routes ══════════════════════════════════════════════ $router->addRoute('POST', '/api/v1/auth/login', [AuthController::class, 'login']); // ══ Company Routes ═══════════════════════════════════════════ $router->addRoute('GET', '/api/v1/companies', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Companies\CompanyController::class, 'list'] ]); $router->addRoute('POST', '/api/v1/companies', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Companies\CompanyController::class, 'create'] ]); $router->addRoute('PUT', '/api/v1/companies/{id}/jofotara', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Companies\CompanyController::class, 'updateJoFotara'] ]); // ══ Invoice Routes ═══════════════════════════════════════════ $router->addRoute('GET', '/api/v1/invoices', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Invoices\InvoiceController::class, 'list'] ]); $router->addRoute('POST', '/api/v1/invoices/upload', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Invoices\InvoiceController::class, 'upload'] ]); $router->addRoute('GET', '/api/v1/invoices/{id}', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Invoices\InvoiceController::class, 'detail'] ]); // ══ External API (HMAC) ══════════════════════════════════════ $router->addRoute('POST', '/api/v1/external/invoices/upload', [ 'middleware' => [\App\Middleware\HmacMiddleware::class], 'handler' => [\App\Modules\Invoices\InvoiceController::class, 'upload'] ]); // ══ Dashboard ════════════════════════════════════════════════ $router->addRoute('GET', '/api/v1/dashboard', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Dashboard\DashboardController::class, 'getStats'] ]); // ══ Health Check ═════════════════════════════════════════════ $router->addRoute('GET', '/api/v1/health', function($request) { \App\Core\Response::json([ 'status' => 'ok', 'timestamp' => date('c'), 'php' => PHP_VERSION, 'db' => 'connected' // Simple check ]); }); // ══ SPA Shell ═══════════════════════════════════════════════ $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); if (!str_starts_with($path, '/api/v1/')) { include __DIR__ . '/shell.php'; exit; } $app->run();