ํด๋น ํ๋ก์ ํธ๋ Notion์ react๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๋ ์ด์์๊ณผ ๊ธฐ๋ฅ๋ค์ ๋ถ์ํ ํด๋ก ์ฝ๋ฉํ ํ๋ก์ ํธ์ ๋๋ค.
- HTML
- Type script , Java Script
- SCSS , styled-components
- React
- Redux
- sass
- node-html-markdown
- react-contenteditable
- react-icons
- react-redux, redux
- react-router-dom
- styled-component
- react-helmet-async
npm i
npm run start
- Sidebar
- Editor
- TopBar
- Frame
- Page header
- Page content
- block
Notion state๋ ์ฌ์ดํธ์์ ์์ฑ๋๋ page,block,comment๋ค ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๋๋ค.
* Notion state ๊ฐ ๋ด๊ณ ์๋ data
* page : ์ ์ ๊ฐ ์์ฑํ ํ์ด์ง
* trash : ์ญ์ ๋ ํ์ด์ง
* template : ํ์ด์ง์ ํ
ํ๋ฆฟ๋ค
User state ๋ ํด๋น Notion์ ์ฌ์ฉํ๋ user์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๋๋ค.
- User state ๊ฐ ๋ด๊ณ ์๋ data
- user name
- user email
- ์ฆ๊ฒจ ์ฐพ๊ธฐ ๋ชฉ๋ก
- ์ต๊ทผ ๋ฐฉ๋ฌธํ ํ์ด์ง ๋ชฉ๋ก
Side state๋ side bar์ ํํ์ ๋ํ ๊ฒ์
๋๋ค.
* side bar ํํ
* lock : ์ผ์ชฝ์ ๊ณ ์ ๋จ
* close : ์ผ์ชฝ์ ๊ณ ์ ๋์๋ side bar๊ฐ ํ๋ฉด์์์ ์ฌ๋ผ์ง
* float , floatHide : ๋ฒํผ์ ๋ง์ฐ์ค๋ฅผ ๋๋ฉด side bar๊ฐ ๋ํ๋๊ณ (float) ๋ง์ฐ์ค๋ฅผ ๋ผ๋ฉด ์ฌ๋ผ์ง๋(floatHide) ํํ
๐ State์์ ์ฌ์ฉ๋ type๋ค์ ๋ํ wiki ํ์ด์ง๋ก ์ด๋
๐ Component์ ๋ํ wiki ํ์ด์ง๋ก ์ด๋
๋ ์ด์์์ ๊ธฐ์ค์ผ๋ก notion์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ๋ค์ ๋๋ค.
- ์ฌ์ด๋๋ฐ ๋ชจ์ ๋ณ๊ฒฝ(์ผ์ชฝ์ ๊ณ ์ , ๊ฐ์ถ๊ธฐ, ๋์ฐ๊ธฐ)
- Quick Find: ํ์ด์ง ์ฐพ๊ธฐ
- ํ์ด์ง์์ ์์ฑ๋๋ ๋ฉ๋ด๋ฒํผ: ํ์ด์ง ์์ฑ,์ญ์ ,ํ์ด์ง ํ์ดํ์ด๋ ์์ด์ฝ ๋ณ๊ฒฝ, ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋, ์ฆ๊ฒจ์ฐพ๊ธฐ์ ์ถ๊ฐ ๋๋ ์ญ์
- ํด์งํต : ์ญ์ ๋ ํ์ด์ง ์๊ตฌ ์ญ์ ๋๋ ๋ณต๊ตฌ
- template ์ด๊ธฐ
- template ์์
- template ์์ฑ
- template ์ญ์
- template ์ด์ฉ
- use template ๋ฒํผ์ ๋๋ฅด๋ฉด ํ์ฌ ์คํ๋ ํ์ด์ง์ ๋ด์ฉ์ด template์ ๋ด์ฉ์ผ๋ก ๊ต์ฒด๋จ
- ํ์ด์ง ๊ฒฝ๋ก ํ์, ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋
- ํ์ฌ ํ์ด์ง๋ด ๋ชจ๋ ์ฝ๋ฉํธ ๋ณด๊ธฐ
- ์ฆ๊ฒจ์ฐพ๊ธฐ ์ถ๊ฐ, ์ญ์
- ํ์ด์ง ์คํ์ผ ๋ณ๊ฒฝ: ๊ธ์ํฌ๊ธฐ,๊ธ์ ์คํ์ผ, ํ์ด์ง ๋๋น
- ํ์ด์ง ์ญ์
- ํ์ฌ ํ์ด์ง๋ฅผ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋
- ํ์ฌ ํ์ด์ง๋ฅผ pdf,html,markdown ํํ๋ก ์ ์ฅ (ํ์ฌ ํ์ด์ง ๋ด์ ์ด๋ฏธ์ง ํ์ผ ํฌํจ์ฌ๋ถ์ ํ์ฌ ํ์ด์ง ๋ด์ ๋ค๋ฅธ ํ์ด์ง๋ ์ ์ฅํ๋ ์ง ์ฌ๋ถ ์ ํํ ์ ์์)
- ํ์ฌ page์ ํ์ดํ, ์์ด์ฝ, ์ปค๋ฒ, comment ์ถ๊ฐ/๋ณ๊ฒฝ/์ญ์ ๊ฐ๋ฅ
-
์ฃผ์์ฐฝ์ผ๋ก ํ์ด์ง๊ฐ ์ด๋ ๊ฐ๋ฅ
- ์กด์ฌํ์ง ์๋ ํ์ด์ง ์ ๋ ฅ์ , ํ์ด์ง ์์์ด๋ผ๋ ํ๋ฉด์ด ๋์ด
- ๊นํ์ ์๋ก ๊ณ ์นจ ์ด์๋ก ๋ก์ปฌ ํ๊ฒฝ์์๋ง ๊ฐ๋ฅ
-
์๋ก์ด ํ์ด์ง ์์ฑ ์ ์ต์ ์ ํ
- ์ต์
- ํ์ด์ง ์์ด์ฝ ์ถ๊ฐ
- ํ์ด์ง ์์ด์ฝ์ ๋๋ค์ผ๋ก ์ถ๊ฐ
- ํ ํ๋ฆฟ ์ด์ฉ
- ์ต์
-
ํ์ด์ง ๋ด ๊ธ (block)์ ๋ํ ๊ธฐ๋ฅ
- block์์ฑ
- ํ์ด์ง ํ๋จ ํด๋ฆญ ์ ์๋ก์ด ๋ธ๋ก ์์ฑ
- ์์ฑ ์ค์ธ block์์ enter ํค ๋๋ฅด๋ฉด, ๋์์ ๋๋ฅผ ๊ฒฝ์ฐ๋ ๋ด์ฉ์ด ๋น ๋ธ๋ก์ด ์์ฑ๋๊ณ block์ ๋ด์ฉ ์ค๊ฐ์์ enterํค ๋๋ฅด๋ฉด ์ปค์ ๋ท ๋ถ๋ถ์ ๋ด์ฉ์ ๊ฐ์ง ๋ธ๋ก์ด ์์ฑ
- ๋ธ๋ญ ์์ ์์ฑ๋ "+" ๋ฒํผ์ ๋๋ฌ์ ์๋ก์ด ๋ธ๋ก ์์ฑ
- block ๋ณต์
- block ๋ด์ฉ ์์
- image ํ์ ์ block์ ๊ฒฝ์ฐ image์ ์ฌ์ด์ฆ๋ฅผ ์์ ๊ฐ๋ฅ
- block ํ์ ์์
- ๋น ๋ธ๋ก์์ "/" ์ ๋ ฅ์ผ๋ก ๋ธ๋ก ํ์ ์ ์์ ํ ์ ์๋ command ์ฐฝ์ ์ด์ด์ ๋ธ๋ก ํ์ ์ ์์
- ๋ฉ๋ด(Menu), ๋ธ๋ญ ๋ด ๋ด์ฉ ์ ํ(BlockStyler)์ ํตํด์ ํ์ ์์
- block ์คํ์ผ ๋ณ๊ฒฝ
- block ์ ์ฒด ์คํ์ผ ๋ณ๊ฒฝ (Menu)
- block ๋ด ์ผ๋ถ ์คํ์ผ ๋ณ๊ฒฝ ๊ฐ๋ฅ (BlockStyler)
- block์ ๋งํฌ ์ถ๊ฐ
- block์ ๋ํ comment ์์ฑ,comment ์์ฑ(open,resolve)๋ณ๊ฒฝ, ์ญ์
- block ์ญ์
- ๋ด์ฉ์ด ๋น ๋ธ๋ก์์ backspace๋ฅผ ๋๋ฅด๋ฉด ํด๋น ๋ธ๋ก ์ญ์
- ๋ฉ๋ด์์ ํด๋น ๋ธ๋ก ์ญ์ ๊ฐ๋ฅ
- page ๋ด block ์์น ๋ณ๊ฒฝ
- ๋ง์ฐ์ค ๋๋๊ทธ๋ฅผ ํตํด block ์ ์์น๋ฅผ ๋ณ๊ฒฝ
- ๋ณ๊ฒฝ๋ ์์น์ ๋ฐ๋ผ block์ ๋ถ๋ชจ block๊ณผ subBlock(์์ block), page.firstBlocksId ์ ๋ณ๋ ์ฌํญ์ด ์๊ธธ ์ ์์
- tab ํค์ backspace ํค๋ฅผ ํตํด block ๋ค์ฌ์ฐ๊ธฐ ๋ด์ฌ์ฐ๊ธฐ ๊ฐ๋ฅ
- ํค๋ณด๋ ๋ฐฉํฅํค๋ฅผ ํตํ ๋ธ๋ก๊ฐ์ ์ปค์ ์ด๋
- ๋ธ๋ญ์ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋
- block์์ฑ
-
comment
- ๋ธ๋ก ์ ์ฒด๋ ๋ธ๋ก์ ์ผ๋ถ๋ถ์ ๋ํ comment ์์ฑ ๊ฐ๋ฅ
- comment ์ญ์ ,์์ ,์์ ์ทจ์ ๊ฐ๋ฅ
- comment ํ์ ์ open->resolve๋ก ์์ ๊ฐ๋ฅ
์ฃผ์์ฐฝ์ ์ด์ฉํ ํ์ด์ง ์ด๋
block ์์ฑ ๋ฐ ํ์ ๋ณ๊ฒฝ
image ํ์ ๋ธ๋ญ ์์ฑ ๋ฐ image ์ฌ์ด์ฆ ๋ณ๊ฒฝ
comment
blockStyler
๋ค๋ฅธ ํ์ด์ง๋ก ๋ธ๋ก ์ด๋
๋ธ๋ก ์์น ๋ณ๊ฒฝ
๊ธฐํ: ํค๋ณด๋๋ฅผ ํตํ ์กฐ์, ๋ธ๋ญ ์ญ์ , ๋ธ๋ญ ๋ด์ฉ ์ ํ๋ฑ๋ฑ
- sideBar,allComment ๋ณ๊ฒฝ
- ๋ชจ๋ฐ์ผ์์๋ ImageContent ์ฌ์ด์ฆ ๋ณ๊ฒฝ๊ฐ๋ฅํ๋๋ก ์์
- ๋ชจ๋ฐ์ผ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ๋ block ์ ๋ํ ๋ฉ๋ด์ ๊ทธ ์ฌ์ด๋ ๋ฉ๋ด๋ฅผ ๋ด๋นํ๋ MobileBlockMenu, MobileSideMenu ์ถ๊ฐ
- ๋ชจ๋ฐ์ผ ๋ธ๋ผ์ฐ์ ์์๋ block์ contents ์ค ํน์ ๊ธ์๋ฅผ ์ ํํ ๋ ํด๋น ๊ธ์์ ๋ํ BlockStyler ์ ๊ธฐ๋ฅ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ์์
- block ์ ์ฒด ๋ฟ๋ง ์๋๋ผ ์ผ๋ถ ๋ด์ฉ์ ๋ํด์๋ comment ์ถ๊ฐ ํ ์ ์์
- ๋ชจ๋ฐ์ผ ๋ธ๋ผ์ฐ์ ์์ ๋ธ๋ญ๊ฐ ์ด๋์ด ์๋๋ ์ค๋ฅ ์์
- ์ด๋ฏธ์ง ํฌ๊ธฐ ์กฐ์ ๋ฒํผ ์ค๋ฅ ์์
- react ์ต์ ํ ์๋ฃ
- ์ฐพ๋ ํ์ด์ง๊ฐ ์๊ฑฐ๋, ํ์ด์ง ์์ฒด๊ฐ ์์๋ ๋ณด์ด๋ ํ๋ฉด ์ค๋ฅ ์์
- ๋ชจ๋ฐ์ผ ๋ธ๋ผ์ฐ์ ์ ์คํฌ๋กค ์ค๋ฅ ์์
- HashRouter ์์ BrowserRouter ๋ณ๊ฒฝ
- react-helmet-async๊ณผ robots.txt๋ฅผ ํ์ฉํ SEO ๊ฐ์
- ๊นํ ํ์ด์ง์์ ์ฃผ์์ฐฝ ๋ณ๊ฒฝ์ผ๋ก ํ์ด์ง ์ด๋ ์ ์ฟผ๋ฆฌ ์คํฌ๋ง์ผ๋ก ์ธํ ์ค๋ฅ ์์
- css-sprite, webP ํ์ ์ด๋ฏธ์ง ์ฌ์ฉ์ผ๋ก ์ด๋ฏธ์ง ์ต์ ํ
- gif๋ฅผ ์ ์ธํ ์ด๋ฏธ์ง๋ค์ webPํ์์ผ๋ก ์ ์ฅ๋๊ณ ์์ฑ๋๋ฉฐ, webP๋ฅผ ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ์์๋ jpeg ํ์์ ์ง์ํ๋๋ก ํจ
- ๋ชจ๋ฐ์ผ ๋ธ๋ผ์ฐ์ ์์ ๋ธ๋ญ ์ด๋,selection ๊ธฐ๋ฅ ์ฌ์ฉ ์ ๋งค๋๋ฝ์ง ๋ชปํ ๋ถ๋ถ ์์
- ๋ชจ๋ฐ์ผ ๋ธ๋ผ์ฐ์ ์์ ์คํฌ๋กค๋ก ์ธํ "overflow:hidden" ์ด ์ ๋๋ก ์๋ํ์ง ์๋ ์ค๋ฅ ์์
- react-window ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํด, page ๋ชฉ๋ก ๋์ค๋ ๋ถ๋ถ ์ต์ ํ
- ๊ธ์, ์์ด์ฝ์ ์์ ๋๋น ๊ฐ์
- React Portals๋ฅผ ์ด์ฉํด ๋ชจ๋ฌ ๋ฆฌํฉํ ๋ง ์งํ