Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

269 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿท PIG-DIARY

๋‚˜๋งŒ์˜ ์ผ๊ธฐ์žฅ์„ ๊ณต์œ ํ•˜๊ณ  ์†Œํ†ตํ•˜๋Š” ์†Œ์…œ ๋‹ค์ด์–ด๋ฆฌ ํ”Œ๋žซํผ

๊ธฐ๋Šฅ ์†Œ๊ฐœ โ€ข ์‹œ์ž‘ํ•˜๊ธฐ โ€ข ๊ธฐ์ˆ  ์Šคํƒ โ€ข ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ


๐Ÿ“– ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

PIG-DIARY๋Š” ์‚ฌ์šฉ์ž๋“ค์ด ์ผ์ƒ์˜ ์ˆœ๊ฐ„์„ ๊ธฐ๋กํ•˜๊ณ  ๊ณต์œ ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค๊ณผ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ์…œ ๋‹ค์ด์–ด๋ฆฌ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€, ํ•ด์‹œํƒœ๊ทธ, ๋Œ“๊ธ€, ์ข‹์•„์š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋ฉฐ, ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…๊ณผ AI ์ฑ—๋ด‡์„ ํ†ตํ•ด ๋”์šฑ ์—ญ๋™์ ์ธ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

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

๐Ÿ” ์ธ์ฆ ์‹œ์Šคํ…œ

  • ๋‹ค์–‘ํ•œ ๋กœ๊ทธ์ธ ๋ฐฉ์‹
    • ๋กœ์ปฌ ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ
    • Google OAuth 2.0
    • Kakao ์†Œ์…œ ๋กœ๊ทธ์ธ
    • Naver ์†Œ์…œ ๋กœ๊ทธ์ธ
  • ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” (bcrypt)
  • JWT ํ† ํฐ ์ง€์›

๐Ÿ“ ์ผ๊ธฐ/๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ

  • ํ…์ŠคํŠธ ๋ฐ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ (๋‹ค์ค‘ ์ด๋ฏธ์ง€ ์ง€์›)
  • ํ•ด์‹œํƒœ๊ทธ ๊ธฐ๋Šฅ (#ํƒœ๊ทธ ์ž๋™ ์ถ”์ถœ ๋ฐ ๊ฒ€์ƒ‰)
  • ๋Œ“๊ธ€ ๋ฐ ์ข‹์•„์š” ๊ธฐ๋Šฅ
  • ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •/์‚ญ์ œ

๐Ÿ’ฌ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…

  • Socket.io ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…
  • ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ
  • 1:1 ๋ฐ ๊ทธ๋ฃน ์ฑ„ํŒ… ์ง€์›
  • ์ฑ„ํŒ… ์ด๋ฏธ์ง€ ์ „์†ก

๐Ÿค– AI ์ฑ—๋ด‡

  • OpenAI GPT API ์—ฐ๋™
  • ์ž์—ฐ์–ด ๋Œ€ํ™” ์ง€์›
  • ์‹ค์‹œ๊ฐ„ ์‘๋‹ต

๐Ÿ‘ฅ ์†Œ์…œ ๊ธฐ๋Šฅ

  • ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ๊ด€๋ฆฌ
  • ํŒ”๋กœ์šฐ/ํŒ”๋กœ์›Œ ์‹œ์Šคํ…œ
  • ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
  • ์‚ฌ์šฉ์ž ๊ฒ€์ƒ‰

๐Ÿ—บ๏ธ ๋ง›์ง‘ ๊ฒ€์ƒ‰

  • Kakao Map API ์—ฐ๋™
  • ์œ„์น˜ ๊ธฐ๋ฐ˜ ๋ง›์ง‘ ๊ฒ€์ƒ‰
  • ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ธฐ๋Šฅ
  • ์ง€๋„์— ๋งˆ์ปค ํ‘œ์‹œ

๐ŸŒค๏ธ ๋‚ ์”จ ์ •๋ณด

  • ์‹ค์‹œ๊ฐ„ ๋‚ ์”จ ์ •๋ณด ํ‘œ์‹œ
  • ์œ„์น˜ ๊ธฐ๋ฐ˜ ๋‚ ์”จ ์กฐํšŒ

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

Backend

  • Runtime: Node.js
  • Framework: Express.js 4.19.2
  • Template Engine: Nunjucks 3.2.4
  • ORM: Sequelize 6.32.1
  • Database: MySQL/MariaDB

Authentication & Security

  • Passport.js - ์ธ์ฆ ๋ฏธ๋“ค์›จ์–ด
  • bcrypt - ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”
  • helmet - ๋ณด์•ˆ ํ—ค๋” ์„ค์ •
  • hpp - HTTP Parameter Pollution ๋ฐฉ์ง€
  • csurf - CSRF ๋ณดํ˜ธ

Real-time Communication

  • Socket.io 4.7.2 - ์‹ค์‹œ๊ฐ„ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ 
  • ws 8.13.0 - WebSocket ์ง€์›

AI & External APIs

  • OpenAI 4.24.7 - ChatGPT API
  • Kakao Map API - ์ง€๋„ ๋ฐ ์žฅ์†Œ ๊ฒ€์ƒ‰
  • Weather API - ๋‚ ์”จ ์ •๋ณด

File Upload

  • Multer 1.4.5 - ํŒŒ์ผ ์—…๋กœ๋“œ ์ฒ˜๋ฆฌ
  • ์ด๋ฏธ์ง€ ์ตœ์ ํ™” ๋ฐ ์ €์žฅ

Logging & Monitoring

  • Winston 3.11.0 - ๋กœ๊น… ์‹œ์Šคํ…œ
  • Morgan 1.10.0 - HTTP ์š”์ฒญ ๋กœ๊น…
  • PM2 5.4.0 - ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ

Utilities

  • 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

์„ค์น˜ ๋ฐฉ๋ฒ•

  1. ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/docodocod/PIG-DIARY.git
cd PIG-DIARY
  1. ์˜์กด์„ฑ ์„ค์น˜
npm install
  1. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— .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
  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ

MySQL/MariaDB์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”:

CREATE DATABASE pig_diary CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰

๊ฐœ๋ฐœ ๋ชจ๋“œ:

npm run dev

ํ”„๋กœ๋•์…˜ ๋ชจ๋“œ:

npm start

์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:5000์œผ๋กœ ์ ‘์†ํ•˜์„ธ์š”.

๐Ÿ“ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ

  1. ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํด๋ฆญ
  2. ์†Œ์…œ ๋กœ๊ทธ์ธ(Google, Kakao, Naver) ๋˜๋Š” ์ด๋ฉ”์ผ ํšŒ์›๊ฐ€์ž… ์„ ํƒ
  3. ํ”„๋กœํ•„ ์ •๋ณด ์ž…๋ ฅ ๋ฐ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ

์ผ๊ธฐ ์ž‘์„ฑ

  1. ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ "์ผ๊ธฐ ์ž‘์„ฑ" ๋ฒ„ํŠผ ํด๋ฆญ
  2. ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ ์ž…๋ ฅ
  3. ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ (์—ฌ๋Ÿฌ ์žฅ ๊ฐ€๋Šฅ)
  4. ํ•ด์‹œํƒœ๊ทธ ์ถ”๊ฐ€ (#ํƒœ๊ทธ๋ช… ํ˜•์‹)
  5. ๊ฒŒ์‹œ ๋ฒ„ํŠผ ํด๋ฆญ

์ฑ„ํŒ…ํ•˜๊ธฐ

  1. "์ฑ„ํŒ… ๋ชฉ๋ก" ๋ฉ”๋‰ด ํด๋ฆญ
  2. ์ƒˆ ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ ๋˜๋Š” ๊ธฐ์กด ์ฑ„ํŒ…๋ฐฉ ์ž…์žฅ
  3. ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฉ”์‹œ์ง€ ์ฃผ๊ณ ๋ฐ›๊ธฐ
  4. ์ด๋ฏธ์ง€ ์ „์†ก ๊ฐ€๋Šฅ

AI ์ฑ—๋ด‡ ์‚ฌ์šฉ

  1. "AI ์ฑ—๋ด‡" ๋ฉ”๋‰ด ํด๋ฆญ
  2. ์งˆ๋ฌธ์ด๋‚˜ ๋Œ€ํ™” ์ž…๋ ฅ
  3. ChatGPT๊ฐ€ ์‘๋‹ต ์ƒ์„ฑ

๋ง›์ง‘ ๊ฒ€์ƒ‰

  1. "๋ง›์ง‘ ๊ฒ€์ƒ‰" ๋ฉ”๋‰ด ํด๋ฆญ
  2. ์›ํ•˜๋Š” ์ง€์—ญ ๋˜๋Š” ์Œ์‹ ์ข…๋ฅ˜ ์ž…๋ ฅ
  3. ์ง€๋„์—์„œ ์œ„์น˜ ํ™•์ธ
  4. ์ฆ๊ฒจ์ฐพ๊ธฐ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

๐Ÿ”ง ๊ฐœ๋ฐœ

์Šคํฌ๋ฆฝํŠธ

  • npm run dev - ๊ฐœ๋ฐœ ๋ชจ๋“œ ์‹คํ–‰ (nodemon)
  • npm start - ํ”„๋กœ๋•์…˜ ๋ชจ๋“œ ์‹คํ–‰ (PM2)
  • npm test - ํ…Œ์ŠคํŠธ ์‹คํ–‰

์ฝ”๋“œ ์Šคํƒ€์ผ

  • Express.js ์ปจ๋ฒค์…˜ ์ค€์ˆ˜
  • MVC ํŒจํ„ด ์ ์šฉ
  • RESTful API ์„ค๊ณ„ ์›์น™ ์ค€์ˆ˜

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages