Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
211 commits
Select commit Hold shift + click to select a range
5a4fcd1
[Refactor] merge split files into a single file
je0ng3 Feb 21, 2025
642e0d6
[#3] 데이터 검색 기능 (#5)
oneyVerde Feb 27, 2025
3162f6c
Delete src/main/resources/application.yml
sungwoo8763 Feb 28, 2025
877fdac
[Feat] add email verification
je0ng3 Mar 1, 2025
acc1576
[Chore] add Swagger for API testing and documentation
je0ng3 Mar 6, 2025
a029a3d
Merge develop branch into feature/signup
je0ng3 Mar 6, 2025
0da18cc
[Feat] change login method to email
je0ng3 Mar 6, 2025
977d1e8
[Feat] add account deletion feature
je0ng3 Mar 6, 2025
bf497ee
[Refactor] restructure project directories
je0ng3 Mar 7, 2025
8ad729c
[Refactor] update mapped API endpoints
je0ng3 Mar 7, 2025
914452f
[Refactor] restructure project directories
je0ng3 Mar 7, 2025
146a264
[Refactor] update mapped API endpoints
je0ng3 Mar 7, 2025
8342c89
[Refactor] update mapped API endpoints
je0ng3 Mar 7, 2025
6ca16ee
[Refactor] restructure project directories
je0ng3 Mar 7, 2025
8f83f10
[Feat] add s3download
oneyVerde Mar 7, 2025
2363364
이메일 인증 회원가입 (#9)
oneyVerde Mar 8, 2025
783f07a
Merge develop branch into feature/login
je0ng3 Mar 8, 2025
5076627
[Refactor] refactor folder name
je0ng3 Mar 8, 2025
dd435cf
[Refactor] refactor folder name
je0ng3 Mar 8, 2025
397dc48
api update
sungwoo8763 Mar 8, 2025
39497ca
api update
sungwoo8763 Mar 8, 2025
afe2e07
merge conflict resolve
sungwoo8763 Mar 8, 2025
2fae0e0
conflict resolve
sungwoo8763 Mar 8, 2025
4c8117c
로그인 이메일 사용 (#10)
oneyVerde Mar 8, 2025
41c7754
[Refactor] refactor foler structure
oneyVerde Mar 8, 2025
285268b
[Fix] pull develop
oneyVerde Mar 8, 2025
e14a0f5
conflict reslove
sungwoo8763 Mar 9, 2025
42c4480
메인 및 데이터 목록 페이지 / 상세정보 (#8)
sungwoo8763 Mar 9, 2025
771e505
Revert "메인 및 데이터 목록 페이지 / 상세정보"
sungwoo8763 Mar 9, 2025
21f17ef
Revert "메인 및 데이터 목록 페이지 / 상세정보" (#11)
oneyVerde Mar 9, 2025
36fe5cf
Merge develop branch into feature/delete-account
je0ng3 Mar 9, 2025
61a750b
[Fix] correct session authentication and add tests
je0ng3 Mar 9, 2025
df15b23
Merge branch 'develop' of https://github.com/favicon-data/back into f…
oneyVerde Mar 11, 2025
4ec1ada
회원탈퇴 (#12)
oneyVerde Mar 12, 2025
48458d9
[Fix] fix securityConfig and utf-8 encodin
oneyVerde Mar 12, 2025
52d11e9
Merge branch 'develop' of https://github.com/favicon-data/back into f…
oneyVerde Mar 12, 2025
c83748d
[Refactor] delete unused import
oneyVerde Mar 12, 2025
982bfee
[Refactor] add file at gitignore and rename directory domain
oneyVerde Mar 16, 2025
30fcddb
S3 파일 다운로드 (#13)
sungwoo8763 Mar 16, 2025
001cb98
데이터 및 테마 관련 기능들
sungwoo8763 Mar 16, 2025
e882c8f
data and theme api edit
sungwoo8763 Mar 16, 2025
8da9424
[Feat] add admin role
je0ng3 Mar 16, 2025
45edaf1
Merge develop branch into feature/admin
je0ng3 Mar 16, 2025
8b8e86b
[Fix] remove exposed email from code
je0ng3 Mar 17, 2025
9a1328e
관리자 규칙 추가 (#15)
oneyVerde Mar 17, 2025
099a3a0
데이터 및 테마 관련 기능들 (#14)
oneyVerde Mar 20, 2025
142c6bc
[Refactor] merged application.yml into application.properties
oneyVerde Mar 20, 2025
576b9dc
[Refactor] relocate search login and update for new domain
je0ng3 Mar 20, 2025
25c91d6
[Refactor] add application.properties into gitignore
oneyVerde Mar 20, 2025
cbd9f2f
[Chore] update API endpoint URL
je0ng3 Mar 20, 2025
b8fa56f
[Refactor] add gitignore
oneyVerde Mar 20, 2025
2932ec6
설정파일 통합 (#17)
je0ng3 Mar 20, 2025
d6b01a1
[Refactor] comment out unused code
je0ng3 Mar 21, 2025
ff9df98
데이터 검색 수정 (#16)
sungwoo8763 Mar 21, 2025
e07b628
필터링 및 비율 컨트롤러 수정
sungwoo8763 Mar 22, 2025
10a905e
필터링 및 비율 컨트롤러 수정 (#19)
je0ng3 Mar 22, 2025
352bb5f
notice and faq and domain
sungwoo8763 Mar 23, 2025
5781177
domain and notice and faq modify
sungwoo8763 Mar 23, 2025
2bee1d6
domain notice faq page edit
sungwoo8763 Mar 23, 2025
4831da2
[Refactor] add user ID
je0ng3 Mar 24, 2025
02d806b
add gitignore
sungwoo8763 Mar 24, 2025
d1acfea
[Feat] auto build test
je0ng3 Mar 24, 2025
8303b43
[Refactor] add java distribution
je0ng3 Mar 24, 2025
e0dae10
[Refactor] change java distribution
je0ng3 Mar 24, 2025
6d01d83
domain and notice and faq modify
sungwoo8763 Mar 24, 2025
3504d6c
[Feat] add gradle setting test
je0ng3 Mar 24, 2025
2882b10
유저 아이디 (#21)
sungwoo8763 Mar 24, 2025
bed04b8
깃허브액션 (#22)
oneyVerde Mar 24, 2025
ecc3391
domain and notice and faq modify
sungwoo8763 Mar 24, 2025
cebae4d
Merge branch 'develop' into feature/notice_faq
oneyVerde Mar 24, 2025
64ab5b6
도메인, 공지사항, 자주묻는질문 페이지 (#20)
oneyVerde Mar 24, 2025
ed12f02
[Feat] add feature: group by theme
oneyVerde Mar 24, 2025
0dc79d9
[Fix] fixed untracked files
oneyVerde Mar 24, 2025
bb27e7f
[Feat] add feature: get region
oneyVerde Mar 24, 2025
49b90ed
user join error resolve
sungwoo8763 Mar 24, 2025
ddf583f
[Feat] add feature: data analysis
oneyVerde Mar 24, 2025
e05a335
[Refacotr] refactor testScript.py
oneyVerde Mar 25, 2025
23b8380
조인 컬럼 에러 해결 (#23)
je0ng3 Mar 26, 2025
c78fb70
[Chore] relocate files
je0ng3 Mar 27, 2025
5d6d65e
[Fix] connect to python
oneyVerde Mar 30, 2025
8bd8046
Merge branch 'develop' into feature/analysis
oneyVerde Mar 30, 2025
b2ec66a
[Refactor] simplified API URL by grouping common parts
je0ng3 Mar 30, 2025
d2d32ad
[Feat] add bookmark creation, addition, and retrieval functionality
je0ng3 Mar 31, 2025
d8572ce
분석기능 (#24)
sungwoo8763 Mar 31, 2025
4dd5518
[Refactor] change scrap domain and updated login stored information t…
je0ng3 Apr 2, 2025
0b07a61
[Fix] correct incorrect variable names
je0ng3 Apr 3, 2025
c4d168a
Merge develop branch into feature/favorites
je0ng3 Apr 3, 2025
53ac02b
[Chore] removed unused code
je0ng3 Apr 3, 2025
9925e89
[Feat] integrated Docker Hub into CI pipeline
je0ng3 Apr 4, 2025
ce7f999
[Refactor] merge files for better organization
je0ng3 Apr 4, 2025
1af320d
[Feat] add checkout code
je0ng3 Apr 4, 2025
93ca867
데이터 즐겨찾기 (#25)
sungwoo8763 Apr 4, 2025
2200ac2
s3 upload and delete
sungwoo8763 Apr 9, 2025
ea5d89a
[Fix] fix api test
oneyVerde Apr 9, 2025
2469171
[Fix] merge with develop
oneyVerde Apr 9, 2025
4dd35b4
[Fix] fix gitignore
oneyVerde Apr 9, 2025
23ef803
S3 업로드 및 삭제 기능(DB 포함) (#27)
je0ng3 Apr 9, 2025
0cacd07
Merge branch 'develop' into feature/analysis
oneyVerde Apr 9, 2025
2e71fa0
분석 기능 수정 (#28)
sungwoo8763 Apr 9, 2025
d927b5d
Merge branch 'develop' of https://github.com/favicon-data/back into f…
je0ng3 Apr 15, 2025
7120180
[Feat] set up CI/CD pipeline on EC2
je0ng3 Apr 16, 2025
0dad17b
[Refactor] change stage order in GitHub Actions
je0ng3 Apr 16, 2025
0b8b1a7
[Chore] injected variables using environment file
je0ng3 Apr 28, 2025
10f67c2
[Refactor] consolidated steps into a single step
je0ng3 Apr 28, 2025
d5fb57c
[Refacor] add Docker image tag
je0ng3 Apr 28, 2025
84a9479
[Refactor] replace secrets with variables
je0ng3 Apr 28, 2025
291c1e8
[Fix] modifiy EC2 deployment code
je0ng3 May 6, 2025
b64bb94
[Feat] apply Thymeleaf to email template
je0ng3 May 6, 2025
719d707
[Refactor] distinguish email template engine by renaming and updating…
je0ng3 May 6, 2025
3b89a0e
[Refactor] explicitly inject the correct S3Config bean into S3Control…
je0ng3 May 6, 2025
7df5531
[Chore] remove emailTemplateEngine bean
je0ng3 May 6, 2025
83dc705
[Chore] remove emailTemplateEngine
je0ng3 May 6, 2025
8905b5b
s3 자동화 스케줄링 및 테마 비율 및 카테고리 api 수정
sungwoo8763 May 8, 2025
75e20f2
s3 자동화 스케줄링 및 테마 비율 및 카테고리 api 수정 (#30)
oneyVerde May 8, 2025
2401bdd
메타데이터 추출 코드 수정
sungwoo8763 May 8, 2025
a30f4ac
[Fix] fix region service to string from region
oneyVerde May 8, 2025
b9135b7
Merge branch 'develop' of https://github.com/favicon-data/back into f…
oneyVerde May 8, 2025
72ab6a2
이메일 템플릿 추가 (#29)
sungwoo8763 May 8, 2025
54d9b12
인기데이터 추출 9개로 변경 및 메타데이터 추출값 수정
sungwoo8763 May 8, 2025
3252401
Merge branch 'develop' of https://github.com/favicon-data/back into f…
sungwoo8763 May 8, 2025
37386f5
Feature/analysis (#31)
je0ng3 May 13, 2025
2cd5cb3
trend api add
sungwoo8763 May 13, 2025
de674d1
Merge branch 'develop' of https://github.com/favicon-data/back into f…
sungwoo8763 May 13, 2025
7d283b0
trend api add
sungwoo8763 May 13, 2025
fda1d7a
[Refactor] create files listed in gitignore with echo
je0ng3 May 14, 2025
bd9f81b
[Refacor] change to use existing image instead of build
je0ng3 May 14, 2025
e7ad7cd
[Refactor] unify service class structure to interface + impl pattern
je0ng3 May 16, 2025
f847e80
[Feat] integrate response code
je0ng3 May 17, 2025
eb51d40
[Refactor] use git secrets
je0ng3 May 17, 2025
2df5749
[Refactor] refactor .gitignore
je0ng3 May 17, 2025
90039b8
Merge develop to feature/github-action
je0ng3 May 17, 2025
f271fd1
[Refactor] fix spelling error
je0ng3 May 17, 2025
d0c9c5a
메타데이터 및 일부 API 수정 및 추가 (#32)
oneyVerde May 17, 2025
967c196
[Refactor] remove default application option
je0ng3 May 17, 2025
a872217
[Refactor] remove default application option
je0ng3 May 17, 2025
a24cf2a
[Refactor] change github secrets to use env file
je0ng3 May 17, 2025
349b59d
[Refactor] fix spelling error
je0ng3 May 17, 2025
9666e77
[Refactor] edit environment variables
je0ng3 May 18, 2025
37d42dd
Merge develop to refactor
je0ng3 May 18, 2025
3f312d4
[Refactor] implement trend service interface
je0ng3 May 18, 2025
862ee9b
[Refactor] edit security config
je0ng3 May 18, 2025
a8ff9ef
메타데이터 추출 형태 변경, resource 추가, s3 컨트롤러 수정
sungwoo8763 May 23, 2025
507a956
메타데이터 추출 형태 변경, resource 추가, s3 컨트롤러 수정
sungwoo8763 May 23, 2025
1472fc2
메타데이터 추출 형태 변경, resource 추가, s3 컨트롤러 수정
sungwoo8763 May 23, 2025
5becc97
메타데이터 추출 형태 변경, resource 추가, s3 컨트롤러 수정
sungwoo8763 May 23, 2025
1ffef68
[Refactor] make not to run it in pr
je0ng3 May 24, 2025
aac3512
[Feat] cd to ec2
je0ng3 May 24, 2025
daddda6
refactor: modify the docker run command
je0ng3 May 24, 2025
0f3c5b7
[Refactor] remove test code and typo correction
je0ng3 May 24, 2025
0cd5542
[Refactor] make different test environments when pr or push
je0ng3 May 24, 2025
3c10385
최종 수정
sungwoo8763 May 24, 2025
c700ada
메타데이터 추출 형태 변경, resource 추가, s3 컨트롤러 수정
sungwoo8763 May 24, 2025
cce0939
EC2 CI/CD (#26)
sungwoo8763 May 24, 2025
be8a9f0
메타데이터 추출 형태 변경, resource 추가, s3 컨트롤러 수정 (#34)
oneyVerde May 24, 2025
171b7e9
데이터 통계 추가
sungwoo8763 May 25, 2025
eb7d7b5
데이터 통계 추가
sungwoo8763 May 25, 2025
552d429
데이터 통계 및 요청 통계 추가
sungwoo8763 May 25, 2025
d04c73b
데이터 통계 및 요청 통계 추가
sungwoo8763 May 25, 2025
9ae98bc
[Refactor] clarify the reference
je0ng3 May 25, 2025
04e14ca
[Feat] calculate total number of users and growth rate compared to pr…
je0ng3 May 25, 2025
bdafa61
[Feat] user overview
je0ng3 May 25, 2025
7c4c60d
[Style] change code location
je0ng3 May 25, 2025
59e4a5a
[Feat] get full user information
je0ng3 May 25, 2025
f2c6036
데이터 통계 및 요청 통계 추가
sungwoo8763 May 25, 2025
92a19c0
데이터 통계 및 요청 통계 추가
sungwoo8763 May 25, 2025
e65d4e0
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 25, 2025
8daae86
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 25, 2025
9aaa4eb
[Feat] implement of member withdrawal
je0ng3 May 25, 2025
b593df1
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 25, 2025
27a5b1f
[Refactor] apply corsconfig to securityconfig
je0ng3 May 25, 2025
e9d66c6
Merge develop branch to refactor
je0ng3 May 26, 2025
804ae71
관리자 페이지 관련 통계기능 구현 (#37)
sungwoo8763 May 26, 2025
b9d755f
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 26, 2025
e47c035
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 26, 2025
b67a00d
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 26, 2025
5fdf4ee
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 26, 2025
988cfe0
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 26, 2025
b328339
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 26, 2025
97a0a23
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 26, 2025
6e2be1e
Merge branch 'develop' into feature/s3_upload_delete
sungwoo8763 May 26, 2025
1b09551
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 26, 2025
f074910
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 26, 2025
f4d429d
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 26, 2025
057a6b9
데이터 통계 및 요청 통계 추가 및 일부 api 수정
sungwoo8763 May 26, 2025
af9aff3
전체 데이터 및 요청 데이터 통계 / 데이터 요청 게시글 작성시 s3에 임시로 저장 (#36)
oneyVerde May 26, 2025
e817b85
fix merge conflict
je0ng3 May 26, 2025
f11f301
전체 코드 리팩토링 (#35)
sungwoo8763 May 26, 2025
eb0af2b
데이터 관리 페이지 및 대시보드 연결 완료(사용자 제외)
sungwoo8763 May 26, 2025
bb45310
데이터 관리 페이지 및 대시보드 연결 완료(사용자 제외)
sungwoo8763 May 26, 2025
201a0a1
request download
sungwoo8763 May 26, 2025
bd13f82
[Refactor] refactor codes
je0ng3 May 26, 2025
61d62d8
[Refactor] refactor codes (#38)
sungwoo8763 May 27, 2025
507a243
요청 다운로드 수정
sungwoo8763 May 28, 2025
c78518a
요청 다운로드 수정
sungwoo8763 May 28, 2025
461206b
download api 추가
sungwoo8763 May 29, 2025
29fca23
Feature/request download (#39)
sungwoo8763 May 29, 2025
4687f42
[Refactor] return username when login
je0ng3 May 31, 2025
8d0b6f0
관리자 서비스 로직 수정
sungwoo8763 Jun 1, 2025
2d5c92f
refactor: change return type of login
je0ng3 Jun 1, 2025
010fe7b
[Refactor] change return type of scrap
je0ng3 Jun 1, 2025
3abe42d
관리자 서비스 로직 수정 (#41)
oneyVerde Jun 1, 2025
5d0a383
로그인, 북마크 리턴타입 변경 (#40)
oneyVerde Jun 1, 2025
cffbbf2
s3 파싱 수정
sungwoo8763 Jun 2, 2025
14ae729
s3 파싱 수정 (#42)
je0ng3 Jun 2, 2025
0f031b1
Merge branch 'main' into develop
sungwoo8763 Jun 2, 2025
b560c08
최종본
sungwoo8763 Jun 3, 2025
344951c
cors 추가
sungwoo8763 Jun 3, 2025
bc39bce
[Feat] connect with GPT
je0ng3 Jun 3, 2025
3349c7c
GPT 연결 (#45)
sungwoo8763 Jun 3, 2025
3c786b7
Merge branch 'develop' of https://github.com/favicon-data/back into f…
sungwoo8763 Jun 3, 2025
3c310d8
최종본 (#44)
je0ng3 Jun 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file removed .env
Empty file.
16 changes: 0 additions & 16 deletions .github/PULL_REQUEST_TEMPLATE.md

This file was deleted.

58 changes: 58 additions & 0 deletions .github/workflows/build_and_deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Deploy to DockerHub & EC2

on:
push:
branches: [ main, develop ]

jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Set up Gradle
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582
with:
cache-read-only: false

- name: Grant Execute Permission For Gradlew
run: chmod +x gradlew

- name: Build with Gradle
run: |
set -e
./gradlew clean build -Dspring.profiles.active=local

- name: Build Docker image
run: |
docker build \
--build-arg SPRING_PROFILES_ACTIVE=prob \
-f Dockerfile \
-t ${{ vars.DOCKERHUB_USERNAME}}/erica-favicon:latest .

- name: DockerHub login
uses: docker/login-action@v2
with:
username: ${{ vars.DOCKERHUB_USERNAME}}
password: ${{ vars.DOCKERHUB_PASSWORD}}

- name: Push Docker image
run: |
docker push ${{ vars.DOCKERHUB_USERNAME}}/erica-favicon:latest

- name: Deploy to EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_KEY }}
script: |
docker pull ${{ vars.DOCKERHUB_USERNAME }}/erica-favicon:latest
docker rm -f back 2>/dev/null || true
docker compose -f docker-compose.yml --env-file .env up --build -d
30 changes: 30 additions & 0 deletions .github/workflows/build_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: PR Build TEST

on:
pull_request:
branches: [ main, develop ]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Set up Gradle
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582
with:
cache-read-only: false

- name: Grant Execute Permission For Gradlew
run: chmod +x gradlew

- name: Build with Gradle
run: |
set -e
./gradlew clean build -Dspring.profiles.active=local
15 changes: 6 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
FROM gradle:8.4-jdk17 AS builder
WORKDIR /app
COPY . .
RUN ./gradlew bootJar

FROM amazoncorretto:17.0.12
WORKDIR /app
COPY --from=builder /app/build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "-Djava.security.egd=file:/dev/./urandom", "app.jar"]
FROM amazoncorretto:17
RUN yum update -y && \
yum install -y python3 && \
yum clean all
COPY build/libs/app.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
55 changes: 35 additions & 20 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,38 +29,53 @@ jar {
enabled = false
}

springBoot {
mainClass = 'com.capstone.favicon.FaviconApplication'
}

bootJar {
archiveFileName = 'app.jar'
}

jar {
enabled = false
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter:3.4.2'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-webflux'
implementation 'io.netty:netty-resolver-dns-native-macos:4.1.109.Final:osx-aarch_64'

implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter:3.4.2'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

implementation 'org.postgresql:postgresql:42.6.0'
implementation 'org.postgresql:postgresql:42.6.0'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
// lombok
// lombok
compileOnly 'org.projectlombok:lombok:1.18.28'
annotationProcessor 'org.projectlombok:lombok:1.18.28'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.36'
annotationProcessor 'org.projectlombok:lombok:1.18.28'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.36'

implementation 'org.springframework.boot:spring-boot-starter-security'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.boot:spring-boot-starter-test'

// aws
implementation 'software.amazon.awssdk:s3:2.20.28'
// aws
implementation 'software.amazon.awssdk:s3:2.20.28'

// assertj
testImplementation "org.assertj:assertj-core:3.26.3"
testImplementation "org.junit.jupiter:junit-jupiter:5.11.4"
// assertj
testImplementation "org.assertj:assertj-core:3.26.3"
testImplementation "org.junit.jupiter:junit-jupiter:5.11.4"

// mail
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
// mail
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

}

tasks.named('test') {
useJUnitPlatform()
}
useJUnitPlatform()
}
49 changes: 18 additions & 31 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,37 +1,24 @@
services:
postgres:
image: postgres
container_name: postgres
restart: always
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
redis:
image: redis:latest
container_name: redis
ports:
- "5432:5432"
- "6379:6379"
command:
- redis-server
networks:
- backend-network

backend:
build:
context: ${REPO_BACK_URL}
container_name: back
restart: always
depends_on:
- postgres
environment:
SPRING_DATASOURCE_URL: ${SPRING_DATASOURCE_URL}
SPRING_DATASOURCE_USERNAME: ${SPRING_DATASOURCE_USERNAME}
SPRING_DATASOURCE_PASSWORD: ${SPRING_DATASOURCE_PASSWORD}
image: 211i2/erica-backend:latest
container_name: backend
ports:
- "8081:8080"

frontend:
build:
context: ${REPO_FRONT_URL}
container_name: front
restart: always
- "8080:8080"
networks:
- backend-network
depends_on:
- backend
environment:
REACT_APP_API_URL: ${REACT_APP_API_URL}
ports:
- "3000:80"
- redis

networks:
backend-network:
driver: bridge
2 changes: 2 additions & 0 deletions src/main/java/com/capstone/favicon/FaviconApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class FaviconApplication {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.capstone.favicon.admin.application;

import com.capstone.favicon.admin.application.service.AdminService;
import com.capstone.favicon.user.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@RequiredArgsConstructor
@Service
public class AdminServiceImpl implements AdminService {

@Autowired
private UserRepository userRepository;

@Override
@Transactional
public void deleteUser(Long userId) {
userRepository.deleteByUserId(userId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package com.capstone.favicon.admin.application;

import com.capstone.favicon.admin.application.service.FAQService;
import com.capstone.favicon.admin.domain.FAQ;
import com.capstone.favicon.admin.dto.FAQRequestDto;
import com.capstone.favicon.admin.dto.FAQResponseDto;
import com.capstone.favicon.admin.repository.FAQRepository;
import com.capstone.favicon.user.domain.User;
import com.capstone.favicon.user.repository.UserRepository;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
@Primary
@RequiredArgsConstructor
public class FAQServiceImpl implements FAQService {

private final FAQRepository faqRepository;
private final UserRepository userRepository;

@Override
public User getAdminUserFromSession(HttpServletRequest request) {
HttpSession session = request.getSession();
Long id = (Long) session.getAttribute("id");
User user = userRepository.findByUserId(id);
if (user == null || user.getRole() != 1) {
throw new RuntimeException("이 기능은 관리자만 접근 가능합니다.");
}
return user;
}

@Override
public void createFAQ(FAQRequestDto request) {
FAQ faq = new FAQ();
faq.setCategory(request.getCategory());
faq.setQuestion(request.getQuestion());
faq.setAnswer(request.getAnswer());

faqRepository.save(faq);
}

@Override
public void updateFAQ(Long faqId, FAQRequestDto request) {
FAQ faq = faqRepository.findById(faqId)
.orElseThrow(() -> new RuntimeException("FAQ를 찾을 수 없습니다."));

faq.setCategory(request.getCategory());
faq.setQuestion(request.getQuestion());
faq.setAnswer(request.getAnswer());

faqRepository.save(faq);
}

@Override
public void deleteFAQ(Long faqId) {
FAQ faq = faqRepository.findById(faqId)
.orElseThrow(() -> new RuntimeException("FAQ를 찾을 수 없습니다."));
faqRepository.delete(faq);
}

@Override
public List<FAQResponseDto> getAllFAQs() {
List<FAQ> faqs = faqRepository.findAll();
return faqs.stream().map(FAQResponseDto::new).collect(Collectors.toList());
}

@Override
public FAQResponseDto getFAQById(Long faqId) {
FAQ faq = faqRepository.findById(faqId)
.orElseThrow(() -> new RuntimeException("FAQ를 찾을 수 없습니다."));
return new FAQResponseDto(faq);
}

}
Loading
Loading