Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
c15fb12
NextJS Project Creation w/ yarn berry (pnp mode)
DefineXX May 2, 2025
3572223
chore: eslint 관련 의존성 설치
gustn99 May 3, 2025
f9818d8
chore: prettier 설정 추가
gustn99 May 3, 2025
119837c
chore: eslint-config-next 관련 의존성 설치
gustn99 May 3, 2025
b1fe1a8
chore: 기본적인 eslint-plugin-import 설정 추가
gustn99 May 3, 2025
c3d684e
chore: eslint-plugin-import 커스텀 설정 추가
gustn99 May 4, 2025
1d497f4
chore: eslint-plugin-import 절대경로 세분화
gustn99 May 4, 2025
f7d2d9b
style: theme variable & utility class 설정 추가
gustn99 May 4, 2025
4be7dd2
style: 폰트 설정 추가
gustn99 May 4, 2025
d78099f
chore: clsx 설치
gustn99 May 4, 2025
0066a12
Merge pull request #1 from DefineXX/chore/eslint-setting: eslint setting
DefineXX May 9, 2025
41510bb
Merge branch 'develop' from remote - Sync with #1: eslint setting
DefineXX May 9, 2025
7fd1dc9
Merge branch 'style/tailwind-setting' of https://github.com/DefineXX/…
DefineXX May 9, 2025
6261066
chore: VSCode tailwind css warning resolution
DefineXX May 9, 2025
0d8ea77
chore: @svgr/webpack 설치 및 svgr 세팅
DefineXX May 9, 2025
94bc804
style: Color palette 색상 추가
DefineXX May 9, 2025
4c9715c
feat: 홈 화면 LNB 및 GNB UI 구현
DefineXX May 9, 2025
ca3796a
refactor: Home LNB 및 TabBar 컴포넌트화
DefineXX May 9, 2025
d1fa0f7
chore: clsx 일반 의존성으로 재설치
DefineXX May 10, 2025
1b2f8fe
chore: clsx dependency 조정
gustn99 May 10, 2025
76bcf27
style: font class line-height 조정
gustn99 May 10, 2025
d022120
feat: movie-list ui 구현
gustn99 May 10, 2025
4e02ee0
feat: Banner Controller UI 구현
DefineXX May 10, 2025
1f75305
feat: Top10 Chip 컴포넌트 구현
DefineXX May 10, 2025
5d80a70
feat: Top10 Banner API 연동 및 UI 구현
DefineXX May 10, 2025
606c03f
Merge pull request #3 from DefineXX/feature/GNB: GNB 및 Home Banner 구현
DefineXX May 10, 2025
007785d
Merge branch 'develop' from remote - Sync with #3: GNB 및 Home Banner 구현
DefineXX May 10, 2025
2a3f0c9
feat: movie list api 연결
gustn99 May 10, 2025
1b23b7c
fix: 병합 충돌 해결
gustn99 May 10, 2025
65b54ee
fix: 홈 화면에 맞게 ui 조정
gustn99 May 10, 2025
f6b1c1f
refactor: fetchMoviesApi를 services 폴더로 분리
gustn99 May 10, 2025
b64aac3
refactor: components/featuers/ 폴더구조 수정
gustn99 May 10, 2025
a938095
feat: previews 구현
gustn99 May 10, 2025
48897dd
Merge pull request #4 from DefineXX/feature/movie-item-ui-api
gustn99 May 10, 2025
b1eae7d
feat: 랜딩 화면 구현
gustn99 May 10, 2025
a214c40
refactor: movie list 렌더링 순서 조정
gustn99 May 10, 2025
e38904f
feat: 반응형 구현
gustn99 May 10, 2025
1c7de26
Merge pull request #5 from DefineXX/feature/landing
gustn99 May 10, 2025
23543c9
Merge branch 'develop' from remote - Sync with #5
DefineXX May 10, 2025
6a241ec
refactor: 프로젝트 디렉토리 구조 정리
DefineXX May 10, 2025
f5a2b95
refactor: API 호출 함수 내 fetcher 적용 및 tmdb 내 통합
DefineXX May 10, 2025
9101462
chore: import문 수정
DefineXX May 10, 2025
75f392c
fix: Splash UX 보완
DefineXX May 10, 2025
e2c0212
chore: next.config.ts 타입 수정
DefineXX May 10, 2025
f48cd84
fix: ESLint 관련 import문 순서 수정
DefineXX May 10, 2025
f52c3e4
fix: ESlint 관련 import문 수정
DefineXX May 10, 2025
5ce184f
fix: Splash 렌더링 방식 수정 및 import 관련 ESLint 임시 비활성화
DefineXX May 10, 2025
e8a6d38
fix: TabBar z-index 수정
DefineXX May 11, 2025
5b0296e
feat: Home banner Swiper 구현
DefineXX May 11, 2025
8f25ae8
fix: Image 컴포넌트 관련 경고 resolve
DefineXX May 11, 2025
b48a827
fix: HomeLNB 및 Banner Controller 스타일링 수정
DefineXX May 11, 2025
1c87b84
fix: unused import 삭제
DefineXX May 11, 2025
a21f01c
fix: PlayButton 범용성 고려해 ui 수정
gustn99 May 15, 2025
3e4a8f0
feat: detail 관련 api 함수 추가
gustn99 May 15, 2025
56f66b2
feat: 디테일 페이지 구현
gustn99 May 15, 2025
fd3514c
feat: preview에 디테일 페이지 연결
gustn99 May 15, 2025
cfbc3ce
feat: banner에 디테일 페이지 연결
gustn99 May 15, 2025
9ebf304
style: space를 tab으로 변경
gustn99 May 15, 2025
f219d38
style: 불필요한 css 삭제
gustn99 May 15, 2025
b3d0022
Merge pull request #6 from DefineXX/feature/detail: detail 페이지 구현
DefineXX May 17, 2025
809afdc
Merge branch 'develop' from remote - Sync with #6: detail 페이지 구현
DefineXX May 17, 2025
39f72ab
fix: TabBar 내 Home 옵션 route 수정
DefineXX May 17, 2025
e97d44c
style: font-family 추가 및 타이포 수정
DefineXX May 17, 2025
9661834
feat: 검색 페이지 내 실시간 검색 및 무한 스크롤 구현
DefineXX May 17, 2025
9310430
Merge pull request #7 from DefineXX/feature/search: 검색 페이지 구현
DefineXX May 17, 2025
3d28c6e
fix: Image 컴포넌트 관련 경고 해결
DefineXX May 19, 2025
d803651
fix: TV 타입 정의 및 검색 API 함수 타입 정의 수정
DefineXX May 19, 2025
8e775f1
fix: 검색 아이템의 media_type에 따른 아이템 제목 적용
DefineXX May 19, 2025
33a0f03
fix: 검색 결과에 대한 무한 스크롤 구현 및 검색 로직 수정
DefineXX May 19, 2025
0946f7b
fix: 무한 스크롤 로딩 시 UX 보완
DefineXX May 19, 2025
f8957bc
fix: TMDB Response 타입 수정
DefineXX May 19, 2025
8396479
Merge pull request #8 from DefineXX/feature/search: 검색 기능 수정
DefineXX May 19, 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
40 changes: 40 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# env files (can opt-in for committing if needed)
.env*

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts
9 changes: 9 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"trailingComma": "all",
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"printWidth": 120,
"arrowParens": "always",
"useTabs": true
}
7 changes: 7 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"recommendations": [
"arcanis.vscode-zipfs",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
10 changes: 10 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"search.exclude": {
"**/.yarn": true,
"**/.pnp.*": true
},
"eslint.nodePath": ".yarn/sdks",
"typescript.tsdk": ".yarn/sdks/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true,
"prettier.prettierPath": ".yarn/sdks/prettier/index.cjs"
}
32 changes: 32 additions & 0 deletions .yarn/sdks/eslint/bin/eslint.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env node

const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);

const relPnpApiPath = "../../../../.pnp.cjs";

const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);

const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);

if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint/bin/eslint.js
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}

const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;

// Defer to the real eslint/bin/eslint.js your application uses
module.exports = wrapWithUserWrapper(absRequire(`eslint/bin/eslint.js`));
32 changes: 32 additions & 0 deletions .yarn/sdks/eslint/lib/api.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env node

const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);

const relPnpApiPath = "../../../../.pnp.cjs";

const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);

const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);

if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}

const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;

// Defer to the real eslint your application uses
module.exports = wrapWithUserWrapper(absRequire(`eslint`));
32 changes: 32 additions & 0 deletions .yarn/sdks/eslint/lib/config-api.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env node

const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);

const relPnpApiPath = "../../../../.pnp.cjs";

const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);

const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);

if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint/config
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}

const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;

// Defer to the real eslint/config your application uses
module.exports = wrapWithUserWrapper(absRequire(`eslint/config`));
32 changes: 32 additions & 0 deletions .yarn/sdks/eslint/lib/types/config-api.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env node

const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);

const relPnpApiPath = "../../../../../.pnp.cjs";

const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);

const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);

if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint/config
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}

const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;

// Defer to the real eslint/config your application uses
module.exports = wrapWithUserWrapper(absRequire(`eslint/config`));
32 changes: 32 additions & 0 deletions .yarn/sdks/eslint/lib/types/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env node

const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);

const relPnpApiPath = "../../../../../.pnp.cjs";

const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);

const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);

if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}

const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;

// Defer to the real eslint your application uses
module.exports = wrapWithUserWrapper(absRequire(`eslint`));
32 changes: 32 additions & 0 deletions .yarn/sdks/eslint/lib/types/rules.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env node

const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);

const relPnpApiPath = "../../../../../.pnp.cjs";

const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);

const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);

if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint/rules
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}

const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;

// Defer to the real eslint/rules your application uses
module.exports = wrapWithUserWrapper(absRequire(`eslint/rules`));
32 changes: 32 additions & 0 deletions .yarn/sdks/eslint/lib/types/universal.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env node

const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);

const relPnpApiPath = "../../../../../.pnp.cjs";

const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);

const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);

if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint/universal
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}

const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;

// Defer to the real eslint/universal your application uses
module.exports = wrapWithUserWrapper(absRequire(`eslint/universal`));
32 changes: 32 additions & 0 deletions .yarn/sdks/eslint/lib/types/use-at-your-own-risk.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env node

const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);

const relPnpApiPath = "../../../../../.pnp.cjs";

const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);

const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);

if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint/use-at-your-own-risk
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}

const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;

// Defer to the real eslint/use-at-your-own-risk your application uses
module.exports = wrapWithUserWrapper(absRequire(`eslint/use-at-your-own-risk`));
32 changes: 32 additions & 0 deletions .yarn/sdks/eslint/lib/universal.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env node

const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);

const relPnpApiPath = "../../../../.pnp.cjs";

const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);

const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);

if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint/universal
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}

const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;

// Defer to the real eslint/universal your application uses
module.exports = wrapWithUserWrapper(absRequire(`eslint/universal`));
32 changes: 32 additions & 0 deletions .yarn/sdks/eslint/lib/unsupported-api.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env node

const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);

const relPnpApiPath = "../../../../.pnp.cjs";

const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);

const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);

if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint/use-at-your-own-risk
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}

const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;

// Defer to the real eslint/use-at-your-own-risk your application uses
module.exports = wrapWithUserWrapper(absRequire(`eslint/use-at-your-own-risk`));
Loading