# 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)**