Public Source Viewer
비나래아카이브 개발자 포털
실제 서비스 구조를 살펴볼 수 있는 공개용 코드 뷰어입니다. 인증, 세션, 외부 연동, 토큰, 관리자 식별 등 보안상 민감한 구현은 파일 단위 또는 줄 단위로 검열됩니다.
src/routes/index.ts
공개 가능
1
import { Application } from 'express';
2
import express from 'express';
3
import path from 'path';
4
import { setupSessionMiddleware, setupSecurityMiddleware, setupCsrfMiddleware, themeMiddleware, csrfErrorHandler } from '../middleware';
5
import { UPLOAD_DIR, PUBLIC_DIR } from '../utils/paths';
6
7
// Import all route modules
8
import aiRoutes from './ai.routes';
9
import blogRoutes from './blog.routes';
10
import authRoutes from './auth.routes';
11
import userRoutes from './user.routes';
12
import uploadRoutes from './upload.routes';
13
import adminRoutes from './admin.routes';
14
import gameRoutes from './game.routes';
15
import communityRoutes from './community.routes';
16
import trainRoutes from './train.routes';
17
import discordRoutes from './discord.routes';
18
import personaRoutes from './persona.routes';
19
import kivotosRoutes from './kivotos.routes';
20
import mainRoutes from './main.routes';
21
import novelRoutes from './novel.routes';
22
import studioRoutes from './studio.routes';
23
import legacyRoutes from './legacy.routes';
24
import pushRoutes from './push.routes';
25
import endRoutes from './end.routes';
26
import personalNoteRoutes from './personal-note.routes';
27
import monitoringRoutes from './monitoring.routes';
28
import developerPortalRoutes from './developer-portal.routes';
29
import voicepeakRoutes from './voicepeak.routes';
30
import japaneseLoungeRoutes from './japanese-lounge.routes';
31
import securityDashboardRoutes from './security-dashboard.routes';
32
import archiveSearchRoutes from './archive-search.routes';
33
import backupRoutes from './backup.routes';
34
import discordArchiveRoutes from './discord-archive.routes';
35
import discordSearchArchiveRoutes from './discord-search-archive.routes';
36
import hinanaPediaRoutes from './hinana-pedia.routes';
37
import hinanaRailRoutes from './hinana-rail.routes';
38
39
export default function setupRoutes(app: Application): void {
40
// Setup middleware
41
setupSessionMiddleware(app);
42
setupSecurityMiddleware(app);
43
app.use(themeMiddleware);
44
setupCsrfMiddleware(app);
45
46
// Setup static file serving for uploads
47
app.use('/uploads', express.static(path.join(PUBLIC_DIR, 'uploads')));
48
49
// Register all routes
50
app.use(endRoutes); // end.hinana.moe routes (subdomain)
51
app.use(authRoutes); // Auth routes (login, logout, signup)
52
app.use(userRoutes); // User/settings routes
53
app.use(aiRoutes); // AI chat routes
54
app.use(personalNoteRoutes); // Personal notes routes
55
app.use(voicepeakRoutes); // Local Voicepeak narrator tool
56
app.use(japaneseLoungeRoutes); // Japanese/Korean TTS lounge
57
app.use(securityDashboardRoutes); // Security operations dashboard
58
app.use(archiveSearchRoutes); // Cross-archive search
59
app.use(backupRoutes); // Admin backup import/export
60
app.use(discordArchiveRoutes); // Discord AI Chat archive (admin)
61
app.use(discordSearchArchiveRoutes); // Discord GPT web-search archive
62
app.use(hinanaPediaRoutes); // Discord /피디아 작품 평가
63
app.use(hinanaRailRoutes);
64
app.use(blogRoutes); // Blog routes
65
app.use(uploadRoutes); // Upload routes
66
app.use(adminRoutes); // Admin routes
67
app.use(monitoringRoutes); // Monitoring/admin feature flags
68
app.use(developerPortalRoutes); // Public redacted source viewer
69
app.use(gameRoutes); // Game routes (tetris)
70
app.use(communityRoutes); // Community routes (lounge, plaza)
71
app.use(trainRoutes); // Train route
72
app.use(discordRoutes); // Discord share route
73
app.use(personaRoutes); // Persona routes
74
app.use(kivotosRoutes); // Kivotos Express Railway
75
app.use(novelRoutes);
76
app.use(mainRoutes); // Main page routes
77
app.use(studioRoutes); // Hinana Studio series showcase
78
app.use(pushRoutes); // Web Push subscription routes
79
app.use(legacyRoutes); // Legacy routes
80
81
// CSRF error handler (must be after routes)
82
app.use(csrfErrorHandler);
83
}
84