Skip to content

sorrybro2/jungle-note

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

53 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒฑ ์ •๊ธ€ ๋˜์ƒˆ๊น€์งˆ ๋ฉ”๋ชจ (JG Note)

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

์ •๊ธ€ ๋ถ€ํŠธ์บ ํ”„์—์„œ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณต์Šตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ธ ๋ฉ”๋ชจ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐Ÿ“ ๋ฉ”๋ชจ ์ž‘์„ฑ & ๊ด€๋ฆฌ: ํฌ์ŠคํŠธ์ž‡ ์Šคํƒ€์ผ๋กœ ํ•™์Šต ๋‚ด์šฉ ์ •๋ฆฌ, ๊ฐœ์ธ์ ์œผ๋กœ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋…ธ๋ž€ ๋ฉ”๋ชจ์™€ ๋ชจ๋‘์—๊ฒŒ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์€ ๋ณด๋ผ์ƒ‰ ๋ฉ”๋ชจ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ
  • ๐Ÿ” ๊ฒ€์ƒ‰ & ํƒœ๊ทธ: ์ œ๋ชฉ, ๋‚ด์šฉ, ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰
  • ๐Ÿ”” ๋ณต์Šต ์•Œ๋ฆผ: ์ผ์ • ์‹œ๊ฐ„ ํ›„ ๋ณต์Šต ์•Œ๋ฆผ ์ œ๊ณต
  • ๐Ÿ‘ฅ ๋ผ์šด์ง€: ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๋ฉ”๋ชจ ๊ณต์œ  ๋ฐ ๋Œ“๊ธ€
  • ๐Ÿ” ์‚ฌ์šฉ์ž ์ธ์ฆ: JWT ๊ธฐ๋ฐ˜ ์•ˆ์ „ํ•œ ๋กœ๊ทธ์ธ
  • ๐Ÿค– AI ์ฑ—๋ด‡: OpenAI๋ฅผ ํ™œ์šฉํ•œ ํ•™์Šต ๋‚ด์šฉ ์š”์•ฝ ๋ฐ ๋ถ„์„

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

Backend: Flask, MongoDB, JWT
Frontend: HTML/CSS/JS, Tailwind CSS
๊ธฐํƒ€: Python, PyMongo, Werkzeug, OpenAI


๐Ÿš€ ์„ค์น˜ ๋ฐ ์‹คํ–‰

1. ํ™˜๊ฒฝ ์„ค์ •

git clone <repository-url>
cd jgnote
python -m venv myenv
source myenv/bin/activate  # Windows: myenv\Scripts\activate
pip install -r requirements.txt

2. MongoDB ์„ค์ •

  • MongoDB ์ ‘์† (์™ธ๋ถ€ ์„œ๋ฒ„ ์‚ฌ์šฉ ์ค‘)
  • ๋˜๋Š” ๋กœ์ปฌ MongoDB ์„ค์น˜ ํ›„ app.py์˜ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด ์ˆ˜์ •

๐Ÿ“ฑ ์‚ฌ์šฉ๋ฒ•

  1. ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ โ†’ ๊ณ„์ • ์ƒ์„ฑ ํ›„ ๋กœ๊ทธ์ธ
  2. ๋ฉ”๋ชจ ์ž‘์„ฑ โ†’ ํ”Œ๋กœํŒ… ๋ฒ„ํŠผ(+)์œผ๋กœ ๋ฉ”๋ชจ ์ถ”๊ฐ€
  3. ๊ฒ€์ƒ‰ โ†’ ํ‚ค์›Œ๋“œ ๋˜๋Š” #ํƒœ๊ทธ๋ช…์œผ๋กœ ๊ฒ€์ƒ‰
  4. ๋ณต์Šต ์•Œ๋ฆผ โ†’ ํ—ค๋”์—์„œ ๋ณต์Šตํ•  ๋ฉ”๋ชจ ํ™•์ธ
  5. ๋ผ์šด์ง€ โ†’ ๋ฉ”๋ชจ ๊ณต์œ ํ•˜๊ณ  ๋Œ“๊ธ€ ์ž‘์„ฑ

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

jgnote/
โ”œโ”€โ”€ app.py                    # Flask ๋ฉ”์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
โ”œโ”€โ”€ README.md                 # ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ
โ”œโ”€โ”€ .env                      # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (์ƒ์„ฑ ํ•„์š”)
โ”œโ”€โ”€ static/                   # ์ •์  ํŒŒ์ผ ํด๋”
โ”‚   โ””โ”€โ”€ profile.png          # ๊ธฐ๋ณธ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
โ”œโ”€โ”€ templates/               # HTML ํ…œํ”Œ๋ฆฟ ํด๋”
โ”‚   โ”œโ”€โ”€ login.html          # ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ register.html       # ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ main.html           # ๋ฉ”์ธ ๋ฉ”๋ชจ ๊ด€๋ฆฌ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ memo_add.html       # ๋ฉ”๋ชจ ์ž‘์„ฑ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ memo_review.html    # ๋ฉ”๋ชจ ์ƒ์„ธ๋ณด๊ธฐ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ profile.html        # ํ”„๋กœํ•„ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ profile_edit.html   # ํ”„๋กœํ•„ ํŽธ์ง‘ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ reminder.html       # ๋ณต์Šต ์•Œ๋ฆผ ํŽ˜์ด์ง€
โ”‚   โ””โ”€โ”€ lounge.html         # ๋ผ์šด์ง€ ํŽ˜์ด์ง€
โ””โ”€โ”€ myenv/                   # Python ๊ฐ€์ƒํ™˜๊ฒฝ ํด๋”
    โ”œโ”€โ”€ bin/                 # ์‹คํ–‰ ํŒŒ์ผ๋“ค (Linux/Mac)
    โ”œโ”€โ”€ lib/                 # ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋“ค
    โ””โ”€โ”€ pyvenv.cfg          # ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์ •

ํŒŒ์ผ๋ณ„ ์ฃผ์š” ์—ญํ• 

๐Ÿ Backend (app.py)

  • Flask ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ • ๋ฐ ๋ผ์šฐํŒ…
  • MongoDB ์—ฐ๊ฒฐ ๋ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
  • JWT ์ธ์ฆ ๋ฐ ์„ธ์…˜ ๊ด€๋ฆฌ
  • RESTful API ์—”๋“œํฌ์ธํŠธ ๊ตฌํ˜„
  • OpenAI API ์—ฐ๋™

๐ŸŽจ Frontend (templates/)

  • login.html, register.html: ์‚ฌ์šฉ์ž ์ธ์ฆ
  • main.html: ๋ฉ”๋ชจ ๋ชฉ๋ก ๋ฐ ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค
  • memo_add.html, memo_review.html: ๋ฉ”๋ชจ ์ž‘์„ฑ ๋ฐ ์ƒ์„ธ๋ณด๊ธฐ
  • profile.html, profile_edit.html: ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ๊ด€๋ฆฌ
  • reminder.html: ๋ณต์Šต ์•Œ๋ฆผ ์‹œ์Šคํ…œ
  • lounge.html: ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋Šฅ

๐Ÿ’พ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ

MongoDB Collections:

๐Ÿ“ memos (๋ฉ”๋ชจ)

{
  _id: ObjectId,
  title: String,           // ๋ฉ”๋ชจ ์ œ๋ชฉ
  content: String,         // ๋ฉ”๋ชจ ๋‚ด์šฉ
  user_id: String,         // ์ž‘์„ฑ์ž ID
  tags: [String],          // ํƒœ๊ทธ ๋ฐฐ์—ด
  share: Boolean,          // ๋ผ์šด์ง€ ๊ณต์œ  ์—ฌ๋ถ€
  repeat_visible: Boolean, // ๋ณต์Šต ์•Œ๋ฆผ ํ‘œ์‹œ ์—ฌ๋ถ€
  created_at: Date         // ์ž‘์„ฑ์ผ์‹œ
}

๐Ÿ‘ค users (์‚ฌ์šฉ์ž)

{
  _id: ObjectId,
  user_id: String,         // ๋กœ๊ทธ์ธ ID
  user_name: String,       // ์‚ฌ์šฉ์ž ์ด๋ฆ„
  user_email: String,      // ์ด๋ฉ”์ผ
  user_pw: String          // ์•”ํ˜ธํ™”๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ
}

๐Ÿ’ฌ comments (๋Œ“๊ธ€)

{
  _id: ObjectId,
  memo_id: ObjectId,       // ๋ฉ”๋ชจ ID (์ฐธ์กฐ)
  user_id: String,         // ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ID
  user_name: String,       // ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ์ด๋ฆ„
  content: String,         // ๋Œ“๊ธ€ ๋‚ด์šฉ
  created_at: Date         // ์ž‘์„ฑ์ผ์‹œ
}

๐Ÿ“‹ ์ฃผ์š” API

์—”๋“œํฌ์ธํŠธ ๋ฉ”์„œ๋“œ ์„ค๋ช…
/ GET ๋ฃจํŠธ (๋กœ๊ทธ์ธ์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ)
/login GET/POST ๋กœ๊ทธ์ธ
/logout POST ๋กœ๊ทธ์•„์›ƒ
/make GET ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€
/register POST ํšŒ์›๊ฐ€์ž… ์ฒ˜๋ฆฌ
/main GET ๋ฉ”๋ชจ ๋ชฉ๋ก
/memo_add GET/POST ๋ฉ”๋ชจ ์ž‘์„ฑ
/memo/<id> GET ๋ฉ”๋ชจ ์ƒ์„ธ๋ณด๊ธฐ
/memo/<id> DELETE ๋ฉ”๋ชจ ์‚ญ์ œ
/reminder GET ๋ณต์Šต ์•Œ๋ฆผ
/hide_memo POST ๋ณต์Šต ์•Œ๋ฆผ ์ˆจ๊ธฐ๊ธฐ
/profile GET ํ”„๋กœํ•„ ๋ณด๊ธฐ
/profile_edit GET/POST ํ”„๋กœํ•„ ํŽธ์ง‘
/lounge GET ๋ผ์šด์ง€
/memo/share POST ๋ฉ”๋ชจ ๊ณต์œ 
/memo/unshare POST ๋ฉ”๋ชจ ๊ณต์œ  ํ•ด์ œ
/comments POST ๋Œ“๊ธ€ ์ž‘์„ฑ
/comments/<memo_id> GET ๋Œ“๊ธ€ ์กฐํšŒ
/comments/<comment_id> DELETE ๋Œ“๊ธ€ ์‚ญ์ œ
/chat POST AI ์ฑ—๋ด‡
/refresh POST JWT ํ† ํฐ ๊ฐฑ์‹ 

๊ตฌํ˜„ ํ™”๋ฉด

๋กœ๊ทธ์ธ ํ™”๋ฉด

image

๋ฉ”์ธ ํ™”๋ฉด (๋ฉ”๋ชจ ๊ด€๋ฆฌ ํ™”๋ฉด)

image

๋ณต์Šต ์•Œ๋ฆผ ํ™”๋ฉด

image

๋ผ์šด์ง€ ํ™”๋ฉด

image

์‚ฌ์šฉ์ž ์ •๋ณด

image image

๐Ÿ”ง ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • Python: 3.8+
  • MongoDB: 4.0+
  • ๋ธŒ๋ผ์šฐ์ €: Chrome, Firefox, Safari

๐Ÿค ํšŒ๊ณ ๋ก

์ง„์†” : https://velog.io/@imwe25/%ED%81%AC%EB%9E%98%ED%94%84%ED%86%A4-%EC%A0%95%EA%B8%80-10%EA%B8%B0-0%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •