import Fastify from 'fastify' import cors from '@fastify/cors' import { env } from './config.js' import { sqlite } from './db/client.js' import { ensureDatabaseSchema } from './db/init.js' import { registerAuthRoutes } from './routes/auth.js' import { registerPlannerRoutes } from './routes/planner.js' const app = Fastify({ logger: true, }) ensureDatabaseSchema() await app.register(cors, { origin: env.CORS_ORIGIN, credentials: true, }) await registerAuthRoutes(app) await registerPlannerRoutes(app) app.get('/health', async () => { const version = sqlite.prepare('select sqlite_version() as version').get() return { status: 'ok', service: 'ten-minute-planner-backend', database: { client: 'sqlite', version: version?.version ?? 'unknown', }, } }) app.get('/api/meta', async () => ({ auth: 'active', storage: 'sqlite', orm: 'drizzle', notes: [ '회원가입, 로그인, 현재 사용자 확인 API가 준비되어 있습니다.', '사용자별 플래너 저장 및 조회 API가 준비되어 있습니다.', ], })) try { await app.listen({ port: env.PORT, host: '0.0.0.0', }) } catch (error) { app.log.error(error) process.exit(1) }