Files
zeavis-edu/apps/api/src/index.ts
T
MythEclipseandClaude 41e0501e6b fix(tauri): add absolute API base URL default and CORS origins for Android WebView
- Set VITE_API_BASE_URL default to production API URL in api-client.ts
  so fetch() uses absolute URLs instead of relative paths that fail on Tauri
- Add tauri://localhost and https://tauri.localhost to API CORS allowed origins
- Also fix .env WEB_APP_URL from stale .tech to .my.id

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-15 14:32:54 +07:00

54 lines
1.8 KiB
TypeScript

import { Elysia } from 'elysia';
import cors from '@elysiajs/cors';
import { env, assertRequiredEnv } from './config/env';
import { healthRoutes } from './routes/health';
import { statusRoutes } from './routes/status';
import { diseaseRoutes } from './routes/diseases';
import { classificationRoutes } from './routes/classifications';
import { diagnosisRoutes } from './routes/diagnoses';
import { dashboardRoutes } from './routes/dashboard';
import { authRoutes } from './routes/auth';
import { expertRoutes } from './routes/expert';
import { metricsRoutes } from './routes/metrics';
import { httpRequestCounter, httpRequestDuration, httpRequestsActive } from './lib/telemetry';
import './types';
assertRequiredEnv();
const app = new Elysia()
.use(cors({
origin: env.allowedOrigins,
credentials: true,
}))
.use(metricsRoutes)
.onBeforeHandle(({ request, path }) => {
httpRequestsActive.inc();
request.metricsStart = performance.now();
request.metricsPath = path;
})
.onAfterHandle(({ request, set }) => {
const start = (request as any).metricsStart as number | undefined;
const path = (request as any).metricsPath as string | undefined;
if (start && path) {
const duration = (performance.now() - start) / 1000;
const method = request.method;
const status = set.status ?? 200;
httpRequestCounter.labels(method, path, String(status)).inc();
httpRequestDuration.labels(method, path).observe(duration);
}
httpRequestsActive.dec();
})
.use(healthRoutes)
.use(statusRoutes)
.use(authRoutes)
.use(diseaseRoutes)
.use(classificationRoutes)
.use(diagnosisRoutes)
.use(expertRoutes)
.use(dashboardRoutes)
.listen(env.port);
console.log(`ZeaVis Edu API running at http://${app.server?.hostname}:${app.server?.port}`);
export type App = typeof app;