feat: Services page — individual cards, full CRUD, no custom TCP
Rewrote ServicesComponent: - Each service is its own Card (not rows in a table) - "Add Service" button with form (domain, backend, type, reach, subdomains) - Deregister button per service - Wildcard services show as *.domain - Expandable detail view with DNS/Proxy/TLS status - Removed separate "Custom TCP Routes" section — TCP routes are just services with type tcp-passthrough - Added register/deregister methods to servicesApi Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,12 @@ export const servicesApi = {
|
||||
async list(): Promise<{ services: RegisteredService[] }> {
|
||||
return apiClient.get('/api/v1/services');
|
||||
},
|
||||
async register(svc: { domain: string; backend: { address: string; type: string; health?: string }; reach: string; subdomains?: boolean; source?: string }): Promise<{ message: string; service: RegisteredService }> {
|
||||
return apiClient.post('/api/v1/services', svc);
|
||||
},
|
||||
async deregister(domain: string): Promise<{ message: string }> {
|
||||
return apiClient.delete(`/api/v1/services/${domain}`);
|
||||
},
|
||||
};
|
||||
|
||||
// HAProxy
|
||||
|
||||
Reference in New Issue
Block a user