# A+ Project - Clone HackMD (by T4) ### Key challenges * 離線編輯/儲存 * 多人共筆 * [前端效能優化](https://medium.com/@chihsuan/%E7%B6%B2%E9%A0%81%E5%89%8D%E7%AB%AF%E6%95%88%E8%83%BD%E5%84%AA%E5%8C%96%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98-5993ccdb6f0d) ### User Stories * Authentication * [online] user can signup with email * [online] user can signin with email and password * [online] user can logout * 💫 [online] user can edit profile * Post * [online] user can create a new post * [online] user can edit a post * [online] user can delete a post * 💫 [online] user can publish and share a post with URL * 💫 [online] user can un-publish a post * ⭐️ [offline] user can create a new post * ⭐️ [offline] user can edit a post * Collaboration * ⭐️ [online] user can invite other user as collaborator * ⭐️ [online] users can edit a post at the same time *** ### ERD and API Refer to * https://github.com/tsungtingdu/hackmd_clone_api_server * https://hackmd-clone.herokuapp.com/api-doc/#/ *** *** ### Teck stack #### Front-end * React * React Hook * Redux * CSS framework * Material UI * Material Kit React * React Bootstrap * Jest `optional` #### Back-end (API server) * Node/Express * MySQL or MongoDB * Swagger (api doc) * Jset `optional` *** ### Ref * https://github.com/yoychen/notence * https://github.com/uiwjs/react-md-editor * https://ui.toast.com/tui-editor/ * [實作Web即時共同編輯文件](https://homura0731.github.io/post/ironman2019/ironman-day-21/) * https://www.valentinog.com/blog/socket-react/ * [Build a Realtime Editor Using Socket.IO](https://blog.bitsrc.io/build-a-realtime-editor-using-socket-io-f11703afd55) * PWA, Service Worker? * https://medium.com/@chihsuan/%E7%B6%B2%E9%A0%81%E5%89%8D%E7%AB%AF%E6%95%88%E8%83%BD%E5%84%AA%E5%8C%96%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98-5993ccdb6f0d #### Redux & Redux Saga * [Redux-saga 介紹](https://medium.com/@savemuse/redux-saga-%E4%BB%8B%E7%B4%B9-70d38d12cd3f) * [React Redux | 小孩子才做選擇! Hooks 和 Redux 我全都要!](https://medium.com/enjoy-life-enjoy-coding/react-redux-%E5%B0%8F%E5%AD%A9%E5%AD%90%E6%89%8D%E5%81%9A%E9%81%B8%E6%93%87-hooks-%E5%92%8C-redux-%E6%88%91%E5%85%A8%E9%83%BD%E8%A6%81-1fdd226f5d99) * [Redux-Saga | 為了瞭解原理,那就來實作一個 Redux-Saga 吧!](https://medium.com/%E6%89%8B%E5%AF%AB%E7%AD%86%E8%A8%98/implementing-your-own-redux-saga-37910ddafc37) * [React 與他的快樂小夥伴 Redux -事件處理(Handling events)](https://medium.com/enjoy-life-enjoy-coding/react-%E8%88%87%E4%BB%96%E7%9A%84%E5%BF%AB%E6%A8%82%E5%B0%8F%E5%A4%A5%E4%BC%B4-redux-%E4%BA%8B%E4%BB%B6%E8%99%95%E7%90%86-handling-events-8dd35545f7b9) * [Getting Started with Redux](https://egghead.io/courses/getting-started-with-redux) * [Saga Pattern 在前端的應用](https://denny.qollie.com/2016/05/14/redux-saga/) * [學習 Redux-Saga 的起手式](https://medium.com/itsoktomakemistakes/%E5%AD%B8%E7%BF%92-redux-saga-%E7%9A%84%E8%B5%B7%E6%89%8B%E5%BC%8F-db4fd3a4dbce) * [redux-saga 使用教學](http://falloutchonny.github.io/2017/05/17/redux-saga-%E4%BD%BF%E7%94%A8%E6%95%99%E5%AD%B8/) #### Markdown * ~~https://github.com/mdx-js/mdx~~ * ⭐️ https://github.com/rexxars/react-markdown * https://codesandbox.io/s/markdown-editor-7c199?file=/src/editorContext.js * https://www.youtube.com/watch?v=fF9vrZNSQC4&ab_channel=CoderOne * ⭐️ https://github.com/kkfor/for-editor * ⭐️ https://github.com/JedWatson/react-md-editor *** *** ## Ref of doc * Project note: https://hackmd.io/@tsungtingdu/BJKgMGcmv * Meeting note: https://hackmd.io/@tsungtingdu/B1wsgQsXv * Frontend design: https://docs.google.com/presentation/d/1GVKVaO1E7SzeVXaBNY9rAXo68FEGxjQq5z11pnU_uOE/edit?usp=sharing