매일 아침 전 세계 경제 뉴스를 AI로 분석하여 제공하는 서비스입니다.
백엔드:
- 언어/프레임워크: Node.js 20+ / Express.js (TypeScript)
- ORM: mysql2 (직접 쿼리) + TypeORM (선택적)
- 스케줄러: node-cron
- API 클라이언트: axios
- 검증: joi / zod
프론트엔드:
- 프레임워크: React 18+ with Vite
- 언어: TypeScript
- UI 라이브러리: Tailwind CSS
- 상태 관리: React Query + Context API
- 라우팅: React Router v6
데이터베이스:
- MySQL 8.0+
- 캐싱: Redis (선택적, Phase 3)
인프라:
- 컨테이너: Docker + Docker Compose
- 배포: AWS EC2 / Google Cloud Run
- CI/CD: GitHub Actions
외부 API:
- OpenAI API (GPT-4 Turbo)
- NewsAPI.org (뉴스 수집)
- Google AdSense (수익화)
장점:
- 확장성: 비동기 I/O 기반으로 뉴스 수집 및 AI 분석 등 외부 API 호출에 최적
- 모바일 API 지원: RESTful API를 통해 Flutter/React Native 앱과 쉽게 통합
- 생태계: npm 패키지 생태계가 풍부 (OpenAI SDK, 스케줄러, DB 드라이버 등)
- 개발 속도: JavaScript/TypeScript 단일 언어로 풀스택 개발 가능
- 유지보수: TypeScript로 타입 안정성 확보, 대규모 프로젝트 관리 용이
대안 검토:
- Python (FastAPI): AI/ML 생태계는 강력하나, 프론트엔드와 언어 이질성
- Java (Spring Boot): 엔터프라이즈급이나 MVP 단계에서 과도한 보일러플레이트
- Go: 성능은 우수하나 생태계가 상대적으로 작음
장점:
- 반응형 지원: Tailwind CSS의 모바일 퍼스트 디자인으로 손쉬운 반응형 구현
- SEO: Vite의 빠른 빌드 + React 18의 SSR 지원 (필요 시 Next.js로 전환 가능)
- AdSense 통합: React의 컴포넌트 기반 구조로 광고 영역 관리 용이
- 개발자 경험: Vite의 HMR로 빠른 개발, Tailwind로 CSS 작성 시간 단축
- 커뮤니티: 방대한 React 생태계와 UI 라이브러리 활용 가능
대안 검토:
- Next.js: SSR/SSG 지원으로 SEO에 유리하나, MVP 단계에서는 과도할 수 있음 (Phase 2에서 고려)
- Vue.js: 학습 곡선은 낮으나, 생태계와 채용 시장에서 React보다 작음
- Svelte: 성능은 우수하나, 생태계가 작고 프로덕션 사례가 적음
Phase 2 크로스 플랫폼:
-
1순위: Flutter
- 단일 코드베이스로 iOS/Android 동시 지원
- 네이티브 성능과 UI
- Dart 언어는 TypeScript와 유사해 학습 곡선 낮음
- FCM(Firebase Cloud Messaging) 푸시 알림 통합 용이
-
2순위: React Native
- React 개발자라면 즉시 적응 가능
- 웹 코드 일부 재사용 가능
- Expo를 통한 빠른 프로토타이핑
API 재사용성:
- RESTful API 설계로 웹/모바일 클라이언트 모두 동일한 엔드포인트 사용
- JWT 기반 인증 (Phase 2에서 추가)
- API 버전 관리 (/api/v1)
장점:
- 안정성: 금융/경제 데이터 저장에 검증된 RDBMS
- JSON 지원: MySQL 8.0의 JSON 타입으로 affected_sectors 같은 배열 저장
- 트랜잭션: ACID 속성 보장
- 확장성: 인덱싱, 파티셔닝 등 최적화 기능 풍부
- 호스팅: AWS RDS, Google Cloud SQL, PlanetScale 등 매니지드 서비스 다양
장점:
- Node.js 프로세스 내에서 동작 (별도 cron 데몬 불필요)
- 간단한 설정으로 매일 새벽 자동 실행 구현
- 타임존 설정 지원 (Asia/Seoul)
대안:
- AWS EventBridge / Google Cloud Scheduler: 클라우드 서비스 의존성 증가
- Linux cron: 로컬 환경과 클라우드 환경 설정 불일치 가능성
econoSight/
├── backend/ # Node.js + Express 백엔드
│ ├── src/
│ │ ├── api/ # REST API 라우터
│ │ │ ├── routes/
│ │ │ │ ├── news.routes.ts
│ │ │ │ └── health.routes.ts
│ │ │ └── index.ts
│ │ ├── services/ # 비즈니스 로직
│ │ │ ├── newsCollector.service.ts # 뉴스 수집
│ │ │ ├── aiAnalyzer.service.ts # OpenAI 분석
│ │ │ └── scheduler.service.ts # 자동 실행
│ │ ├── models/ # 데이터베이스 모델
│ │ │ ├── database.ts
│ │ │ └── news.model.ts
│ │ ├── utils/ # 유틸리티
│ │ │ ├── logger.ts
│ │ │ └── errorHandler.ts
│ │ ├── config/ # 환경 설정
│ │ │ └── config.ts
│ │ └── app.ts # Express 앱
│ ├── tests/ # 테스트 코드
│ ├── package.json
│ └── tsconfig.json
├── frontend/ # React + Vite 프론트엔드
│ ├── public/
│ ├── src/
│ │ ├── components/ # 재사용 컴포넌트
│ │ │ ├── NewsList.tsx
│ │ │ ├── NewsCard.tsx
│ │ │ ├── NewsModal.tsx
│ │ │ └── AdBanner.tsx
│ │ ├── pages/ # 페이지 컴포넌트
│ │ │ ├── HomePage.tsx
│ │ │ └── NotFoundPage.tsx
│ │ ├── services/ # API 호출
│ │ │ └── api.ts
│ │ ├── types/ # TypeScript 타입
│ │ │ └── news.types.ts
│ │ ├── hooks/ # 커스텀 훅
│ │ ├── styles/ # 글로벌 스타일
│ │ ├── App.tsx
│ │ └── main.tsx
│ ├── package.json
│ ├── tsconfig.json
│ ├── vite.config.ts
│ └── tailwind.config.js
├── database/ # 데이터베이스 스크립트
│ ├── schema.sql # DDL
│ └── migrations/ # 마이그레이션
├── docker-compose.yml # Docker 구성
├── .env.example # 환경 변수 예시
├── .gitignore
└── README.md
- 자동 뉴스 수집 (NewsAPI)
- OpenAI API를 통한 뉴스 분석
- 뉴스 요약
- 영향받을 경제 분야 식별
- 시장 감성 분석 (긍정/부정/중립)
- MySQL 데이터베이스 저장
- REST API 제공
- 반응형 웹 인터페이스
- Google AdSense 준비
- 매일 자동 실행 스케줄러
- Flutter/React Native 앱 개발
- FCM 푸시 알림
- 앱 스토어 배포
- 사용자 맞춤 필터링
- 다국어 지원
- Redis 캐싱
- 성능 모니터링
- Node.js 20+
- MySQL 8.0+
- Docker & Docker Compose (선택)
- OpenAI API Key
- NewsAPI Key
# 1. 저장소 클론
git clone <repository-url>
cd econoSight
# 2. 환경 변수 설정
cp .env.example .env
# .env 파일을 열어 API 키 입력
# 3. 데이터베이스 설정
mysql -u root -p < database/schema.sql
# 4. 백엔드 설치 및 실행
cd backend
npm install
npm run dev
# 5. 프론트엔드 설치 및 실행 (새 터미널)
cd frontend
npm install
npm run devdocker-compose up -d뉴스 목록 조회
Query Parameters:
date: yyyy-mm-dd (선택, 기본값: 오늘)limit: number (선택, 기본값: 20)
Response:
{
"success": true,
"data": [
{
"id": 1,
"news_date": "2024-12-09",
"title": "Fed, 기준금리 동결 결정",
"summary": "미국 연방준비제도가...",
"affected_sectors": ["금융", "부동산"],
"market_sentiment": "negative",
"sentiment_score": -0.65,
"source_url": "https://..."
}
],
"total": 45
}뉴스 상세 조회
최신 뉴스 조회
- 입력: $10.00 / 1M tokens
- 출력: $30.00 / 1M tokens
- 월 예상 비용: $30-50 (일 10건 분석 기준)
- 무료 플랜: 100 requests/day (개발용)
- Developer 플랜: $449/month (프로덕션용)
- EC2 t3.micro: $8.50/month
- RDS db.t3.micro: $15/month
- 총 월 예상 비용: $53-73
MIT License
이슈 트래커: [GitHub Issues]