Files
travel/server/server.js
Hyungi Ahn fd5a68e44a 🎯 프로젝트 리브랜딩: Kumamoto → Travel Planner v2.0
 주요 변경사항:
- 프로젝트 이름: kumamoto-travel-planner → travel-planner
- 버전 업그레이드: v1.0.0 → v2.0.0
- 멀티유저 시스템 구현 (JWT 인증)
- PostgreSQL 마이그레이션 시스템 추가
- Docker 컨테이너 이름 변경
- UI 브랜딩 업데이트 (Travel Planner)
- API 서버 및 인증 시스템 추가
- 여행 공유 기능 구현
- 템플릿 시스템 추가

🔧 기술 스택:
- Frontend: React + TypeScript + Vite
- Backend: Node.js + Express + JWT
- Database: PostgreSQL + 마이그레이션
- Infrastructure: Docker + Docker Compose

🌟 새로운 기능:
- 사용자 인증 및 권한 관리
- 다중 여행 계획 관리
- 여행 템플릿 시스템
- 공유 링크 및 댓글 시스템
- 관리자 대시보드
2025-11-25 10:39:58 +09:00

67 lines
1.9 KiB
JavaScript

const express = require('express');
const cors = require('cors');
const path = require('path');
const { initializeDatabase } = require('./db');
const { runMigrations } = require('./migrate');
const travelPlanRoutes = require('./routes/travelPlans');
const basePointsRoutes = require('./routes/basePoints');
const uploadsRoutes = require('./routes/uploads');
const { router: authRoutes } = require('./routes/auth');
const setupRoutes = require('./routes/setup');
const app = express();
const PORT = process.env.PORT || 3000;
// 미들웨어
app.use(cors());
app.use(express.json());
// 정적 파일 제공 (업로드된 이미지)
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));
// 로그 미들웨어
app.use((req, res, next) => {
console.log(`${req.method} ${req.path}`);
next();
});
// 라우트
app.use('/api/auth', authRoutes);
app.use('/api/setup', setupRoutes);
app.use('/api/travel-plans', travelPlanRoutes);
app.use('/api/base-points', basePointsRoutes);
app.use('/api/uploads', uploadsRoutes);
// 헬스 체크
app.get('/health', (req, res) => {
res.json({ status: 'ok', timestamp: new Date().toISOString() });
});
// 에러 핸들러
app.use((err, req, res, next) => {
console.error('Error:', err);
res.status(500).json({ error: err.message });
});
// 서버 시작
async function startServer() {
try {
// 데이터베이스 초기화 (기존 스키마)
await initializeDatabase();
// 마이그레이션 실행 (새로운 기능 추가)
await runMigrations();
app.listen(PORT, '0.0.0.0', () => {
console.log(`🚀 Server running on port ${PORT}`);
console.log(`📊 API available at http://localhost:${PORT}`);
console.log(`🗄️ Database: Using existing kumamoto_map database`);
});
} catch (error) {
console.error('Failed to start server:', error);
process.exit(1);
}
}
startServer();