---
# System prepended metadata

title: '[111-1] Web Programming Final'

---

# [111-1] Web Programming Final
## (Group 58)FindRamen 找拉麵
組員：
B08703035 財金四 呂韻涵（組長）
B08703131 財金四 鄧濬澤
B07610058 生傳五 盧家雯

## Demo影片連結：https://www.youtube.com/watch?v=E7bcJCm4G6U
## FindRamen網站連結：https://findramen-production.up.railway.app/
開啟連結請使用Chrome瀏覽器並開啟全螢幕（Safari排版會跑掉ＱＱ），並將螢幕大小縮放至80%（command加上-），目前沒有支援手機尺寸的介面，麻煩使用電腦網頁開啟。在餐廳頁面不要重整，會找不到頁面（不知道為啥）。

## GitHub 公開連結：https://github.com/chiawen0104/findramen.git
## FB社團貼文連結：https://www.facebook.com/groups/NTURicWebProg/permalink/1828605354154043/

## 在本機端開啟流程
將github上的final檔案clone下來後，到backend資料夾開終端機先yarn install，再yarn server開啟後端（載入餐廳資訊）；再到frontend資料夾開另一個終端機先yarn install，再yarn start開啟前端（純網站頁面）。
### 下載套件
- Under 'findramen/backend': download the packages:
```
yarn install
``` 
- Under 'findramen/frontend': 
```
yarn install
```

### 打開網站（Chrome, 縮放至80%（command加上-），全螢幕）
- Under 'findramen': 
```
yarn server
```
- Under 'findramen': 
```
yarn start
```


## 前言：
這是一個拉麵推薦網站，因為我們的組員都是拉麵控，但礙於每次要找新歡的時候都要一個個看google map很麻煩，而且對於
初入拉麵世界的新手們來說，拉麵的世界太深奧又太複雜，因此想要做一個統合所有資訊的網站便於認識店家和方便搜尋。
主要是以先前很紅的台北捷運拉麵地圖為基礎，將上面提到的店家都列到資料庫中，並依據接近的捷運站做分類，
其中店家資訊包含：
    店名、最近捷運站距離及步行時間、電話、地址、店家官網、營業時間、星等、tag標籤、販賣品項、相關IG食記、google map評論等等。


---

## 網站介紹
### 1. 主頁介紹
首先可以看到中間有張捷運圖，左邊為篩選欄位，右邊為餐廳列表，而點選左下角的i
可以看到網站使用介紹。
![](https://i.imgur.com/2bo05bh.jpg)

#### 操作說明:
* **左邊 -> 篩選欄位**
    ![](https://i.imgur.com/kLl5W9U.png)
> 可以根據想要的品項(熬湯/調味/派系)/風格/口味/麵條/配料(蔬果/肉)／副食進行篩選，只要將鼠標移到欄位
           上方就會出現選項，將想要的選項勾選後，下方的Selected Filters欄位會出現相應的選項。
           若要重新篩選，只要按下Clear便會一鍵清空剛才勾選的所有選項（但不包含捷運路線/捷運站選項）。
           選項勾選結束後，只要按下Search便會開始搜尋，右邊的餐廳列表則會更新成篩選後的店家，邏輯上是只要店家的
           標籤包含勾選選項的任何一個都會列入（也就是聯集的概念）。
* **中間 -> 捷運地圖**
    ![](https://i.imgur.com/rl3da0g.png)
> 總共有六條路線(Red/Blue/Green/Orange/Yellow/Brown)，點選最上面的顏色按鈕就會顯現路線上有店家的捷運站，同時也會觸發篩選，右邊的餐廳列表會更新成已點選路線的店家，可以點選好幾條路線。
           若不想要某條路線，只要再點選一次最上面的顏色按鈕，此路線的捷運站名就會隱藏，同時右邊的餐廳列表也會更新成沒有此條路線上的店家。
           若想要選擇特定捷運站(可選擇多個)，只要將鼠標移到出現的捷運站名並進行點選，右邊的餐廳列表會即時更新成特定捷運站的店家，邏輯上是所有點選的捷運站們的店家都會列入（也就是聯集的概念），同時左邊的Selected Metros也會出現相應的捷運站名。
* **右邊 -> 餐廳列表**
    ![](https://i.imgur.com/smFFxMt.png)
> 在未進行任何篩選時，會顯現出資料庫中所有的店家，其中店家資訊包含：店面照片、位於哪個路線(從頭像的顏色
           可以辨別)、店名、離最近捷運站距離及步行時間、星等、tag標籤，除了用上述的方法進行店家篩選，也可以在右上角
           的搜尋欄位直接輸入想要的店家名稱，按下搜尋後會直接更新成此店家。
           點選想要的店家就會導向此店家的詳細資訊。
           
     ！注意！
     左邊篩選欄位要在勾選完成後按下Search才會觸發右邊餐廳列表的篩選，
     而中間捷運路線和捷運站的篩選都是在點選後，右邊餐廳列表即時更新成篩選後的店家。
           
           


### 2. 餐廳頁面介紹
點選完主頁的餐廳後會跳到此餐廳頁面介紹，分為兩個部分，左方是店家資訊和相關食記，右方是google map評論(大約50則，
包含評論者、照片、星等、評語)。按下左上角的魚板(Back)可以回到主頁。
![](https://i.imgur.com/OohoflS.jpg)


#### 操作說明：
* **左邊 -> 店家資訊**
    ![](https://i.imgur.com/GkOmRdv.png)
>   從上到下分別是，店面照片、店名、星等、離最近捷運站距離及步行時間、電話、地址、官網、tag標籤、營業時間、
           2個定番(固定菜單)、限定(期間限定品項，有些店家可能沒有)、IG部落客食記(作者ig名稱、發文時間、貼文內容
           節錄、貼文照片縮圖)。
           其中，點選IG食記上的查看更多，原本右方的google map評論會變成此篇食記。
           
*  **右邊 -> google map評論 或 IG食記（點選食記後）**
    ![](https://i.imgur.com/TB7Thdj.jpg)
> google map評論大約50則，包含評論者、評論照片、評論星等、評論內容。
           IG食記包含IG縮圖(writer、post、link)、貼文內容，按下最下方的「回去看留言」按鈕可以
           回到google map評論頁面。
           
           
## 參考的程式碼
參考了hack2（Hugo Eat）的架構，主要是前端filters的建立、前後端連接以及後端get資料的部分，再創立一個我們自己設計的拉麵推薦網站。

## 使用的第三方套件
### frontend：
React, react-icons/md, styled-components, antd, AI自己畫的捷運圖片, iframe得到IG縮圖

### backend：
mongoose, express, cors, path

### data：
外部爬蟲網站：Outscraper、Apify。
Excel（餐廳資訊、google map評論、IG貼文）轉成json，再用Python將json傳入mongoDB中，建立三個collection(Restaurant, Comment, Post)。

### deploy:
Railway（有每月500小時限制）, DockerFile

## 組員負責項目
組長：呂韻涵，組員：鄧濬澤、盧家雯

* 呂韻涵： 資料搜集彙整、前端、撰寫報告（README）
* 鄧濬澤： 前端、前後端連接、後端、拍demo影片
* 盧家雯： 建立資料庫、資料搜集與清理、後端、前端、deploy

## 專題製作心得
（統整）
這次的專題真的花了很多心思去做，主要一開始在想Schema架構還有整理資訊最耗時，因為爬蟲很難爬到品項，而且拉麵店最麻煩的
就是幾乎都會不定時更改菜單內容，於是我們的作法就是一個個點進google map看店家菜單還有評論內容，找出每一家餐廳的販賣品項
和時常提到的關鍵字，再給予每個店家合適的tag，同時也參考了IG食記曾提到的期間限定拉麵品項，最後才統整出一份完善的資訊。
而前端也是很用心的弄出比較直覺的介面，像是用AI製圖、用antd排版、用iframe載入IG縮圖，
學到很多前後端的知識，也釐清了之前作業可能不清楚的地方。

