maplestory/backend/server.js
caadiq 4bbb496724 초기 프로젝트 설정
- React + Vite + Tailwind 프론트엔드
- Express + Sequelize + MariaDB 백엔드
- 넥슨 OAuth 2.0 인증 (캐릭터 목록 조회)
- 주간 보스 결정석 수익 계산기 UI (리스트형)
- Docker Compose + Caddy 리버스 프록시 설정
- 보스/난이도 이미지 에셋 포함

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 18:55:06 +09:00

49 lines
1.3 KiB
JavaScript

import express from 'express';
import cors from 'cors';
import { sessionMiddleware } from './middleware/session.js';
import authRoutes from './routes/auth.js';
import characterRoutes from './routes/characters.js';
import bossRoutes from './routes/boss/bosses.js';
import selectionRoutes from './routes/boss/selections.js';
import calculateRoutes from './routes/boss/calculate.js';
import { sequelize } from './lib/db.js';
const app = express();
const PORT = process.env.PORT || 3000;
app.use(cors({
origin: process.env.NODE_ENV === 'production'
? 'https://maple.caadiq.co.kr'
: 'http://localhost:5173',
credentials: true,
}));
app.use(express.json());
app.use(sessionMiddleware);
app.use('/api/auth', authRoutes);
app.use('/api/characters', characterRoutes);
app.use('/api/boss', bossRoutes);
app.use('/api/boss/selections', selectionRoutes);
app.use('/api/boss/calculate', calculateRoutes);
app.get('/api/health', (_req, res) => {
res.json({ status: 'ok' });
});
async function start() {
try {
await sequelize.authenticate();
console.log('DB 연결 성공');
await sequelize.sync();
console.log('테이블 동기화 완료');
app.listen(PORT, () => {
console.log(`서버 시작: http://localhost:${PORT}`);
});
} catch (err) {
console.error('서버 시작 실패:', err);
process.exit(1);
}
}
start();