Skip to content

kimis0719/sideProjectMate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

240 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Side Project Mate ๐Ÿš€

์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ๋ฉ”์ดํŠธ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•จ๊ป˜ ์ง„ํ–‰ํ•  ํŒ€์›์„ ์ฐพ๊ณ  ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.


โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ” ์ธ์ฆ (Authentication)

  • ์ด๋ฉ”์ผ & ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ธฐ๋ฐ˜ ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ
  • JWT ๊ธฐ๋ฐ˜ ์„ธ์…˜ ๊ด€๋ฆฌ (next-auth)
  • bcryptjs ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ ๋ฐ ๋ฏธ๋“ค์›จ์–ด ์ ‘๊ทผ ์ œ์–ด

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ (Project Management)

  • ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ: ์ธ๋„ค์ผ ๋“œ๋ž˜๊ทธ & ๋“œ๋กญ ์—…๋กœ๋“œ(Cloudinary), ๊ธฐ์ˆ  ์Šคํƒ ํƒœ๊ทธ ์„ ํƒ, Tiptap ๊ธฐ๋ฐ˜ ๋ฆฌ์น˜ ํ…์ŠคํŠธ ์—๋””ํ„ฐ ์ง€์›
  • ํ”„๋กœ์ ํŠธ ์กฐํšŒ: ์นดํ…Œ๊ณ ๋ฆฌ / ์ƒํƒœ / ์ •๋ ฌ ํ•„ํ„ฐ๋ง ๋ฐ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰
  • ํ†ตํ•ฉ ๋Œ€์‹œ๋ณด๋“œ: ํ”„๋กœ์ ํŠธ๋ณ„ ์นธ๋ฐ˜ ๋ณด๋“œ์™€ WBS๋ฅผ ํ•œ ํ™”๋ฉด์—์„œ ๊ด€๋ฆฌ

๐Ÿ‘ค ๋งˆ์ดํŽ˜์ด์ง€ & ํ”„๋กœํ•„ (Profile & Stats)

  • ์˜จ๋ณด๋”ฉ ์œ„์ €๋“œ: ์ดˆ๊ธฐ ์ง„์ž… ์‹œ ์ง๊ตฐ, ๊ฒฝ๋ ฅ ๋“ฑ ํ•„์ˆ˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š” ๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ
  • ํ”„๋กœํ•„ ๊ด€๋ฆฌ: ๊ธฐ๋ณธ ์ •๋ณด ๋ฐ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์„ฑํ–ฅ(MBTI, ์˜จ/์˜คํ”„๋ผ์ธ ์„ ํ˜ธ๋„) ๊ด€๋ฆฌ
  • ๊ธฐ์ˆ  ์Šคํƒ (Skill Stack): skillicons.dev ๊ธฐ๋ฐ˜์˜ ์ง๊ด€์ ์ธ ์•„์ด์ฝ˜ UI, ์ฃผ์š” ๊ธฐ์ˆ  ๋ฐ ์ˆ™๋ จ๋„ ์‹œ๊ฐํ™”
  • ๊ฐœ๋ฐœ์ž ํ™œ๋™ ์ง€ํ‘œ:
    • GitHub ์—ฐ๋™: ์ปค๋ฐ‹ ํ™œ๋™(Green Light), ์–ธ์–ด ์‚ฌ์šฉ๋Ÿ‰, Top Skills ์ž๋™ ๋ถ„์„
    • Solved.ac (๋ฐฑ์ค€): ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‹ฐ์–ด, ๋žญํฌ, ์ŠคํŠธ๋ฆญ ์นด๋“œ ํ‘œ์‹œ
    • Tech Blog: Velog ๋“ฑ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ ์ตœ์‹  ๊ธ€ RSS ์ž๋™ ์ˆ˜์ง‘
  • ๊ฐ€์šฉ์„ฑ ์Šค์ผ€์ค„๋Ÿฌ: ์ฃผ๊ฐ„ ํ˜‘์—… ๊ฐ€๋Šฅ ์‹œ๊ฐ„ ๋“œ๋ž˜๊ทธ ์„ ํƒ ๋ฐ ์‹œ๊ฐํ™”
  • ๋งˆ์ดํŽ˜์ด์ง€: ๋ณธ์ธ์ด ์ œ์ถœํ•œ ์ง€์› ๋‚ด์—ญ(์ง€์› ํ”„๋กœ์ ํŠธ, ์—ญํ• , ์ƒํƒœ) ํ™•์ธ

๐Ÿค ์ง€์› ์‹œ์Šคํ…œ (Application System)

  • ์ง€์›ํ•˜๊ธฐ: ํฌ๋ง ์—ญํ•  ์„ ํƒ ๋ฐ ์ง€์› ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ
  • ์ง€์›์ž ๊ด€๋ฆฌ: ํ”„๋กœ์ ํŠธ ์ž‘์„ฑ์ž๊ฐ€ ์ง€์›์ž ๋ชฉ๋ก ํ™•์ธ ๋ฐ ์ˆ˜๋ฝ/๊ฑฐ์ ˆ ์ฒ˜๋ฆฌ

๐Ÿ“Š ํ˜‘์—… ๋„๊ตฌ (Collab Tools)

  • ์นธ๋ฐ˜ ๋ณด๋“œ (Kanban Board):
    • dnd-kit ๊ธฐ๋ฐ˜์˜ To Do / In Progress / Done ์—…๋ฌด ๊ด€๋ฆฌ
    • ๋“œ๋ž˜๊ทธ & ๋“œ๋กญ์œผ๋กœ ์ง๊ด€์ ์ธ ์ƒํƒœ ๋ณ€๊ฒฝ
    • ์‹ค์‹œ๊ฐ„ Presence(ํ˜„์žฌ ์ ‘์†์ž) ํ‘œ์‹œ ๋ฐ ๋ฆฌ์†Œ์Šค ์ž ๊ธˆ(์ถฉ๋Œ ๋ฐฉ์ง€)
  • WBS (Work Breakdown Structure):
    • gantt-task-react ๊ธฐ๋ฐ˜์˜ ๊ฐ„ํŠธ ์ฐจํŠธ (์ผ / ์ฃผ / ์›” ๋ทฐ ์ง€์›)
    • ์ž‘์—… ๊ฐ„ ์˜์กด์„ฑ(Dependency) ์„ค์ • ๋ฐ ์‹œ๊ฐํ™”
    • ์ผ์ • ์ถฉ๋Œ ๊ฐ์ง€ ๋ฐ ๊ฒฝ๊ณ  ์•Œ๋ฆผ
    • ํƒ€์ž„๋ผ์ธ์—์„œ ๋“œ๋ž˜๊ทธ๋กœ ์ง์ ‘ ์ž‘์—… ๊ธฐ๊ฐ„ ์กฐ์ •
  • ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”: Socket.io ๊ธฐ๋ฐ˜์˜ ๋…ธํŠธ ์ƒ์„ฑ/์ˆ˜์ •/์‚ญ์ œ/์„ ํƒ ์ƒํƒœ ์‹ค์‹œ๊ฐ„ ์ „ํŒŒ

๐Ÿ’ฌ ์ฑ„ํŒ… (Chat) โ€” UI ํ”„๋กœํ† ํƒ€์ž…

ํ˜„์žฌ UI ํ”„๋กœํ† ํƒ€์ž… ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ API ๋ฐ ๋ชจ๋ธ์€ ๊ตฌํ˜„ ์™„๋ฃŒ, ์‹ค์‹œ๊ฐ„ ์—ฐ๋™ ์ž‘์—… ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

  • ์ฑ„ํŒ…๋ฐฉ ์œ ํ˜•: INQUIRY(๋ฌธ์˜), RECRUIT(์ธํ„ฐ๋ทฐ), TEAM(ํŒ€ ์ฑ„ํŒ…๋ฐฉ), DM(1:1), SYSTEM(๊ฐ€์ด๋“œ ๋ด‡)
  • ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ ์‹œ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์‹œ์Šคํ…œ ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€ ์ž๋™ ๋ฐœ์†ก
  • DM ์ค‘๋ณต ๋ฐฉ์ง€ ๋กœ์ง (๋™์ผ ์ฐธ์—ฌ์ž ๊ตฌ์„ฑ์˜ ๋ฐฉ ์žฌํ™œ์šฉ)

๐Ÿ”” ์•Œ๋ฆผ (Notifications)

  • ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ์‹œ์Šคํ…œ (์ง€์› ๊ฒฐ๊ณผ, ์ƒˆ ์ง€์›์ž ์•Œ๋ฆผ ๋“ฑ)
  • Zustand ๊ธฐ๋ฐ˜ ์•Œ๋ฆผ ์Šคํ† ์–ด

๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ

Frontend

๋ถ„๋ฅ˜ ๊ธฐ์ˆ 
Framework Next.js 14.2 (App Router)
Language TypeScript 5.3
Styling Tailwind CSS 3.4, Styled Components 6
State Management Zustand 4.5, Zundo (Undo/Redo)
๋“œ๋ž˜๊ทธ & ๋“œ๋กญ dnd-kit (์นธ๋ฐ˜), gantt-task-react (WBS)
์—๋””ํ„ฐ Tiptap 2 (Rich Text Editor, Code Block)
์ผ์ • react-schedule-selector
๊ธฐํƒ€ UI react-slick (์บ๋Ÿฌ์…€), react-markdown

Backend & Database

๋ถ„๋ฅ˜ ๊ธฐ์ˆ 
Runtime Node.js 20.x
Server Next.js API Routes + Express (Socket.io ์ „์šฉ)
Database MongoDB Atlas (Mongoose 8.x)
์‹ค์‹œ๊ฐ„ Socket.io 4.8
์ธ์ฆ next-auth 4, jsonwebtoken, bcryptjs
์ด๋ฏธ์ง€ Cloudinary 2
GraphQL graphql-request (GitHub API ์—ฐ๋™)
RSS rss-parser (Tech Blog ์—ฐ๋™)
OG open-graph-scraper

DevOps & Tools

๋ถ„๋ฅ˜ ๊ธฐ์ˆ 
Linting ESLint 8.56, Prettier
Dev Server nodemon + ts-node
Deployment Render.com (Free Plan)

๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

  • Node.js 20.x ๊ถŒ์žฅ (>=18 ์ง€์›)
  • npm 8 ์ด์ƒ

๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

1. ์ €์žฅ์†Œ ํด๋ก 

git clone https://github.com/kimis0719/sideProjectMate.git
cd sideProjectMate

2. ์˜์กด์„ฑ ์„ค์น˜

npm install

3. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— .env.local ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์•„๋ž˜ ๋ณ€์ˆ˜๋“ค์„ ์„ค์ •ํ•˜์„ธ์š”.

# MongoDB
MONGODB_URI=mongodb+srv://<user>:<pass>@<cluster>/<db>?retryWrites=true&w=majority

# Auth
JWT_SECRET=your_secure_jwt_secret
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_nextauth_secret

# Cloudinary (์ด๋ฏธ์ง€ ์—…๋กœ๋“œ)
CLOUDINARY_CLOUD_NAME=...
CLOUDINARY_API_KEY=...
CLOUDINARY_API_SECRET=...

4. ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰

# ๊ฐœ๋ฐœ ๋ชจ๋“œ (nodemon + ts-node, ํฌํŠธ 3000)
npm run dev

# ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ ๋ฐ ์‹คํ–‰
npm run build
npm run start

5. ๋ธŒ๋ผ์šฐ์ € ํ™•์ธ

http://localhost:3000

๐Ÿ— ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

sideProjectMate/
โ”œโ”€โ”€ server.ts                   # Express + Socket.io ์ปค์Šคํ…€ ์„œ๋ฒ„
โ”œโ”€โ”€ next.config.js
โ”œโ”€โ”€ render.yaml                 # Render.com ๋ฐฐํฌ ์„ค์ •
โ””โ”€โ”€ src/
    โ”œโ”€โ”€ app/                    # Next.js App Router ํŽ˜์ด์ง€
    โ”‚   โ”œโ”€โ”€ api/               # API Routes
    โ”‚   โ”‚   โ”œโ”€โ”€ applications/  # ์ง€์› CRUD
    โ”‚   โ”‚   โ”œโ”€โ”€ auth/          # ์ธ์ฆ (next-auth)
    โ”‚   โ”‚   โ”œโ”€โ”€ chat/          # ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ/์กฐํšŒ/๋ฉ”์‹œ์ง€
    โ”‚   โ”‚   โ”œโ”€โ”€ cloudinary/    # ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
    โ”‚   โ”‚   โ”œโ”€โ”€ common-codes/  # ๊ณตํ†ต ์ฝ”๋“œ (์ง๊ตฐ, ๊ธฐ์ˆ  ๋“ฑ)
    โ”‚   โ”‚   โ”œโ”€โ”€ kanban/        # ์นธ๋ฐ˜ ๋ณด๋“œ CRUD
    โ”‚   โ”‚   โ”œโ”€โ”€ notifications/ # ์•Œ๋ฆผ
    โ”‚   โ”‚   โ”œโ”€โ”€ projects/      # ํ”„๋กœ์ ํŠธ CRUD
    โ”‚   โ”‚   โ”œโ”€โ”€ proxy/         # ์™ธ๋ถ€ API ํ”„๋ก์‹œ (CORS ์šฐํšŒ)
    โ”‚   โ”‚   โ”œโ”€โ”€ status/        # ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ
    โ”‚   โ”‚   โ”œโ”€โ”€ tech-stacks/   # ๊ธฐ์ˆ  ์Šคํƒ ๋ชฉ๋ก
    โ”‚   โ”‚   โ”œโ”€โ”€ users/         # ์œ ์ € ํ”„๋กœํ•„, GitHub, Solved.ac
    โ”‚   โ”‚   โ”œโ”€โ”€ utils/         # ์œ ํ‹ธ API
    โ”‚   โ”‚   โ””โ”€โ”€ wbs/           # WBS(๊ฐ„ํŠธ ์ฐจํŠธ) CRUD
    โ”‚   โ”œโ”€โ”€ chat/              # ์ฑ„ํŒ… UI (ํ”„๋กœํ† ํƒ€์ž…)
    โ”‚   โ”œโ”€โ”€ dashboard/[pid]/   # ํ†ตํ•ฉ ๋Œ€์‹œ๋ณด๋“œ
    โ”‚   โ”‚   โ”œโ”€โ”€ kanban/        # ์นธ๋ฐ˜ ๋ณด๋“œ ํŽ˜์ด์ง€
    โ”‚   โ”‚   โ””โ”€โ”€ wbs/           # WBS ํŽ˜์ด์ง€
    โ”‚   โ”œโ”€โ”€ kanban/[pid]/      # ์นธ๋ฐ˜ ๋ณด๋“œ ๋…๋ฆฝ ๊ฒฝ๋กœ
    โ”‚   โ”œโ”€โ”€ login/             # ๋กœ๊ทธ์ธ
    โ”‚   โ”œโ”€โ”€ register/          # ํšŒ์›๊ฐ€์ž…
    โ”‚   โ”œโ”€โ”€ mypage/            # ๋งˆ์ดํŽ˜์ด์ง€ (๋‚ด ์ง€์› ๋‚ด์—ญ)
    โ”‚   โ”œโ”€โ”€ profile/[id]/      # ๊ณต๊ฐœ ํ”„๋กœํ•„
    โ”‚   โ”œโ”€โ”€ tech/              # ๊ธฐ์ˆ  ์Šคํƒ/ํ™œ๋™ ์ง€ํ‘œ ํŽ˜์ด์ง€
    โ”‚   โ”œโ”€โ”€ projects/          # ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก, ์ƒ์„ธ, ์ƒ์„ฑ/์ˆ˜์ •
    โ”‚   โ”‚   โ”œโ”€โ”€ [pid]/
    โ”‚   โ”‚   โ””โ”€โ”€ new/
    โ”‚   โ”œโ”€โ”€ layout.tsx
    โ”‚   โ””โ”€โ”€ page.tsx           # ๋ฉ”์ธ ํŽ˜์ด์ง€
    โ”œโ”€โ”€ components/            # ์žฌ์‚ฌ์šฉ ์ปดํฌ๋„ŒํŠธ
    โ”‚   โ”œโ”€โ”€ board/             # ์นธ๋ฐ˜ ๋ณด๋“œ
    โ”‚   โ”œโ”€โ”€ chat/              # ์ฑ„ํŒ… UI
    โ”‚   โ”œโ”€โ”€ common/            # ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ
    โ”‚   โ”œโ”€โ”€ dashboard/         # ํ†ตํ•ฉ ๋Œ€์‹œ๋ณด๋“œ
    โ”‚   โ”œโ”€โ”€ editor/            # Tiptap ์—๋””ํ„ฐ
    โ”‚   โ”œโ”€โ”€ profile/           # ํ”„๋กœํ•„ & ์˜จ๋ณด๋”ฉ
    โ”‚   โ”œโ”€โ”€ projects/          # ํ”„๋กœ์ ํŠธ ๊ด€๋ จ
    โ”‚   โ””โ”€โ”€ wbs/               # WBS(๊ฐ„ํŠธ ์ฐจํŠธ)
    โ”œโ”€โ”€ store/                 # Zustand ์Šคํ† ์–ด
    โ”‚   โ”œโ”€โ”€ boardStore.ts      # ์นธ๋ฐ˜ ๋ณด๋“œ ์ƒํƒœ
    โ”‚   โ”œโ”€โ”€ wbsStore.ts        # WBS ์ƒํƒœ (Undo/Redo ํฌํ•จ)
    โ”‚   โ””โ”€โ”€ modalStore.ts      # ๋ชจ๋‹ฌ ์ƒํƒœ
    โ”œโ”€โ”€ lib/
    โ”‚   โ”œโ”€โ”€ models/            # Mongoose ์Šคํ‚ค๋งˆ
    โ”‚   โ”‚   โ”œโ”€โ”€ User.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ Project.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ Application.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ Notification.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ Availability.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ ChatRoom.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ ChatMessage.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ Comment.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ CommonCode.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ Post.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ ProjectMember.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ Skill.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ TechStack.ts
    โ”‚   โ”‚   โ”œโ”€โ”€ kanban/        # Board, Section, Note ๋ชจ๋ธ
    โ”‚   โ”‚   โ””โ”€โ”€ wbs/           # Task ๋ชจ๋ธ
    โ”‚   โ”œโ”€โ”€ store/
    โ”‚   โ”‚   โ””โ”€โ”€ notificationStore.ts
    โ”‚   โ”œโ”€โ”€ blog/              # RSS ํŒŒ์‹ฑ ์œ ํ‹ธ
    โ”‚   โ”œโ”€โ”€ github/            # GitHub GraphQL ์—ฐ๋™
    โ”‚   โ””โ”€โ”€ utils/             # WBS ์˜์กด์„ฑ ๊ณ„์‚ฐ ๋“ฑ ํ—ฌํผ
    โ”œโ”€โ”€ hooks/                 # ์ปค์Šคํ…€ ํ›…
    โ”œโ”€โ”€ constants/             # ์ƒ์ˆ˜ ์ •์˜
    โ””โ”€โ”€ types/                 # TypeScript ํƒ€์ž… ์ •์˜

๐Ÿ”Œ Socket.io ์ด๋ฒคํŠธ (server.ts)

๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” Express + Socket.io ์ปค์Šคํ…€ ์„œ๋ฒ„(server.ts)๋กœ ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ (Client โ†’ Server) ์„ค๋ช…
join-board ์นธ๋ฐ˜ ๋ณด๋“œ ๋ฃธ ์ ‘์†
user-activity ๋ณด๋“œ Presence ์ •๋ณด ์ „์†ก (์ ‘์†์ž ๋ชฉ๋ก ๊ฐฑ์‹ )
leave-board ์นธ๋ฐ˜ ๋ณด๋“œ ๋ฃธ ์ดํƒˆ
update-note / create-note / delete-note ๋…ธํŠธ ๋ณ€๊ฒฝ ์‹ค์‹œ๊ฐ„ ์ „ํŒŒ
update-section / create-section / delete-section ์„น์…˜ ๋ณ€๊ฒฝ ์‹ค์‹œ๊ฐ„ ์ „ํŒŒ
request-lock / release-lock ๋…ธํŠธ/์„น์…˜ ํŽธ์ง‘ ์ž ๊ธˆ (์ถฉ๋Œ ๋ฐฉ์ง€)
sync-board Undo/Redo ์‹œ ์ „์ฒด ๋ณด๋“œ ๋™๊ธฐํ™”
select-note / deselect-note ์‹ค์‹œ๊ฐ„ ๋…ธํŠธ ์„ ํƒ ์ƒํƒœ ๊ณต์œ 
join-project ํ”„๋กœ์ ํŠธ ๋ฃธ ์ ‘์† (์˜จ๋ผ์ธ ์ƒํƒœ ๋“ฑ๋ก)
resource-update ํ”„๋กœ์ ํŠธ ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ ์•Œ๋ฆผ
project-update ํ”„๋กœ์ ํŠธ ์ƒํƒœ/๊ฐœ์š” ๋ณ€๊ฒฝ ์•Œ๋ฆผ
join-chat-room / leave-chat-room ์ฑ„ํŒ…๋ฐฉ ๋ฃธ ์ ‘์†/์ดํƒˆ
send-notification ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ์ „์†ก

์ฃผ์š” ์Šคํฌ๋ฆฝํŠธ

npm run dev      # ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰ (nodemon + ts-node)
npm run build    # ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ (Next.js ๋นŒ๋“œ + server.ts ์ปดํŒŒ์ผ)
npm run start    # ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„ ์‹คํ–‰ (dist/server.js)
npm run lint     # ESLint ์‹คํ–‰
npm run format   # Prettier ํฌ๋งทํŒ…

๐Ÿš€ ๋ฐฐํฌ (Render.com)

render.yaml์ด ์„ค์ •๋˜์–ด ์žˆ์–ด GitHub ์—ฐ๋™ ์‹œ ์ž๋™ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

  1. Render.com ๋กœ๊ทธ์ธ ํ›„ "New Web Service" ์ƒ์„ฑ
  2. GitHub ์ €์žฅ์†Œ ์—ฐ๊ฒฐ
  3. Build Command: npm install && npm run build
  4. Start Command: npm start
  5. Environment Variables์— .env.local ํ•ญ๋ชฉ ๋™์ผํ•˜๊ฒŒ ์ž…๋ ฅ
  6. ๋ฐฐํฌ ์‹œ์ž‘

โš ๏ธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

"Unsupported Server Component type" ์—๋Ÿฌ

  • ํด๋ผ์ด์–ธํŠธ ํ›…(useState, useEffect ๋“ฑ)์„ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ์ตœ์ƒ๋‹จ์— 'use client' ์ง€์‹œ์–ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

Socket.io ์—ฐ๊ฒฐ ์‹คํŒจ

  • npm run dev ์‹คํ–‰ ํ›„ ํ„ฐ๋ฏธ๋„์—์„œ > Ready on http://localhost:3000 ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
  • ํด๋ผ์ด์–ธํŠธ ์ธก Socket.io ๊ฒฝ๋กœ(/api/socket/io)๊ฐ€ server.ts์˜ path ์„ค์ •๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์ฑ„ํŒ… ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•˜์ง€ ์•Š์•„์š”

  • ํ˜„์žฌ ์ฑ„ํŒ… UI๋Š” Mock ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ํƒ€์ž…์ž…๋‹ˆ๋‹ค. DB ์—ฐ๋™ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

  1. Issue ์ƒ์„ฑ
  2. Fork & Branch ์ƒ์„ฑ (feature/amazing-feature)
  3. Commit & Push
  4. Pull Request ์š”์ฒญ

๐Ÿ“„ ๋ผ์ด์„ผ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages