Skip to content

Latest commit

ย 

History

History
287 lines (244 loc) ยท 10 KB

README.md

File metadata and controls

287 lines (244 loc) ยท 10 KB

๐ŸŽจ G-Diary ๐ŸŽจ

image

์–ด๋ฅธ๋“ค์˜ ๋™์‹ฌ์„ ์ฐพ์•„๋ผ!

๋ฐฉํ•™์ˆ™์ œ๋กœ ๊ทธ๋ฆฌ๋˜ ๊ทธ๋ฆผ์ผ๊ธฐ๋ฅผ G-Diary์— ๊ทธ๋ฆฌ์ž!
์ผ๊ธฐ์žฅ๊ณผ ๊ทธ๋ฆผ์€ ๋‚ด๊ฐ€ ์ œ๊ณตํ• ๊ฒŒ
์Šคํ† ๋ฆฌ๋Š” ๋ˆ„๊ฐ€ ์งค๋ž˜?

๐Ÿง Introduce


image
์ผ๊ธฐ๋ฅผ ์ž‘์„ฑํ•ด ์ €์žฅํ•ด๋ณด์„ธ์š”
์ผ๊ธฐ์žฅ์—์„œ ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”์ถœํ•ด ๊ทธ๋ฆผ์ผ๊ธฐ์— ์‚ฌ์šฉํ•  ๊ทธ๋ฆผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค
์ด ์„ธ์ƒ์— ๋‹จ ํ•˜๋‚˜๋ฐ–์— ์—†๋Š” ๊ทธ๋ฆผ ์ผ๊ธฐ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์„ธ์š”

๐Ÿ”— www.gdiary.org

๐Ÿ““ medium




๐Ÿ‘พ System Architecture


image




๐ŸŒˆ Feature


JWT๋ฅผ ์ด์šฉํ•œ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ

image

image



์ปค๋ฒ„์‚ฌ์ง„ ๋ณ€๊ฒฝ ๋ฐ ์‹œ์ž‘

image



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

์ผ๊ธฐ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  <๊ทธ๋ฆผ๊ฐ€์ ธ์˜ค๊ธฐ> ๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. AI ๋กœ ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆผ์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ <๊ทธ๋ฆผ๊ทธ๋ฆฌ๊ธฐ>๋กœ ์ง์ ‘ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
image

์บ˜๋ฆฐ๋”๋กœ ์ผ๊ธฐ ์กฐํšŒ

image



์ž‘์„ฑ๋ฐฉ๋ฒ• ๋ฐ ์†Œ๊ฐœ

image




๐Ÿ“น Demo

Video Label




๐Ÿ’ป Tech Stack


- Frontend: React, Zustand 
- Backend : Django, Django-Rest-FrameWork
- Web Server: Nginx, 
- Asynchronous: Celery, Rabbitmq
- WSGI: Gunicorn
- Database: AWS RDS MySQL
- AI : KoNLPy
- Deployment: Docker, AWS EC2, AWS S3 bucket
- API Test : Postman
- API Documentation : Swagger
- Monitoring : prometheus, grafana
- Others: Github, Notion, Zoom, Slack, Figma




๐ŸŽฏ ERD


image




๐Ÿ“• API


image

  • api/v1/auth : ์‚ฌ์šฉ์ž ์ •๋ณด ํ™•์ธ, ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ
  • api/v1/users : ์‚ฌ์šฉ์ž ์ปค๋ฒ„ ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ
  • api/v1/results : ๊ฒฐ๊ณผ ํ‚ค์›Œ๋“œ ๋ณ„ ์ด๋ฏธ์ง€ ์กฐํšŒ
  • api/v1/text/ : ์ผ๊ธฐ๋‚ด์šฉ ํ‚ค์›Œ๋“œ ์ถ”์ถœ (AI)
  • api/v1/join : ํšŒ์›๊ฐ€์ž…
  • api/v1/diaries : ์ผ๊ธฐ ๋ชฉ๋ก ์กฐํšŒ, ๋“ฑ๋ก, ์กฐํšŒ



Monitoring


node exporter Django
image image



๐Ÿณ How to start


1. clone the repository

git clone https://github.com/2023-SV-winter-bootcamp-G-Diary/G-Diary.git


2. Set environment file

Path: G-Diary/backend/config/my_settings.py
Django secret key & MySQL ํ™˜๊ฒฝ๋ณ€์ˆ˜ & S3 bucket

from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent


MY_SECRET = {
    "SECRET_KEY" : ''
}

MY_DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME' : '', 
        'USER' : '',
        'PASSWORD' : '', 
        'HOST': '', 
        'PORT': '3306', 
        'OPTIONS':{
            'init_command' : "SET sql_mode='STRICT_TRANS_TABLES'"
        }
    }
}

MY_AWS_ACCESS_KEY_ID = {
    "AWS_ACCESS_KEY_ID" :''
}
MY_AWS_ACCESS_ACCESS_KEY = {
    "AWS_SECRET_ACCESS_KEY" : ""
}
MY_STORAGE_BUCKET_NAME = {
    "BUCKET_NAME" : ""
}

Path: /G-Diary/backend/.env MySQL container ํ™˜๊ฒฝ ๋ณ€์ˆ˜ & RabbitMQ ํ™˜๊ฒฝ๋ณ€์ˆ˜
DEBUG=False
MYSQL_DATABASE=
MYSQL_ROOT_PASSWORD=
MYSQL_PORT=3306
TZ=Asia/Seoul
RABBITMQ_HOST=
RABBITMQ_USER=
RABBITMQ_PASSWORD=
RABBITMQ_VHOST=

Path: /G-Diary/frontend/.env.local
์นด์นด์˜คํ†ก ๊ณต์œ ํ•˜๊ธฐ ํ™˜๊ฒฝ๋ณ€์ˆ˜ (ํ˜„์žฌ ๋กœ์ปฌ์—์„œ๋งŒ ๊ฐ€๋Šฅ)
REACT_APP_KAKAO_KEY=''

Path: /G-Diary/.env
RabbitMQ ํ™˜๊ฒฝ๋ณ€์ˆ˜
RABBITMQ_HOST=
RABBITMQ_USER=
RABBITMQ_PASSWORD=
RABBITMQ_VHOST=


3. Run

docker-compose -f docker-compose.prod.yml up --build



๐Ÿ‘จโ€๐Ÿ’ป Members


๋ฐ•ํฌ๊ฒฝ ์žฅ์•„๋ น ์–‘์›์ค€ ์ด๋ฏผ์ง€ ์ž„๊ด‘์ˆ˜ ์œค์˜์„ธ
Leader, Backend, DevOps Backend, AI Backend Frontend, DevOps Frontend Frontend

Footer