Skip to content

ewha-cse-HACK/HACK_Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒˆ ๋ฌด์ง€๊ฐœํŽธ์ง€

ํŽซ๋กœ์Šค ๊ทน๋ณต์„ ์œ„ํ•œ ์ฑ—๋ด‡ ์„œ๋น„์Šค

์ €ํฌ ์„œ๋น„์Šค โ€œ๋ฌด์ง€๊ฐœํŽธ์ง€โ€์˜ ๋ชฉํ‘œ๋Š” ํŽซ๋กœ์Šค ์ฆํ›„๊ตฐ์„ ์•“๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ฑ—๋ด‡์ด ์ฃผ๋Š” ์œ„๋กœ๋ฅผ ํ†ตํ•ด ๊ทน๋ณต์˜ ํ† ๋Œ€๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋“ค์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์†”์งํžˆ ๋งํ•˜๊ธฐ ์–ด๋ ต๊ฑฐ๋‚˜ ์‹œ๊ฐ„์ด ๋งŽ์ด ์ง€๋‚˜๋„ ํ„ธ์–ด๋‚ด์ง€ ๋ชปํ•œ ๊ฐ์ •์„ ๋ฐ˜๋ ค๋™๋ฌผ๊ณผ์˜ ๊ฐ€์ƒ ๋Œ€ํ™”๋ฅผ ํ†ตํ•ด ๋ถ€๋‹ด ์—†์ด ํ„ธ์–ด๋†“์„ ์ˆ˜ ์žˆ๊ณ , ์ด๋Š” ํŽซ๋กœ์Šค ์ฆํ›„๊ตฐ ๊ทน๋ณต์— ๊ธ์ •์ ์ธ ์ž‘์šฉ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ํ˜๋Ÿฌ๋„ ์—ฌ์ „ํžˆ ๊ทธ๋ฆฌ์šด, ๋‹น์‹ ์˜ ๊ฐ€์กฑ์ด์ž ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ์ด๋“ค์—๊ฒŒ ์ „ํ•˜๊ณ  ์‹ถ์€ ๋ง์„ ๋ชจ์•„ ์ง์ ‘ ๋ณด๋‚ด๋ณด์„ธ์š”. โ€œ๋ฌด์ง€๊ฐœ ํŽธ์ง€โ€๋Š” ๊ทธ ๋ง๋“ค์ด ๋‹ฟ๊ธธ ๊ธฐ์›ํ•˜๋ฉฐ ๊ฐ€์ƒ์˜ ๋‹ต๋ณ€์„ ๋ณด๋‚ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๐Ÿ–ฅ๏ธ Demo video

Video Label

๐Ÿ–ผ๏ธ Project Architecture

image

๐Ÿ’ช Teck stack

Server

๐ŸŒฑ Server ๊ตฌ์„ฑ์š”์†Œ

  • java 17 : ์‚ฌ์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • springboot (3.1.1) : ํ”„๋ ˆ์ž„์›Œํฌ
  • JWT : ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ์‹œ ์‚ฌ์šฉํ•˜๋Š” ํ† ํฐ
  • Open AI (GPT-4, DALL-E) : ํ…์ŠคํŠธ ์ƒ์„ฑ์„ ์œ„ํ•œ GPT 4, ์ด๋ฏธ์ง€ ์ƒ์„ฑ์„ ์œ„ํ•œ DALL-E 3 API ํ™œ์šฉ
  • EC2 : ์„œ๋ฒ„
  • RDS : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • S3: ์ด๋ฏธ์ง€ ์ €์žฅ

๐Ÿงฉ ์‚ฌ์šฉํ•œ ์˜คํ”ˆ์†Œ์Šค

  1. Open AI DALL-E
implementation 'com.theokanning.openai-gpt3-java:client:0.17.0'
implementation 'com.theokanning.openai-gpt3-java:service:0.17.0'

์ฐธ๊ณ  https://velog.io/@minji1289/Springboot-์Šคํ”„๋ง๋ถ€ํŠธ๋กœ-DALL-E-API-ํ˜ธ์ถœํ•˜๊ธฐ

2. ๋กœ๊ทธ์ธ JWT

implementation 'io.jsonwebtoken:jjwt-api:0.11.5โ€™

๐ŸŒŸ How to install

  1. AWS EC2 ์ƒ์„ฑ
EC2 name hack_server
AMI Amazon Linux 2023 AMI
Instance Type t2 micro (free tier eligible)
Key Pair Create new key pair
VPC Default
Subnet Default
Auto-assign public IP Enable
Security group SSH, HTTP, HTTPS, 8080

2. RDS ์„ค์ •
Create method Standard create
Engine option MySQL Community
Templates free tier
DB instance identifier hack-db
Computer Resource Donโ€™t connect to an EC2 compute resource
Public access Yes

3. S3 ์„ค์ •
Bucket name hack-s3bucket
ACLs enable
Block Public Access disable
DeleteObject, GetObject, PutObject์— ๋Œ€ํ•ด Allow ๊ถŒํ•œ ์„ค์ •

4. ๋„๋ฉ”์ธ ์„ค์ •
aws route53์—์„œ ๋„๋ฉ”์ธ ๊ตฌ๋งค ํ›„ api.rainbow-letter.com๊ณผ rainbow-letter.com ๋“ฑ๋ก


5. EC2 ์„œ๋ฒ„์— ssh ์ ‘์†
ssh -i {pem_key๊ฒฝ๋กœ} ec2-user@{public_ip}

6. java 17 ์„ค์น˜ ๋ฐ ํƒ€์ž„์กด ๋ณ€๊ฒฝ
## ec2์— java 17 ์„ค์น˜
sudo yum install java-17-amazon-corretto

java -version //openjdk "17.0.7"

sudo rm /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime date #ํƒ€์ž„์กด ํ™•์ธ


7. git ์„ค์น˜
sudo yum install git //git ์„ค์น˜
git --version //์„ค์น˜๋œ git ๋ฒ„์ „ ํ™•์ธ

8. MySQL ์„ค์น˜
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el9-3.noarch.rpm
    # [์ œ์ผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์„ค์น˜]
sudo yum install mysql-community-server
sudo systemctl start mysqld
sudo systemctl status mysqld

  1. EC2 ์„œ๋ฒ„์— application.properties, build.gradle, gradlew, gradle ํด๋” ์ถ”๊ฐ€
    a. open AI AP key
    b. RDS ์—”๋“œํฌ์ธํŠธ ๋ฐ ํŒจ์Šค์›Œ๋“œ
    c. papago API key

  2. ๋ฐฐํฌ script ์ž‘์„ฑ ํ›„ ./deploy.sh or sh deploy.sh ๋กœ ์‹คํ–‰
#!/bin/bash
REPOSITORY=/home/ec2-user/app/step1
PROJECT_NAME=HACK_Server
cd $REPOSITORY/$PROJECT_NAME/
echo "> Git Pull"
git pull
echo "> ํ”„๋กœ์ ํŠธ Build ์‹œ์ž‘"
./gradlew build
echo "> ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™"
cd $REPOSITORY
echo "> Build ํŒŒ์ผ ๋ณต์‚ฌ"
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/
echo "> ํ˜„์žฌ ๊ตฌ๋™์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ pid ํ™•์ธ"
CURRENT_PID=$(pgrep -fl wow_server.*.jar | grep java | awk '{print $1}')
echo "> ํ˜„์žฌ ๊ตฌ๋™์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜pid: $CURRENT_PID"
if [ -z "$CURRENT_PID" ]; then
 echo "> ํ˜„์žฌ ๊ตฌ๋™์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์—†์œผ๋ฏ€๋กœ ์ข…๋ฃŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."
else
 echo "> kill -15 $CURRENT_PID"
 kill -15 $CURRENT_PID
 sleep 5
fi
echo "> ์ƒˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ"
JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | head -n 1)
echo "> JAR Name: $JAR_NAME"
nohup java -jar $JAR_NAME &

11. github action์„ ์ด์šฉํ•œ ์ž๋™ ๋ฐฐํฌ
a. Github Repository์˜ Settings > Secrets and variables > Actions์— โ€œRepository secrets" 3๊ฐ€์ง€ ์ถ”๊ฐ€
- HOST = EC2 ์ธ์Šคํ„ด์Šค์˜ public IP
- USER = ์‚ฌ์šฉ์ž (๋ณดํ†ต์€ ec2-user)
- SSH_PRIVATE_KEY =ย `.pem`ย ํ‚ค ํŒŒ์ผ ๋‚ด์šฉ

b. github/workflows ํด๋” ์ƒ์„ฑ ํ›„ main.yml ํŒŒ์ผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€

name: WORKFLOW_NAME # workflow ์ด๋ฆ„ ์„ค์ •

# workflow๋ฅผ runํ•˜๋Š” ์กฐ๊ฑด ์„ค์ •
on:
    push:
        branches: [ main ]  #์„ค์ •ํ•œ workflow run ์กฐ๊ฑด: branch [main]์— push๋ฅผ ํ• ๋•Œ๋งˆ๋‹ค

# workflow๊ฐ€ runํ• ๋•Œ ์‹คํ–‰ํ•˜๋Š” ๋‚ด์šฉ ์ •์˜
jobs:
    SSH:
        runs-on: ubuntu-latest # OS(workflow label)

       steps:
         - uses: actions/checkout@v3 #Repository ์ฐธ๊ณ 
         - name: ssh to ec2 #EC2์— ์ ‘์†
           uses: appleboy/ssh-action@master #์ ‘์† ์ œ๊ณต Repository
           with:
             key: ${{ secrets.SSH_PRIVATE_KEY }}    #Repository secrets ์‚ฌ์šฉ
             host: ${{ secrets.HOST }}    #Repository secrets ์‚ฌ์šฉ
             username: ${{ secrets.USER }}    #Repository secrets ์‚ฌ์šฉ
             script: | #์‹คํ–‰ํ•  ์ฝ”๋“œ
               cd /home/ec2-user/app/step1    #๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ด ์žˆ๋Š” ํด๋”๋กœ ์ด๋™
               sh deploy.sh    #๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์‹คํ–‰
            
               #๊ธฐ์กด deploy.sh ํŒŒ์ผ์—์„œ nohup ๋ช…๋ น์–ด๋ฅผ ํฌํ•จํ•œ line์„ ์ง€์šฐ๊ณ , ์•„๋ž˜์™€ ๊ฐ™์ด `.yml` ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์— ์ถ”๊ฐ€
               nohup java -jar wow_server-0.0.1-SNAPSHOT.jar > nohup.out 2> nohup.err < /dev/null &
   

c. ๊ธฐ์กด deploy.sh ํŒŒ์ผ์—์„œ nohup ๋ถ€๋ถ„ ์ฃผ์„ ์ฒ˜๋ฆฌ

 ## nohup java -jar $JAR_NAME &

๐ŸŒค๏ธ How to build

  1. git clone https://github.com/ewha-cse-HACK/HACK_Server.git
  2. application.properties ํŒŒ์ผ ์„ค์ •
    a. openAI api key
    b. rds ํ˜น์€ local db ์—”๋“œํฌ์ธํŠธ ๋ฐ ํŒจ์Šค์›Œ๋“œ
    c. papago api key
  3. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
  4. postman์—์„œ http://localhost:8080/{ํ…Œ์ŠคํŠธํ• _URL} ์„ ํ†ตํ•ด API ์กฐํšŒ
  5. postman ํ˜น์€ chrome์—์„œ https://api.rainbow-letter.com/{ํ…Œ์ŠคํŠธํ• _URL} ์„ ํ†ตํ•ด API ์กฐํšŒ

๐ŸŽฎ How to test

API ๋ช…์„ธ์„œ

  1. postman์—์„œ http://localhost:8080/{ํ…Œ์ŠคํŠธํ•˜๊ณ _์‹ถ์€_api} ๋ฅผ ํ†ตํ•ด API ์กฐํšŒ
  2. postman ํ˜น์€ chrome์—์„œ https://api.rainbow-letter.com/{ํ…Œ์ŠคํŠธํ• _URL}์„ ํ†ตํ•ด API ์กฐํšŒ

๐ŸŒณ Source Code tree

โ”œโ”€โ”€ settings.gradle
โ””โ”€โ”€ src
    โ”œโ”€โ”€ main
    โ”‚ย ย  โ”œโ”€โ”€ java
    โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ com
    โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ hack
    โ”‚ย ย  โ”‚ย ย          โ””โ”€โ”€ hack_server
    โ”‚ย ย  โ”‚ย ย              โ”œโ”€โ”€ Authentication
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Controller
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ UserController.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Dto
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ JoinRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ LoginRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ JwtAuthenticationFilter.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ JwtAuthorizationFilter.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ JwtProvider.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ PrincipalDetails.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ””โ”€โ”€ Service
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”œโ”€โ”€ PrincipalDetailsService.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ””โ”€โ”€ UserService.java
    โ”‚ย ย  โ”‚ย ย              โ”œโ”€โ”€ ChatGpt
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ ChatGptConfig.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Controller
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ ChatGptController.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Dto
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ ChatGptAnswerResponseDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ ChatGptRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ ChatGptResponseDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Choice.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ DalleAnswerResponseDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ MessageRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ MessageResponseDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ QuestionRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ””โ”€โ”€ Service
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ””โ”€โ”€ ChatGptService.java
    โ”‚ย ย  โ”‚ย ย              โ”œโ”€โ”€ Community
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Comment
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Controller
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ CommentController.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Dto
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ CommentSaveRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ CommentUpdateRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ Service
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ CommentService.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ””โ”€โ”€ Post
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”œโ”€โ”€ Controller
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”‚ย ย  โ””โ”€โ”€ PostController.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”œโ”€โ”€ Dto
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”‚ย ย  โ”œโ”€โ”€ CommentDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”‚ย ย  โ”œโ”€โ”€ PostAddRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”‚ย ย  โ”œโ”€โ”€ PostDetailResponseDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”‚ย ย  โ”œโ”€โ”€ PostImageDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”‚ย ย  โ”œโ”€โ”€ PostListResponseDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”‚ย ย  โ”œโ”€โ”€ PostModifyRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”‚ย ย  โ””โ”€โ”€ PostResponseDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ””โ”€โ”€ Service
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย          โ””โ”€โ”€ PostService.java
    โ”‚ย ย  โ”‚ย ย              โ”œโ”€โ”€ Dalle
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Controller
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ ImageGeneratorController.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Dto
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ JournalCommentDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ JournalCommentResponseDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ JournalListDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ JournalListPageResponseDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ JournalListResponseDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ JournalResponseDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Service
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ AIService.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ JournalService.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ””โ”€โ”€ ServicesConfig.java
    โ”‚ย ย  โ”‚ย ย              โ”œโ”€โ”€ Entity
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ BaseTimeEntity.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Comment.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Heart.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Journal.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ JournalComment.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Pet.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Post.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ PostImage.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ””โ”€โ”€ User.java
    โ”‚ย ย  โ”‚ย ย              โ”œโ”€โ”€ Global
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Config
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ JpaConfig.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ SecurityConfig.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ””โ”€โ”€ S3
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”œโ”€โ”€ S3Config.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ”œโ”€โ”€ S3ImageController.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ””โ”€โ”€ S3Uploader.java
    โ”‚ย ย  โ”‚ย ย              โ”œโ”€โ”€ HackServerApplication.java
    โ”‚ย ย  โ”‚ย ย              โ”œโ”€โ”€ MyPage
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Controller
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ MyPageController.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Dto
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ MyPageRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ NickNameModifyRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ ProfileImageModifyRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ””โ”€โ”€ Service
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ””โ”€โ”€ MyPageService.java
    โ”‚ย ย  โ”‚ย ย              โ”œโ”€โ”€ Papago
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ NaverTransService.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ””โ”€โ”€ PapagoController.java
    โ”‚ย ย  โ”‚ย ย              โ”œโ”€โ”€ Persona
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Controller
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ PersonaController.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”œโ”€โ”€ Dto
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ PersonaDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ PersonaListRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ PetRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ SpeciesRequestDto.java
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย  โ””โ”€โ”€ Service
    โ”‚ย ย  โ”‚ย ย              โ”‚ย ย      โ””โ”€โ”€ PersonaService.java
    โ”‚ย ย  โ”‚ย ย              โ””โ”€โ”€ Repository
    โ”‚ย ย  โ”‚ย ย                  โ”œโ”€โ”€ CommentRepository.java
    โ”‚ย ย  โ”‚ย ย                  โ”œโ”€โ”€ HeartRepository.java
    โ”‚ย ย  โ”‚ย ย                  โ”œโ”€โ”€ JournalCommentRepository.java
    โ”‚ย ย  โ”‚ย ย                  โ”œโ”€โ”€ JournalRepository.java
    โ”‚ย ย  โ”‚ย ย                  โ”œโ”€โ”€ PetRepository.java
    โ”‚ย ย  โ”‚ย ย                  โ”œโ”€โ”€ PostImageRepository.java
    โ”‚ย ย  โ”‚ย ย                  โ”œโ”€โ”€ PostRepository.java
    โ”‚ย ย  โ”‚ย ย                  โ””โ”€โ”€ UserRepository.java
    โ”‚ย ย  โ””โ”€โ”€ resources
    โ”‚ย ย      โ”œโ”€โ”€ application.properties
    โ”‚ย ย      โ”œโ”€โ”€ static
    โ”‚ย ย      โ””โ”€โ”€ templates
  • Authentication: ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…
  • ChatGpt: ์ฑ„ํŒ…
  • Community: ์ปค๋ฎค๋‹ˆํ‹ฐ
  • Dalle: ์ผ๊ธฐ ํ›”์ณ๋ณด๊ธฐ
  • MyPage: ๋งˆ์ดํŽ˜์ด์ง€
  • Papago: Papago API ํ˜ธ์ถœ
  • Persona: ํŽ˜๋ฅด์†Œ๋‚˜ ์ƒ์„ฑ

๐Ÿ‘ Developers

๊น€๋ฏผ์ง€ ์ตœ์œ ๋‚˜ ํ•˜์œค์ง€
Server
AI
Client
Design
Server
AI

About

Server side of Rainbow Letter

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages