๋๋ง์ ์ผ๊ธฐ์ฅ์ ๊ณต์ ํ๊ณ ์ํตํ๋ ์์ ๋ค์ด์ด๋ฆฌ ํ๋ซํผ
๊ธฐ๋ฅ ์๊ฐ โข ์์ํ๊ธฐ โข ๊ธฐ์ ์คํ โข ํ๋ก์ ํธ ๊ตฌ์กฐ
PIG-DIARY๋ ์ฌ์ฉ์๋ค์ด ์ผ์์ ์๊ฐ์ ๊ธฐ๋กํ๊ณ ๊ณต์ ํ๋ฉฐ, ๋ค๋ฅธ ์ฌ์ฉ์๋ค๊ณผ ์ํตํ ์ ์๋ ์์ ๋ค์ด์ด๋ฆฌ ํ๋ซํผ์ ๋๋ค. ์ด๋ฏธ์ง, ํด์ํ๊ทธ, ๋๊ธ, ์ข์์ ๊ธฐ๋ฅ์ ํตํด ํ๋ถํ ๊ฒฝํ์ ์ ๊ณตํ๋ฉฐ, ์ค์๊ฐ ์ฑํ ๊ณผ AI ์ฑ๋ด์ ํตํด ๋์ฑ ์ญ๋์ ์ธ ์ปค๋ฎค๋์ผ์ด์ ์ ์ง์ํฉ๋๋ค.
- ๋ค์ํ ๋ก๊ทธ์ธ ๋ฐฉ์
- ๋ก์ปฌ ํ์๊ฐ์ /๋ก๊ทธ์ธ
- Google OAuth 2.0
- Kakao ์์ ๋ก๊ทธ์ธ
- Naver ์์ ๋ก๊ทธ์ธ
- ์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ
- ๋น๋ฐ๋ฒํธ ์ํธํ (bcrypt)
- JWT ํ ํฐ ์ง์
- ํ ์คํธ ๋ฐ ์ด๋ฏธ์ง ์ ๋ก๋ (๋ค์ค ์ด๋ฏธ์ง ์ง์)
- ํด์ํ๊ทธ ๊ธฐ๋ฅ (#ํ๊ทธ ์๋ ์ถ์ถ ๋ฐ ๊ฒ์)
- ๋๊ธ ๋ฐ ์ข์์ ๊ธฐ๋ฅ
- ๊ฒ์๊ธ ์์ /์ญ์
- Socket.io ๊ธฐ๋ฐ ์ค์๊ฐ ์ฑํ
- ์ฑํ ๋ฐฉ ์์ฑ ๋ฐ ๊ด๋ฆฌ
- 1:1 ๋ฐ ๊ทธ๋ฃน ์ฑํ ์ง์
- ์ฑํ ์ด๋ฏธ์ง ์ ์ก
- OpenAI GPT API ์ฐ๋
- ์์ฐ์ด ๋ํ ์ง์
- ์ค์๊ฐ ์๋ต
- ์ฌ์ฉ์ ํ๋กํ ๊ด๋ฆฌ
- ํ๋ก์ฐ/ํ๋ก์ ์์คํ
- ํ๋กํ ์ด๋ฏธ์ง ์ ๋ก๋
- ์ฌ์ฉ์ ๊ฒ์
- Kakao Map API ์ฐ๋
- ์์น ๊ธฐ๋ฐ ๋ง์ง ๊ฒ์
- ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ธฐ๋ฅ
- ์ง๋์ ๋ง์ปค ํ์
- ์ค์๊ฐ ๋ ์จ ์ ๋ณด ํ์
- ์์น ๊ธฐ๋ฐ ๋ ์จ ์กฐํ
- Runtime: Node.js
- Framework: Express.js 4.19.2
- Template Engine: Nunjucks 3.2.4
- ORM: Sequelize 6.32.1
- Database: MySQL/MariaDB
- Passport.js - ์ธ์ฆ ๋ฏธ๋ค์จ์ด
- bcrypt - ๋น๋ฐ๋ฒํธ ์ํธํ
- helmet - ๋ณด์ ํค๋ ์ค์
- hpp - HTTP Parameter Pollution ๋ฐฉ์ง
- csurf - CSRF ๋ณดํธ
- Socket.io 4.7.2 - ์ค์๊ฐ ์๋ฐฉํฅ ํต์
- ws 8.13.0 - WebSocket ์ง์
- OpenAI 4.24.7 - ChatGPT API
- Kakao Map API - ์ง๋ ๋ฐ ์ฅ์ ๊ฒ์
- Weather API - ๋ ์จ ์ ๋ณด
- Multer 1.4.5 - ํ์ผ ์ ๋ก๋ ์ฒ๋ฆฌ
- ์ด๋ฏธ์ง ์ต์ ํ ๋ฐ ์ ์ฅ
- Winston 3.11.0 - ๋ก๊น ์์คํ
- Morgan 1.10.0 - HTTP ์์ฒญ ๋ก๊น
- PM2 5.4.0 - ํ๋ก์ธ์ค ๊ด๋ฆฌ
- moment 2.29.4 - ๋ ์ง/์๊ฐ ์ฒ๋ฆฌ
- nodemailer 6.9.12 - ์ด๋ฉ์ผ ์ ์ก
- uuid 9.0.0 - ๊ณ ์ ID ์์ฑ
- color-hash 2.0.2 - ์์ ํด์ ์์ฑ
PIG-DIARY/
โโโ app.js # ์ ํ๋ฆฌ์ผ์ด์
์ง์
์
โโโ package.json # ํ๋ก์ ํธ ์์กด์ฑ
โโโ config/
โ โโโ config.js # ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์
โโโ src/
โ โโโ controllers/ # ์ปจํธ๋กค๋ฌ (๋น์ฆ๋์ค ๋ก์ง)
โ โ โโโ auth.js # ์ธ์ฆ ๊ด๋ จ
โ โ โโโ chatBot.js # ์ฑ๋ด ๊ด๋ จ
โ โ โโโ index.js # ๋ฉ์ธ ํ์ด์ง
โ โ โโโ post.js # ๊ฒ์๊ธ ๊ด๋ จ
โ โ โโโ room.js # ์ฑํ
๋ฐฉ ๊ด๋ จ
โ โ โโโ user.js # ์ฌ์ฉ์ ๊ด๋ จ
โ โโโ middlewares/ # ๋ฏธ๋ค์จ์ด
โ โ โโโ index.js # ๋ฏธ๋ค์จ์ด ์ค์
โ โ โโโ morganMiddleware.js # ๋ก๊น
๋ฏธ๋ค์จ์ด
โ โโโ models/ # ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ
โ โ โโโ chat.js # ์ฑํ
๋ชจ๋ธ
โ โ โโโ comment.js # ๋๊ธ ๋ชจ๋ธ
โ โ โโโ favorite.js # ์ข์์ ๋ชจ๋ธ
โ โ โโโ hashtag.js # ํด์ํ๊ทธ ๋ชจ๋ธ
โ โ โโโ post.js # ๊ฒ์๊ธ ๋ชจ๋ธ
โ โ โโโ room.js # ์ฑํ
๋ฐฉ ๋ชจ๋ธ
โ โ โโโ upload.js # ์
๋ก๋ ๋ชจ๋ธ
โ โ โโโ user.js # ์ฌ์ฉ์ ๋ชจ๋ธ
โ โโโ modules/ # ์ ํธ๋ฆฌํฐ ๋ชจ๋
โ โ โโโ Logger.js # ๋ก๊ฑฐ ์ค์
โ โ โโโ verifyToken.js # ํ ํฐ ๊ฒ์ฆ
โ โโโ passport/ # Passport ์ ๋ต
โ โ โโโ googleStrategy.js # Google OAuth
โ โ โโโ kakaoStrategy.js # Kakao OAuth
โ โ โโโ localStrategy.js # ๋ก์ปฌ ์ธ์ฆ
โ โ โโโ naverStrategy.js # Naver OAuth
โ โโโ routes/ # ๋ผ์ฐํฐ
โ โ โโโ auth.js # ์ธ์ฆ ๋ผ์ฐํธ
โ โ โโโ chatBot.js # ์ฑ๋ด ๋ผ์ฐํธ
โ โ โโโ index.js # ๋ฉ์ธ ๋ผ์ฐํธ
โ โ โโโ post.js # ๊ฒ์๊ธ ๋ผ์ฐํธ
โ โ โโโ room.js # ์ฑํ
๋ฐฉ ๋ผ์ฐํธ
โ โ โโโ user.js # ์ฌ์ฉ์ ๋ผ์ฐํธ
โ โโโ utils/ # ์ ํธ๋ฆฌํฐ ํจ์
โ โโโ chatGPT.js # ChatGPT API ํธ์ถ
โ โโโ dateFormat.js # ๋ ์ง ํฌ๋งทํ
โ โโโ emailSender.js # ์ด๋ฉ์ผ ์ ์ก
โ โโโ encrypt.js # ์ํธํ ์ ํธ
โ โโโ socket.js # Socket.io ์ค์
โโโ public/ # ์ ์ ํ์ผ
โ โโโ css/ # ์คํ์ผ์ํธ
โ โโโ img/ # ์ด๋ฏธ์ง ํ์ผ
โโโ views/ # ํ
ํ๋ฆฟ ํ์ผ
โ โโโ main.html # ๋ฉ์ธ ํ์ด์ง
โ โโโ login.html # ๋ก๊ทธ์ธ ํ์ด์ง
โ โโโ chat.html # ์ฑํ
ํ์ด์ง
โ โโโ chat-bot.html # ์ฑ๋ด ํ์ด์ง
โ โโโ ... # ๊ธฐํ ํ์ด์ง
โโโ uploads/ # ์
๋ก๋๋ ํ์ผ
โโโ posts/ # ๊ฒ์๊ธ ์ด๋ฏธ์ง
โโโ profiles/ # ํ๋กํ ์ด๋ฏธ์ง
โโโ chats/ # ์ฑํ
์ด๋ฏธ์ง
- Node.js (v14.0.0 ์ด์)
- MySQL ๋๋ MariaDB
- npm ๋๋ yarn
- ์ ์ฅ์ ํด๋ก
git clone https://github.com/docodocod/PIG-DIARY.git
cd PIG-DIARY- ์์กด์ฑ ์ค์น
npm install- ํ๊ฒฝ ๋ณ์ ์ค์
ํ๋ก์ ํธ ๋ฃจํธ์ .env ํ์ผ์ ์์ฑํ๊ณ ๋ค์ ๋ณ์๋ค์ ์ค์ ํ์ธ์:
# ์๋ฒ ์ค์
SERVER_PORT=5000
NODE_ENV=development
# ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์
DB_USER=your_db_user
DB_PASSWORD=your_db_password
# ์ธ์
์ค์
COOKIE_SECRET=your_cookie_secret_key
# OAuth ์ค์
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
KAKAO_CLIENT_ID=your_kakao_client_id
NAVER_CLIENT_ID=your_naver_client_id
NAVER_CLIENT_SECRET=your_naver_client_secret
# OpenAI API
OPENAI_API_KEY=your_openai_api_key
# Kakao Map API
KAKAO_MAP_API_KEY=your_kakao_map_api_key- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
MySQL/MariaDB์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ์ธ์:
CREATE DATABASE pig_diary CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- ์ ํ๋ฆฌ์ผ์ด์ ์คํ
๊ฐ๋ฐ ๋ชจ๋:
npm run devํ๋ก๋์ ๋ชจ๋:
npm start์๋ฒ๊ฐ ์คํ๋๋ฉด ๋ธ๋ผ์ฐ์ ์์ http://localhost:5000์ผ๋ก ์ ์ํ์ธ์.
- ๋ฉ์ธ ํ์ด์ง์์ ๋ก๊ทธ์ธ ๋ฒํผ ํด๋ฆญ
- ์์ ๋ก๊ทธ์ธ(Google, Kakao, Naver) ๋๋ ์ด๋ฉ์ผ ํ์๊ฐ์ ์ ํ
- ํ๋กํ ์ ๋ณด ์ ๋ ฅ ๋ฐ ํ๋กํ ์ด๋ฏธ์ง ์ ๋ก๋
- ๋ฉ์ธ ํ์ด์ง์์ "์ผ๊ธฐ ์์ฑ" ๋ฒํผ ํด๋ฆญ
- ์ ๋ชฉ๊ณผ ๋ด์ฉ ์ ๋ ฅ
- ์ด๋ฏธ์ง ์ ๋ก๋ (์ฌ๋ฌ ์ฅ ๊ฐ๋ฅ)
- ํด์ํ๊ทธ ์ถ๊ฐ (#ํ๊ทธ๋ช ํ์)
- ๊ฒ์ ๋ฒํผ ํด๋ฆญ
- "์ฑํ ๋ชฉ๋ก" ๋ฉ๋ด ํด๋ฆญ
- ์ ์ฑํ ๋ฐฉ ์์ฑ ๋๋ ๊ธฐ์กด ์ฑํ ๋ฐฉ ์ ์ฅ
- ์ค์๊ฐ์ผ๋ก ๋ฉ์์ง ์ฃผ๊ณ ๋ฐ๊ธฐ
- ์ด๋ฏธ์ง ์ ์ก ๊ฐ๋ฅ
- "AI ์ฑ๋ด" ๋ฉ๋ด ํด๋ฆญ
- ์ง๋ฌธ์ด๋ ๋ํ ์ ๋ ฅ
- ChatGPT๊ฐ ์๋ต ์์ฑ
- "๋ง์ง ๊ฒ์" ๋ฉ๋ด ํด๋ฆญ
- ์ํ๋ ์ง์ญ ๋๋ ์์ ์ข ๋ฅ ์ ๋ ฅ
- ์ง๋์์ ์์น ํ์ธ
- ์ฆ๊ฒจ์ฐพ๊ธฐ ์ถ๊ฐ ๊ฐ๋ฅ
npm run dev- ๊ฐ๋ฐ ๋ชจ๋ ์คํ (nodemon)npm start- ํ๋ก๋์ ๋ชจ๋ ์คํ (PM2)npm test- ํ ์คํธ ์คํ
- Express.js ์ปจ๋ฒค์ ์ค์
- MVC ํจํด ์ ์ฉ
- RESTful API ์ค๊ณ ์์น ์ค์