---
# System prepended metadata

title: MAYNOOTH 傢俱網

---

# MAYNOOTH 傢俱網

- MAYNOOTH 傢俱網後端使用 Express.js + MySQL+ MongoDB + Redis + pm2 + Docker-swarm 建立的高擴展性後端API SERVER
- 前端使用Vue打造一個全方位的電商網站。平台使用者主要是下列兩種身份，分別為一般消費者（Visitor）、商家管理員（Admin）

## 系統架構

<a href="https://imgur.com/pgLVwmp"><img src="https://i.imgur.com/pgLVwmp.jpg" title="source: imgur.com" /></a>

## 主要選用技術

<a href="https://imgur.com/z3luKYy"><img src="https://i.imgur.com/z3luKYy.png" title="source: imgur.com" /></a>

## 專案核心 User Story

### **使用者（消費者）**

**帳戶功能**
- [x]  使用者可以用 email 註冊
- [x]  使用者可以透過 Facebook 或 email 登入
- [x]  使用者可以建立自己的 profile 頁面，包括名字、地址、常有興趣的商品、生日

**商品與購物車：**
- [x]  使用者可以透過關鍵字搜索特定產品
- [x]  使用者可以瀏覽所有商品的資料
- [x]  使用者可以瀏覽特定商品的資料
- [x]  使用者可以透過 category 瀏覽商品
- [x]  使用者可以瀏覽自己的購物車清單列表
- [x]  使用者可以把商品放進購物車
- [x]  使用者可以修改購物車商品數量
- [x]  使用者可以刪除購物車裡的特定商品

**金流:**
- [x]  使用者在 check-out 頁可以更改購買數量或刪除商品
- [x]  使用者在 check-out 頁可以完成商品訂購
- [x]  使用者可以透過第三方付款頁面付款

**使用者帳戶資訊清單：**
- [x]  使用者可以瀏覽自己的訂單列表
- [x]  使用者可以瀏覽自己的訂單商品列表
- [x]  使用者可以取得訂單詳情，並知道目前訂單的狀態及訂單相關資訊
- [x]  使用者在訂單詳情中，在未出貨前，可以取消訂單

**其他:**
- [x]  使用者在購買後會受到 email 確認
- [x]  使用者能輸入 coupon code
- [x]  使用者在訂單的狀態改變時，都會收到 email 通知

### **後台管理者（店家）**

**商品管理**
- [x]  後台管理者可以把商品上架，輸入商品的基本資料(敘述、長寬高、重量、材質、顏色、圖片)及庫存、建議售價、實際售價
- [x]  後臺管理者可以更改商品基本資料(敘述、長寬高、重量、材質、顏色、圖片)及庫存、建議售價、實際售價
- [x]  後臺管理者可以看到商品庫存、建議售價、實際售價，並在庫存過低時看到警告(5個)
- [x]  後臺管理者可以下架商品
- [x]  後台管理員可以觀看系統日誌

**coupon管理:**
- [x]  後台管理員可以設定針對購物車金額的優惠：% 折扣
    - [x]  免運費條件: 總金額滿3000元，扣除運費
- [x]  後台管理員可以發放 coupon，並設定 coupon 的期限與能被使用的次數

**推銷與分析:**
- [x]  後台管理員可以針對使用者 abandon cart 發送 email 提醒
- [x]  後台管理員可以從 dashboard 上看到產品銷售狀況，並可以通知未付款使用者

**訂單管理:**
- [x]  後台管理員可以從訂單管理，看到所有成立/取消/付款/對帳/出貨的訂單
- [x]  後台管理員可以從訂單管理，進行對帳管理/出貨管理

**其他:**
- [x]  路由針對例外狀況做處理
### **客製化你的專案 (完成部分)**

**技術面:**
- [x]  使用docker-swarm架設到aws EC2

**演算法/架構設計:**
- [x]  一致性哈希算法
- [x]  快取功能

**功能:**
- [x]  聊天機器人：(後端API，前端尚未串接)

### **客製化你的專案 (尚未完成部分)**

**技術面:**

- [ ]  DOMAIN，SSH和nginx配置

**演算法/架構設計:**
- [ ]  管理者可以上傳照片，並辨識商品照片顏色
- [ ]  推薦同系列商品
- [ ]  實現DB sharding，新的ORM選型因為Sequelize不支援Partioning
- [ ]  分散式系統架構設計

## 產品網址連結

- [Demo Website](https://blooming-bastion-52657.herokuapp.com) - 前台消費者（無須登入）
    -  使用者信箱: user1@example.com 管理員密碼: 12345678
    -  使用者信箱: user2@example.com 管理員密碼: 12345678

- [Demo Website](https://blooming-bastion-52657.herokuapp.com/admin/products) - 後台管理員（須登入後跳轉到後台頁面）
    -  管理員信箱: root@example.com 管理員密碼: 12345678

- [API 文件與測試街口](https://secret-brushlands-82653.herokuapp.com/api-docs/)

- [開發用Server](https://secret-brushlands-82653.herokuapp.com/api)

- [AWS後端Server](http://3.134.252.225/api)

## 專案連結

- [前端GitHub](https://github.com/libterty/ecommerce_frontend)

- [後端GitHub](https://github.com/libterty/ecommerce_backend)

- [DockerHub Image](https://hub.docker.com/r/libterty8186/server_web)

## 小組Notion

- [Notion User Story](https://www.notion.so/b20a7c3b7e6648bb8e2954d61e52a113)
- [Notion RoadMap](https://www.notion.so/6348a7f853174057aebc65293ec2583c?v=b58b730ea2ae4a598367bcaf8b0d19df)
- [Notion Engineer Wike](https://www.notion.so/Engineering-Wiki-e121368821eb4b0da97be73b3f882c74)


## 小組簡報
- [簡報](https://www.canva.com/design/DADxny2A0DQ/share/preview?token=Vdpqe56maq7WALWnxHRJ_w&role=EDITOR&utm_content=DADxny2A0DQ&utm_campaign=designshare&utm_medium=link&utm_source=sharebutton)

## 開發畢業專案最喜歡哪個部分

- 11: 在開發專案的過程中，我十分享受與團隊成員們一同奮鬥和前進。自己設計和研究分散式系統架構把各個功能拆出來，消化理解感覺很讚。不確定自己是否能在口試前真的實作出微服務系統，但撞牆撞出來的global Cache和寫人生第一個開源包 (一致性哈希算法)感覺很開心。

- Mina: 從一開始不知道該如何應用自己所學的，並在開發時遇到困難，與組員一起討論解決問題，到最後對於自己的技術較熟悉，喜歡自身成長、與組員合作的感覺

## 組員名單以及每人畢業專案部落格
> :smirk: **[11畢業專案心得](https://medium.com/@yunchenli/alpha-camp-畢業專案-從零開始打造maynooth電商網站-bf1049a34ff3)**
> :ghost: **[Mina畢業專案心得](https://medium.com/@mp922352612/ac%E7%95%A2%E6%A5%AD%E5%B0%88%E6%A1%88-%E5%AE%B6%E5%85%B7%E9%9B%BB%E5%95%86%E7%B6%B2%E7%AB%99maynooth-b8cf61f9b116)**
