Showing
1 changed file
with
51 additions
and
49 deletions
... | @@ -22,9 +22,9 @@ | ... | @@ -22,9 +22,9 @@ |
22 | 22 | ||
23 | ## **About the Project** | 23 | ## **About the Project** |
24 | 24 | ||
25 | -기존에 축제나 행사를 검색하기 위해서는 행사가 언제 어디서 열리는지 파악하고, 그 날짜에 맞춰서 날씨를 또 검색해 보아야 하는 번거로움이 있었다. 이러한 일련의 번거로운 과정들을 한 데 묶어 몇 번의 클릭으로 사용자가 원하는 행사 및 축제 정보를 디스플레이 함으로써 사용자의 편의 증대라는 효과를 가져올 수 있을 것으로 예상된다. | 25 | +기존에 축제나 행사를 검색하기 위해서는 행사가 언제 어디서 열리는지 파악하고, 그 날짜에 맞춰서 날씨를 또 검색해 보아야 하는 번거로움이 있었다. 이러한 일련의 번거로운 과정들을 한 데 묶어 몇 번의 클릭으로 사용자가 원하는 행사 및 축제 정보를 디스플레이 함으로써 사용자의 편의 증대라는 효과를 가져올 수 있을 것으로 예상된다. 또한 시민들의 활발한 행사 참여로 인해 지역 경제 활성화에 이바지할 수 있을 것으로 예상된다. |
26 | 26 | ||
27 | -본 서비스는 지자체에서 개최하는 행사 정보와 날씨 데이터를 API를 통하여 받아온 후 그를 조합하여 사용자에게 친숙한 인터페이스(svelte 활용)를 통해 지역 / 행사별로 날씨 정보를 한눈에 볼 수 있는 서비스를 제공한다. | 27 | +본 서비스는 지자체에서 개최하는 행사 정보와 날씨 데이터를 API를 통하여 받아온 후 그를 조합하여 사용자에게 친숙한 인터페이스(svelte 활용)를 통해 지역 / 행사별로 날씨 정보를 한눈에 볼 수 있는 서비스를 제공한다. |
28 | 28 | ||
29 | Built With | 29 | Built With |
30 | - WEB | 30 | - WEB |
... | @@ -42,19 +42,12 @@ Built With | ... | @@ -42,19 +42,12 @@ Built With |
42 | 42 | ||
43 | ### **Prerequisites** | 43 | ### **Prerequisites** |
44 | 44 | ||
45 | -1. Docker를 사용하는 경우 (**권장**) | 45 | +* [Docker 다운로드 페이지](https://docs.docker.com/engine/install/)에 접속하여 docker 및 docker-compose 설치 |
46 | - * [도커 공식 홈페이지](https://www.docker.com/)에 접속하여 docker 및 docker-compose 설치 | ||
47 | 46 | ||
48 | -1. Docker를 사용하지 않는 경우 | 47 | +* API 키를 획득하기 위해, Free API Key를 [기상청 API](https://data.kma.go.kr/api/selectApiList.do?pgmNo=42)에서 단기예보 서비스에 대한 API Key를, [관광공사 API](https://api.visitkorea.or.kr/main.do)에서 국문 관광정보 서비스에 대한 API Key를, [카카오 지도 API](https://apis.map.kakao.com/) Key를 획득 |
49 | - * [Node.js 공식 홈페이지](https://nodejs.org/ko/download/)에 접속하여 Node.js 설치 | ||
50 | - * [MongoDB 공식 홈페이지](https://www.mongodb.com/)에 접속하여 MongoDB 설치 | ||
51 | - * [Mongoexport 사용을 위한 tool](https://www.mongodb.com/try/download/database-tools?tck=docs_databasetools)에 접속하여 mongoexport 추가 기능 설치 | ||
52 | - * `Program files/mongodb/bin` 경로 안에 설치된 파일들 추가하여 확장 기능을 위한 설치 완료 | ||
53 | 48 | ||
54 | ### **Installation** | 49 | ### **Installation** |
55 | 50 | ||
56 | -* Free API Key를 [기상청 API](https://data.kma.go.kr/api/selectApiList.do?pgmNo=42), [관광공사 API](https://api.visitkorea.or.kr/main.do), [카카오 지도 API](https://apis.map.kakao.com/) 공식 사이트에서 받아온다 | ||
57 | - | ||
58 | * Windows의 경우 설치하고자 하는 폴더에 들어가서 우클릭한 후 `git bash` 를 클릭하여 터미널 창을 연다 | 51 | * Windows의 경우 설치하고자 하는 폴더에 들어가서 우클릭한 후 `git bash` 를 클릭하여 터미널 창을 연다 |
59 | 52 | ||
60 | * MacOs의 경우 터미널창을 연 후 Command Line Interface를 통하여 설치하고자 하는 폴더로 이동한다 | 53 | * MacOs의 경우 터미널창을 연 후 Command Line Interface를 통하여 설치하고자 하는 폴더로 이동한다 |
... | @@ -64,7 +57,7 @@ Built With | ... | @@ -64,7 +57,7 @@ Built With |
64 | git clone http://khuhub.khu.ac.kr/2018102190/TFT.git | 57 | git clone http://khuhub.khu.ac.kr/2018102190/TFT.git |
65 | ``` | 58 | ``` |
66 | 59 | ||
67 | -* ServiceKey 폴더 안의 text 파일에 발급받은 API 키를 입력한다 | 60 | +* API 키 적용 방법 -> ServiceKey 폴더 안의 `festival.txt`, `weather.txt` 파일에 국문 관광정보 서비스 API키와 기상청 단기예보 서비스 API를 각각 입력하고, `TFT/TFT_WEB/public/index.html` 안의 `dapi.kakao.com/v2/maps/sdk.js?appkey=########`의 # 부분에 카카오 지도 API를 입력한다 |
68 | 61 | ||
69 | ## **프로젝트 구조 / 동작 방식** | 62 | ## **프로젝트 구조 / 동작 방식** |
70 | 63 | ||
... | @@ -75,27 +68,48 @@ Built With | ... | @@ -75,27 +68,48 @@ Built With |
75 | 1. Backend Server | 68 | 1. Backend Server |
76 | 1. MongoDB Atlas와 서버를 연동하여 Database와 Node.js 연결 | 69 | 1. MongoDB Atlas와 서버를 연동하여 Database와 Node.js 연결 |
77 | 1. DB에서 json 형태의 데이터를 불러 온 후 Frontend에서 유저에 의한 요청 발생 시 Frontend로 전송 | 70 | 1. DB에서 json 형태의 데이터를 불러 온 후 Frontend에서 유저에 의한 요청 발생 시 Frontend로 전송 |
78 | -1. Service 2 - DB | 71 | +2. Service 2 - DB |
79 | 1. API로부터 받아온 정보를 관리하고 MongoDB Atlas를 활용하여 Server에 제공 | 72 | 1. API로부터 받아온 정보를 관리하고 MongoDB Atlas를 활용하여 Server에 제공 |
80 | -1. Service 3 - API Handler | 73 | + |
81 | - 1. [관광공사 API](https://api.visitkorea.or.kr/main.do)를 호출하여 Database에 Write함 | 74 | +* DB 설정 방법 : 한국관광공사 API와 날씨 API를 json 형태로 가져와서 스키마에 맞는 정보들을 선정해서 추출한 후 저장한다. docker-compose 실행에 따라서 자동으로 database가 설정된다. |
82 | - 1. [기상청 API](https://data.kma.go.kr/api/selectApiList.do?pgmNo=42)를 호출하여 날씨 및 기상 관련 정보 가져옴 | 75 | + |
76 | +* DB Schema | ||
77 | + | ||
78 | + title : 축제명 | ||
79 | + | ||
80 | + addr : 축제 개최주소 | ||
81 | + | ||
82 | + tel : 축제 문의 전화번호 | ||
83 | + | ||
84 | + mapx : 축제 지역 경도값 | ||
85 | + | ||
86 | + mapy : 축제 지역 위도값 | ||
87 | + | ||
88 | + overview : 축제에 관한 간략한 설명 | ||
89 | + | ||
90 | + firstimage : 축제 관련 사진 정보 | ||
91 | + | ||
92 | + homepage : 축제 홈페이지 | ||
93 | + | ||
94 | + eventstartdate : 축제 시작일 | ||
95 | + | ||
96 | + evemtenddate : 축제 종료일 | ||
97 | + | ||
98 | + weather : 축제 시작일 기준 3일분의 온도와 날씨 정보를 json 형태로 저장 | ||
99 | + | ||
100 | +3. Service 3 - API Handler | ||
101 | + 1. [국문 관광정보 API](https://api.visitkorea.or.kr/main.do)를 호출하여 Database에 Write함 | ||
102 | + 1. [기상청 단기예보 API](https://data.kma.go.kr/api/selectApiList.do?pgmNo=42)를 호출하여 날씨 및 기상 관련 정보 가져옴 | ||
83 | 103 | ||
84 | ## **Usage** | 104 | ## **Usage** |
85 | 105 | ||
86 | -1. Docker를 사용하는 경우 | 106 | +1. `docker-compose.yml` file이 있는 폴더에서 terminal을 연다 |
87 | - 1. `docker-compose.yml` file이 있는 폴더에서 terminal을 연다 | 107 | +1. `docker-compose up -d` 명령을 실행한다 |
88 | - 1. `docker-compose up -d` 명령을 실행한다 | 108 | +1. 서버를 종료할 때에는 `docker-compose down` 명령을 실행한다 |
89 | - 1. 서버를 종료할 때에는 `docker-compose down` 명령을 실행한다 | ||
90 | 109 | ||
91 | -1. Docker를 사용하지 않는 경우 | ||
92 | - 1. MongoDB가 정상적으로 작동되는지 확인한다 | ||
93 | - 1. TFT_API, TFT_WEB 각 폴더에서 `npm install` 명령을 실행한다 | ||
94 | - 1. 각 폴더에서 `npm start` 명령을 실행한다 | ||
95 | 110 | ||
96 | Service Overview | 111 | Service Overview |
97 | 112 | ||
98 | - | ||
99 | ![serviceOverview](/uploads/06baa0ebea9fd11478b3c6c9595dc2ad/serviceOverview.PNG) | 113 | ![serviceOverview](/uploads/06baa0ebea9fd11478b3c6c9595dc2ad/serviceOverview.PNG) |
100 | 114 | ||
101 | Select District | 115 | Select District |
... | @@ -115,21 +129,17 @@ Show total example | ... | @@ -115,21 +129,17 @@ Show total example |
115 | 129 | ||
116 | ## **Roadmap** | 130 | ## **Roadmap** |
117 | 131 | ||
118 | -- [v] Express 활용 서버 기본 베이스 구축 및 Dockerfile, README first commit 진행 | 132 | +- [v] Express 활용 서버 기본 베이스 구축 |
119 | -- [v] Frontend 개발을 위한 template와 ApiHandler 개발을 위한 template 추가 | 133 | +- [v] Frontend 개발을 위한 template과 ApiHandler 개발을 위한 template 추가 |
120 | -- [v] 관광공사 API를 활용하여 DB에 축제 정보 저장하는 기능 추가 | 134 | +- [v] 관광공사 API를 활용, DB에 축제 정보 저장 기능 추가 |
121 | -- [v] ApiHandler에서 원하지 않는 정보 걸러내는 기능 추가 | 135 | +- [v] ApiHandler에서 원하지 정보 filter 기능 추가 |
122 | -- [v] 서버 개설 시 DB와 server connect하는 기능 추가 | 136 | +- [v] 서버 개설 시 DB와 server connect 기능 추가 |
123 | -- [v] 기상청 API를 활용하여 DB에 기상 정보 저장하는 기능 추가 | 137 | +- [v] 기상청 API 활용, DB에 기상 정보 저장하는 기능 추가 |
124 | -- [v] 카카오 지도 API를 활용하여 svelte와 연동, 인터페이스 구축 | 138 | +- [v] 카카오 지도 API와 svelte 연동 및 인터페이스 구축 |
125 | -- [v] MongoDB Atlas에서 JSON 형식으로 정보 받아오는 기능 추가 | 139 | +- [v] MongoDB Atlas에서 JSON 형식의 정보 받아오는 기능 추가 |
126 | -- [v] Express와 svelte 연동 | ||
127 | - [v] Frontend에 도, 시, 군, 구 등 구획 설정 및 축제 선택 기능 추가 | 140 | - [v] Frontend에 도, 시, 군, 구 등 구획 설정 및 축제 선택 기능 추가 |
128 | -- [v] 로고 제작 및 이미지 추가 | 141 | +- [v] ApiHandler 간소화 |
129 | -- [v] Frontend와 Backend Merge 실행 | 142 | +- [v] Docker 활용, 서비스 실행 구축 |
130 | -- [v] ApiHandler 간소화 (불필요한 파일 제거) | ||
131 | -- [v] ApiHandler와 server.js merge 실행 | ||
132 | -- [v] Docker 활용하여 서비스 실행 구축 | ||
133 | - [v] Amazon AWS에 프로젝트 업로드 및 실행 예시 이미지 업로드 | 143 | - [v] Amazon AWS에 프로젝트 업로드 및 실행 예시 이미지 업로드 |
134 | 144 | ||
135 | 145 | ||
... | @@ -139,7 +149,7 @@ Show total example | ... | @@ -139,7 +149,7 @@ Show total example |
139 | 149 | ||
140 | 만약 프로젝트 발전을 위한 더 좋은 방법이 있으시다면 저희의 프로젝트를 fork하신 후 pull request를 부탁드립니다. | 150 | 만약 프로젝트 발전을 위한 더 좋은 방법이 있으시다면 저희의 프로젝트를 fork하신 후 pull request를 부탁드립니다. |
141 | 151 | ||
142 | -1. 프로젝트 fork 해오기 (` git clone http://khuhub.khu.ac.kr/2018102190/TFT.git `) | 152 | +1. 프로젝트 clone (` git clone http://khuhub.khu.ac.kr/2018102190/TFT.git `) |
143 | 153 | ||
144 | 2. 새로운 기능을 위한 branch 생성 (` git checkout -b feature/newFeature `) | 154 | 2. 새로운 기능을 위한 branch 생성 (` git checkout -b feature/newFeature `) |
145 | 155 | ||
... | @@ -151,15 +161,7 @@ Show total example | ... | @@ -151,15 +161,7 @@ Show total example |
151 | 161 | ||
152 | ## **License** | 162 | ## **License** |
153 | 163 | ||
154 | -* [Node.js License Page](https://raw.githubusercontent.com/nodejs/node/master/LICENSE) | 164 | +`LICENSE.txt` 파일에 명시되어 있습니다 |
155 | - | ||
156 | -* [svelte License Page](https://github.com/sveltejs/svelte/blob/master/LICENSE.md) | ||
157 | - | ||
158 | -* [request js License Page](https://github.com/request/request/blob/master/LICENSE) | ||
159 | - | ||
160 | -* [express js License Page](https://github.com/expressjs/express/blob/master/LICENSE) | ||
161 | - | ||
162 | -* [MongoDB License Page](https://www.mongodb.com/community/licensing) | ||
163 | 165 | ||
164 | ## **Contact** | 166 | ## **Contact** |
165 | 167 | ... | ... |
-
Please register or login to post a comment