Skip to content

93minki/my-subway-server

Repository files navigation

my-subway-server

지하철 실시간 도착 정보와 알림 서비스를 제공하는 Node.js 기반 서버입니다.
사용자는 웹소켓 및 푸시 알림을 통해 원하는 지하철의 도착 정보를 실시간으로 받아볼 수 있습니다.

주요 기능

  • 회원가입/로그인/로그아웃
    • JWT 기반 인증 및 세션 관리
  • 지하철 실시간 정보 조회
    • 서울 열린데이터광장 API를 활용한 실시간 도착 정보 제공
  • 지하철 도착 알림 구독
    • 특정 지하철/역을 추적하여 도착 시점에 웹 푸시 및 웹소켓 알림 제공
  • 웹소켓 실시간 업데이트
    • 클라이언트와의 실시간 데이터 송수신

API 엔드포인트

  • POST /auth/signup : 회원가입
  • POST /auth/signin : 로그인
  • POST /auth/logout : 로그아웃
  • GET /user/me : 내 정보 조회 (로그인 필요)
  • POST /subscribe/ : 알림 구독 (로그인 필요)
  • POST /subscribe/check : 구독 상태 확인 (로그인 필요)

실시간/알림 시스템

  • WebSocket
    • 실시간 지하철 정보 및 추적 상태를 클라이언트에 전송
  • Web Push
    • 지하철 도착 시점에 푸시 알림 발송

설치 및 실행

  1. 의존성 설치

    yarn install
    # 또는
    npm install
  2. 환경 변수 설정
    프로젝트 루트에 .env 파일을 생성하고 아래 항목을 설정하세요.

    # 데이터베이스
    SEQUELIZE_PASSWORD=your_mysql_password
    DATABASE_PASSWORD=your_prod_mysql_password
    
    # JWT
    JWT_SECRET=your_jwt_secret
    RT_SECRET=your_refresh_token_secret
    COOKIE_SECRET=your_cookie_secret
    
    # Web Push
    VAPID_PUBLIC_KEY=your_vapid_public_key
    VAPID_PRIVATE_KEY=your_vapid_private_key
    
    # 서울 열린데이터광장 API
    VITE_API_KEY=your_seoul_openapi_key
    
  3. DB 생성

    yarn db:create
    # 또는
    npm run db:create
  4. 서버 실행

    • 개발: yarn dev 또는 npm run dev
    • 운영: yarn start 또는 npm start

사용 기술

  • Node.js, Express
  • Sequelize, MySQL
  • WebSocket, web-push
  • JWT, bcrypt
  • dotenv, cors 등

About

my subway를 위한 서버

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published