Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
ef85b53
Creates media API controller
sungchan12 Jan 2, 2026
1d0e301
Adds MediaResponse DTO
sungchan12 Jan 2, 2026
8fb60a4
Creates media file management service
sungchan12 Jan 2, 2026
0957971
Video와 Image API 엔드포인트 분리로 인해 삭제 진행
sungchan12 Jan 3, 2026
c76a344
Video와 Image API 엔드포인트 분리로 인해 삭제 진행
sungchan12 Jan 3, 2026
1a0da97
Video와 Image API 엔드포인트 분리로 인해 삭제 진행
sungchan12 Jan 3, 2026
4709bd5
Image DTO 구성
sungchan12 Jan 3, 2026
7ab10ef
이미지 엔드포인트에 썸내일 이미지 엔드포인트 추가
sungchan12 Jan 3, 2026
b9844fd
비디오 API에 썸네일 엔드포인트 추가
sungchan12 Jan 3, 2026
8a62127
이미지 컬렉션 관리 서비스 추가
sungchan12 Jan 3, 2026
dd4514d
비디오 컬렉션 관리 서비스 추가
sungchan12 Jan 3, 2026
809bcb2
비디오 컬렉션 응답 DTO 추가
sungchan12 Jan 3, 2026
222ab82
1. 썸내일 Url, Artist, tags 추가
sungchan12 Jan 4, 2026
512f0cd
메타데이터 및 관련 이미지 URL을 포함하여, 이미지 상세 정보의 구조를 나타내는 데이터 클래스를 정의합니다.
sungchan12 Jan 4, 2026
ea160f5
컬렉션의 구성정보를 보여주는 DTO 정의
sungchan12 Jan 4, 2026
29c567b
썸내일 반환, 컬렉션 상세 정보 조회, 컬렉션 내 이미지들 반환, metadata를 읽어오는 서비스 로직 추가
sungchan12 Jan 4, 2026
a21505d
metadata.json 파싱용 DTO 추가
sungchan12 Jan 4, 2026
11e2f04
CORS 설정 추가
sungchan12 Jan 4, 2026
e814fdc
이미지 컬렉션 뷰어 프론트엔드 초기 구성
sungchan12 Jan 4, 2026
e7b8375
이미지 업로드 DTO 구성
sungchan12 Jan 4, 2026
27391f0
이미지 업로드 결과 DTO 구성
sungchan12 Jan 4, 2026
b1f8918
임시 이미지 업로드 API엔드포인트 구성
sungchan12 Jan 4, 2026
70a60e0
임시 이미지 업로드 API엔드포인트 구성
sungchan12 Jan 5, 2026
1be21cb
웹 서버 설정 구성
sungchan12 Jan 5, 2026
723d60d
임시 프론트 구성
sungchan12 Jan 5, 2026
5c370f6
gitignore 요소추가
sungchan12 Jan 6, 2026
90f86b9
임시 프론트 css
sungchan12 Jan 6, 2026
5f37a7e
임시 프론트 컴포넌
sungchan12 Jan 6, 2026
46e09b0
이미지 컬레션 삭제 API 엔드포인트 추
sungchan12 Jan 6, 2026
469f578
이미지 컬레션 삭제 API 비지니스 로직 추가
sungchan12 Jan 6, 2026
bc7e44a
gitignore 요소 추가
sungchan12 Jan 6, 2026
f409073
공통함수 utils로 분리
sungchan12 Jan 6, 2026
2e23646
공통함수 utils로 분리
sungchan12 Jan 6, 2026
ae8c9bf
공통함수 utils로 분리
sungchan12 Jan 6, 2026
c03e922
유틸 로직 추가
sungchan12 Jan 7, 2026
d3aaad7
1. 반환값이 File형식이 아닌 url방식으로 리턴하게 변경
sungchan12 Jan 8, 2026
b7cd1e6
Repository로 분리
sungchan12 Jan 8, 2026
adde469
gitignore 추가
sungchan12 Jan 8, 2026
54c2692
커밋 추가
sungchan12 Jan 8, 2026
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
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

Expand Down Expand Up @@ -43,6 +42,7 @@ out/
*.ctxt
.mtj.tmp/
*.jar
!gradle/wrapper/gradle-wrapper.jar
*.war
*.nar
*.ear
Expand Down Expand Up @@ -76,6 +76,8 @@ $RECYCLE.BIN/
### Spring Boot ###
# 로컬 설정 파일
application.yaml
application.yml
application.properties
application-local.yml
application-local.properties
frontend/node_modules
5 changes: 4 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@ repositories {

dependencies {
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-web") {
exclude(group = "org.springframework.boot", module = "spring-boot-starter-tomcat")
}
implementation("org.springframework.boot:spring-boot-starter-undertow")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
compileOnly("org.projectlombok:lombok")
Expand Down
24 changes: 24 additions & 0 deletions frontend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
73 changes: 73 additions & 0 deletions frontend/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh

## React Compiler

The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).

## Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:

```js
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...

// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,

// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```

You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:

```js
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'

export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```
23 changes: 23 additions & 0 deletions frontend/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'
import { defineConfig, globalIgnores } from 'eslint/config'

export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
js.configs.recommended,
tseslint.configs.recommended,
reactHooks.configs.flat.recommended,
reactRefresh.configs.vite,
],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
},
])
13 changes: 13 additions & 0 deletions frontend/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>frontend</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Loading