* feat: support hono rpc * add wrangler file * update name of wrangler file * add wrangler as a dependency * add compatibility_flags * trigger ci * core: add health check to docker file * expose port 80 * update custom healthcheck * feat: implement openapi * install dependencies in root * debug yml * update yml * update port * update dockerfile with envs * completely move away from apiClient * rename backend to api * refactor: update server descriptions and comment out local spec saving * update lock file * use api.classroomio.com * add support for redis * fix: add missing line break in WelcomeModal.svelte * refactor: remove wrangler configuration and update Vite config for API integration
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import 'dotenv/config';
|
|
|
|
import { Hono } from 'hono';
|
|
import { cors } from 'hono/cors';
|
|
import { courseRouter } from '$src/routes/course/course';
|
|
import { logger } from 'hono/logger';
|
|
import { mailRouter } from '$src/routes/mail';
|
|
import { prettyJSON } from 'hono/pretty-json';
|
|
import { rateLimiterMiddleware } from '$src/middlewares/rate-limiter';
|
|
import { secureHeaders } from 'hono/secure-headers';
|
|
|
|
// Create Hono app with chaining for RPC support
|
|
export const app = new Hono()
|
|
// Middleware
|
|
.use('*', logger())
|
|
.use('*', prettyJSON())
|
|
.use('*', secureHeaders())
|
|
.use(
|
|
'*',
|
|
cors({
|
|
origin: '*',
|
|
allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
|
|
allowHeaders: ['Content-Type', 'Authorization'],
|
|
exposeHeaders: ['Content-Length', 'X-Kuma-Revision'],
|
|
maxAge: 600,
|
|
credentials: true
|
|
})
|
|
)
|
|
.use('*', rateLimiterMiddleware)
|
|
|
|
// Routes
|
|
.get('/', (c) =>
|
|
c.json({
|
|
message: '"Welcome to Classroomio.com API - docs are at https://api.classroomio.com/docs"'
|
|
})
|
|
)
|
|
.route('/course', courseRouter)
|
|
.route('/mail', mailRouter)
|
|
|
|
// Error handling
|
|
.onError((err, c) => {
|
|
console.error('Error:', err);
|
|
return c.json({ error: 'Internal Server Error' }, 500);
|
|
});
|