Skip to content
This repository has been archived by the owner on May 28, 2022. It is now read-only.

hoony9x/hyu_oms_api_v3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HYU-OMS API Version 3

한양대학교 주문관리시스템은 2014년도에 처음 만들어진 후 매년 학교 축제 주점에서 사용되고 있습니다.
본 Repository 는 API 서버 코드입니다.

개발 역사

  • 2014년
    • 최초 개발, PHP5 기반
    • Facebook, Kakao 로그인 사용
  • 2015년
    • 특별한 업데이트 없음
  • 2016년
    • Front-End 와 Back-End 를 분리
    • Front-End 를 Static Server 를 이용하여 제공하기 시작
    • Front-End 를 AngularJS 를 이용하여 제작. (AngularJS is not an Angular!)
    • Back-End 를 PHP 에서 Node.JS (with ExpressJS) 로 변경
    • Social Login 제거
  • 2017년
    • Front-End UI 변경 (Semantic UI 사용)
    • Front-End 를 React 를 이용하여 제작.
    • Back-End 언어를 Node.JS -> Python3 (with Flask) 로 변경
    • Social Login 복원 (Facebook, Kakao)
    • 이 때부터 발생되는 모든 기록을 그대로 유지 중
  • 2018년
    • Back-End 언어는 그대로 유지
    • Front-End UI 변경 (Material UI 사용)
  • 2019년
    • Back-End 언어를 Python3 -> Node.JS (with ExpressJS) 로 변경
    • Front-End UI 일부 변경 (Material UI 는 그대로 유지)
    • 실시간 업데이트를 위해 Socket.IO 도입.
    • 그룹 가입 방식을 변경
      • 기존에 사용자가 특정 그룹의 Sign Up code 를 입력하도록 했다면
      • 이제는 가입 가능한 그룹 목록을 클릭하여 가입 신청을 하도록 변경.

HYU-OMS API 서버를 운영하기 위해 필요한 것들

  • Node.JS 10.x or higher
  • MySQL 5.7 or higher

서버를 시작하기 전에 미리 세팅해야 하는 것

/src 디렉터리에는 config.js 라는 파일이 존재합니다. 이 파일은 설정 파일이며 다음 2가지 방법 중 하나를 선택하실 수 있습니다.

  1. 해당 파일의 내용에 필요한 정보를 직접 지정한다.
  2. Environment Variable 설정을 통해 정보를 지정한다.

아래 변수들은 서버 시작 전에 반드시 값을 지정하셔야 하며 지정하지 않을 경우 서버가 실행되지 않습니다.
v3.mysql.host, v3.mysql.user, v3.mysql.password, v3.mysql.database, v3.jwt.secret_key, v3.aes.key

각각의 변수에 대응하는 Environment Variable 은 다음과 같습니다.
API_V3_MYSQL_HOST, API_V3_MYSQL_USER, API_V3_MYSQL_PASSWD, API_V3_MYSQL_DB, API_V3_JWT_SECRET_KEY, API_V3_AES_KEY

mysql database 는 사전에 생성이 되어 있어야 하며 지정한 유저가 해당 DB 에 대해서 SELECT, INSERT, UPDATE, DELETE Query 를 할 수 있도록 권한이 지정되어 있어야 합니다.
서버가 시작하게 되면 필요한 테이블이 자동으로 생성되게 됩니다.

서버 시작하기 (Development)

$ npm install
$ NODE_ENV=development PORT=[YOUR_CUSTOM_PORT_NUM] npm start

서버 시작하기 (Production)

$ npm install
$ NODE_ENV=production PORT=[YOUR_CUSTOM_PORT_NUM] npm start

npm start 명령은 npm run build 를 우선 시행하게 되며 이 명령의 결과로 build directory 가 생성되게 됩니다.

기타 안내

  • 서버는 UTC timezone 을 사용하도록 하드코딩 되어 있습니다. (/src/index.js 의 13번째 줄 참고)
  • Environment Variable PORT 값을 지정하지 않을 경우 3000번 포트에서 서버가 가동이 되게 됩니다.
  • 서버가 죽었을 경우 다시 자동으로 시작할 수 있도록 조치를 하는 것을 권장합니다.
    • 저는 pm2 를 사용합니다.
  • Nginx 를 앞단에 두고 사용하는 것을 권장합니다.

Todo

  • 실시간 (에 가까운?) 업데이트 기능 추가
    • 이전에는 일정 시간마다 데이터를 새로 받아오게끔 Front-End 쪽 코드에 구현을 해놨는데 이번에는 어떻게 바꿔볼 지 고민 중입니다. Socket.IO 도입을 고려했고 실제로 테스트까지 진행을 해봤으나 네트워크가 불안정한 경우 제 기능을 못하는 듯 하여 일단은 다시 제거했습니다.
  • 일정 시간 내 요청 수 제한
    • 추가 해야 하는데 후순위에 밀려서 자꾸 안하고 있었습니다(...)
  • Push Notification
    • iOS Safari 에서 아직 Web Push 를 지원하지 않아서 보류 중입니다.

About

HYU-OMS API (Using Node.JS with ExpressJS)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published