package.json - 개발/실행 스크립트 및 의존성(react, next, react-query 등) 추가/업데이트 package-lock.json - 종속성 락 파일 갱신 AGENTS.md - 프로젝트 가이드, 코딩 컨벤션 및 AI 멘토 프롬프트 문서 추가 db.json - json-server용 샘플 유저 데이터 추가 next.config.ts - 불필요한 설정 제거 .tsconfig.json - 경로/JSX 설정 및 형식 정리 .src/app/layout.tsx - QueryProvider 적용으로 React Query 전역 Provider 추가 src/app/page.tsx - 새 홈 페이지 컴포넌트 추가 src/app/lotto/page.tsx - 로또 기능 라우트 추가 src/app/api/lotto/route.ts - 외부 로또 API를 프록시하는 Next.js API 라우트 추가 (CORS 우회, 디버그 옵션 포함) src/app/react-query/*, src/app/zustand/* - React Query 및 Zustand 예제 페이지(목록/상세/생성/로딩) 추가 src/app/globals.css - Tailwind 기반 전역 스타일 및 테마 변수 확장 (다크 모드 포함) src/providers/QueryProvider.tsx - React Query Provider 및 Devtools 추가 src/lib/getQueryClient.ts - 서버/클라이언트용 QueryClient 생성 유틸 추가 src/lib/utils.ts - 클래스 병합 유틸 추가 (cn) src/lib/useDialogDragResize.ts - Radix Dialog용 드래그/리사이즈 훅 추가 src/components/ui/*.tsx - shadcn 스타일 UI 컴포넌트들(버튼, 카드, 배지, dialog, table, pagination, skeleton 등) 추가 src/features/react-query-demo/** - React Query 데모: API 래퍼, 훅(useUsers, useUser, useCreateUser), 컴포넌트(UserList, UserDetail, UserDashboard, UserCreateForm), 타입, 스토어 추가 - 서버 프리패치/하이드레이션 패턴 포함 src/features/lotto/** - 로또 기능: API 래퍼, payload 파서(다양한 포맷 정규화), hooks, store(Zustand), 컴포넌트(LottoDashboard, LottoTable, RecommendationsDialog), 추천 알고리즘 및 유틸(번호 생성, mock 데이터) 추가 src/features/zustand/** - Zustand 예제 스토어 및 컴포넌트 추가 .src/components.json - shadcn 구성 파일 추가 .idea/* - IDE 설정(inspection, vcs mapping) 추가 여러 파일(주로 새로 추가된 라이브러리 관련 파일) - 프로젝트 초기 설정과 데모 실행을 위한 구성 및 의존성 추가
610 lines
12 KiB
JSON
610 lines
12 KiB
JSON
{
|
|
"users": [
|
|
{
|
|
"id": "1",
|
|
"name": "김철수",
|
|
"username": "chulsoo_kim",
|
|
"email": "chulsoo@example.com"
|
|
},
|
|
{
|
|
"id": "2",
|
|
"name": "이영희",
|
|
"username": "younghee_lee",
|
|
"email": "younghee@example.com"
|
|
},
|
|
{
|
|
"id": "3",
|
|
"name": "박지성",
|
|
"username": "jisung_park",
|
|
"email": "jisung@example.com"
|
|
},
|
|
{
|
|
"id": "4",
|
|
"name": "최유진",
|
|
"username": "yujin_choi",
|
|
"email": "yujin@example.com"
|
|
},
|
|
{
|
|
"id": "5",
|
|
"name": "정범석",
|
|
"username": "bumseok_jung",
|
|
"email": "bumseok@example.com"
|
|
},
|
|
{
|
|
"id": "6",
|
|
"name": "강민경",
|
|
"username": "minkyung_kang",
|
|
"email": "minkyung@example.com"
|
|
},
|
|
{
|
|
"id": "7",
|
|
"name": "조세호",
|
|
"username": "seho_cho",
|
|
"email": "seho@example.com"
|
|
},
|
|
{
|
|
"id": "8",
|
|
"name": "윤하늘",
|
|
"username": "haneul_yoon",
|
|
"email": "haneul@example.com"
|
|
},
|
|
{
|
|
"id": "9",
|
|
"name": "임재범",
|
|
"username": "jaebeom_lim",
|
|
"email": "jaebeom@example.com"
|
|
},
|
|
{
|
|
"id": "10",
|
|
"name": "한미소",
|
|
"username": "miso_han",
|
|
"email": "miso@example.com"
|
|
},
|
|
{
|
|
"id": "11",
|
|
"name": "신동엽",
|
|
"username": "dongyup_shin",
|
|
"email": "dongyup@example.com"
|
|
},
|
|
{
|
|
"id": "12",
|
|
"name": "안정환",
|
|
"username": "junghwan_ahn",
|
|
"email": "junghwan@example.com"
|
|
},
|
|
{
|
|
"id": "13",
|
|
"name": "손흥민",
|
|
"username": "hm_son",
|
|
"email": "son@example.com"
|
|
},
|
|
{
|
|
"id": "14",
|
|
"name": "황희찬",
|
|
"username": "hc_hwang",
|
|
"email": "hwang@example.com"
|
|
},
|
|
{
|
|
"id": "15",
|
|
"name": "김연아",
|
|
"username": "yuna_kim",
|
|
"email": "yuna@example.com"
|
|
},
|
|
{
|
|
"id": "16",
|
|
"name": "박보검",
|
|
"username": "bogum_park",
|
|
"email": "bogum@example.com"
|
|
},
|
|
{
|
|
"id": "17",
|
|
"name": "아이유",
|
|
"username": "iu_lee",
|
|
"email": "iu@example.com"
|
|
},
|
|
{
|
|
"id": "18",
|
|
"name": "유재석",
|
|
"username": "js_yoo",
|
|
"email": "yoo@example.com"
|
|
},
|
|
{
|
|
"id": "19",
|
|
"name": "강호동",
|
|
"username": "hd_kang",
|
|
"email": "kang@example.com"
|
|
},
|
|
{
|
|
"id": "20",
|
|
"name": "백종원",
|
|
"username": "jw_baek",
|
|
"email": "baek@example.com"
|
|
},
|
|
{
|
|
"id": "21",
|
|
"name": "심형탁",
|
|
"username": "ht_shim",
|
|
"email": "shim@example.com"
|
|
},
|
|
{
|
|
"id": "22",
|
|
"name": "노홍철",
|
|
"username": "hc_no",
|
|
"email": "no@example.com"
|
|
},
|
|
{
|
|
"id": "23",
|
|
"name": "정형돈",
|
|
"username": "hd_jung",
|
|
"email": "jung_hd@example.com"
|
|
},
|
|
{
|
|
"id": "24",
|
|
"name": "하동훈",
|
|
"username": "haha",
|
|
"email": "haha@example.com"
|
|
},
|
|
{
|
|
"id": "25",
|
|
"name": "박명수",
|
|
"username": "ms_park",
|
|
"email": "giant_park@example.com"
|
|
},
|
|
{
|
|
"id": "26",
|
|
"name": "김종국",
|
|
"username": "jk_kim",
|
|
"email": "kkook@example.com"
|
|
},
|
|
{
|
|
"id": "27",
|
|
"name": "송지효",
|
|
"username": "jh_song",
|
|
"email": "jihyo@example.com"
|
|
},
|
|
{
|
|
"id": "28",
|
|
"name": "이광수",
|
|
"username": "ks_lee",
|
|
"email": "giraffe@example.com"
|
|
},
|
|
{
|
|
"id": "29",
|
|
"name": "지석진",
|
|
"username": "sj_jee",
|
|
"email": "nose@example.com"
|
|
},
|
|
{
|
|
"id": "30",
|
|
"name": "양세찬",
|
|
"username": "sc_yang",
|
|
"email": "yang@example.com"
|
|
},
|
|
{
|
|
"id": "31",
|
|
"name": "공명",
|
|
"username": "myung_gong",
|
|
"email": "gong@example.com"
|
|
},
|
|
{
|
|
"id": "32",
|
|
"name": "차은우",
|
|
"username": "ew_cha",
|
|
"email": "cha@example.com"
|
|
},
|
|
{
|
|
"id": "33",
|
|
"name": "한고은",
|
|
"username": "ge_han",
|
|
"email": "han_ge@example.com"
|
|
},
|
|
{
|
|
"id": "34",
|
|
"name": "서강준",
|
|
"username": "gj_seo",
|
|
"email": "seo@example.com"
|
|
},
|
|
{
|
|
"id": "35",
|
|
"name": "이정재",
|
|
"username": "jj_lee",
|
|
"email": "lee_jj@example.com"
|
|
},
|
|
{
|
|
"id": "36",
|
|
"name": "정우성",
|
|
"username": "ws_jung",
|
|
"email": "jung_ws@example.com"
|
|
},
|
|
{
|
|
"id": "37",
|
|
"name": "황정민",
|
|
"username": "jm_hwang",
|
|
"email": "hwang_jm@example.com"
|
|
},
|
|
{
|
|
"id": "38",
|
|
"name": "이병헌",
|
|
"username": "bh_lee",
|
|
"email": "lee_bh@example.com"
|
|
},
|
|
{
|
|
"id": "39",
|
|
"name": "조승우",
|
|
"username": "sw_cho",
|
|
"email": "cho_sw@example.com"
|
|
},
|
|
{
|
|
"id": "40",
|
|
"name": "공효진",
|
|
"username": "hj_kong",
|
|
"email": "kong@example.com"
|
|
},
|
|
{
|
|
"id": "41",
|
|
"name": "김혜수",
|
|
"username": "hs_kim",
|
|
"email": "kim_hs@example.com"
|
|
},
|
|
{
|
|
"id": "42",
|
|
"name": "손예진",
|
|
"username": "yj_son",
|
|
"email": "son_yj@example.com"
|
|
},
|
|
{
|
|
"id": "43",
|
|
"name": "현빈",
|
|
"username": "hb_kim",
|
|
"email": "kim_hb@example.com"
|
|
},
|
|
{
|
|
"id": "44",
|
|
"name": "김다미",
|
|
"username": "dm_kim",
|
|
"email": "kim_dm@example.com"
|
|
},
|
|
{
|
|
"id": "45",
|
|
"name": "최우식",
|
|
"username": "ws_choi",
|
|
"email": "choi_ws@example.com"
|
|
},
|
|
{
|
|
"id": "46",
|
|
"name": "박서준",
|
|
"username": "sj_park",
|
|
"email": "park_sj@example.com"
|
|
},
|
|
{
|
|
"id": "47",
|
|
"name": "김태리",
|
|
"username": "tr_kim",
|
|
"email": "kim_tr@example.com"
|
|
},
|
|
{
|
|
"id": "48",
|
|
"name": "안효섭",
|
|
"username": "hs_ahn",
|
|
"email": "ahn_hs@example.com"
|
|
},
|
|
{
|
|
"id": "49",
|
|
"name": "김세정",
|
|
"username": "sj_kim",
|
|
"email": "kim_sj_god@example.com"
|
|
},
|
|
{
|
|
"id": "50",
|
|
"name": "로몬",
|
|
"username": "lomon",
|
|
"email": "lomon@example.com"
|
|
},
|
|
{
|
|
"id": "51",
|
|
"name": "장나라",
|
|
"username": "nr_jang",
|
|
"email": "jang_nr@example.com"
|
|
},
|
|
{
|
|
"id": "52",
|
|
"name": "이상윤",
|
|
"username": "sy_lee",
|
|
"email": "lee_sy@example.com"
|
|
},
|
|
{
|
|
"id": "53",
|
|
"name": "송중기",
|
|
"username": "jk_song",
|
|
"email": "song_jk@example.com"
|
|
},
|
|
{
|
|
"id": "54",
|
|
"name": "김태희",
|
|
"username": "th_kim",
|
|
"email": "kim_th@example.com"
|
|
},
|
|
{
|
|
"id": "55",
|
|
"name": "비",
|
|
"username": "rain_jung",
|
|
"email": "rain@example.com"
|
|
},
|
|
{
|
|
"id": "56",
|
|
"name": "전지현",
|
|
"username": "jh_jun",
|
|
"email": "jun_jh@example.com"
|
|
},
|
|
{
|
|
"id": "57",
|
|
"name": "강동원",
|
|
"username": "dw_kang",
|
|
"email": "kang_dw@example.com"
|
|
},
|
|
{
|
|
"id": "58",
|
|
"name": "원빈",
|
|
"username": "wb_kim",
|
|
"email": "kim_wb@example.com"
|
|
},
|
|
{
|
|
"id": "59",
|
|
"name": "고수",
|
|
"username": "gs_go",
|
|
"email": "go_gs@example.com"
|
|
},
|
|
{
|
|
"id": "60",
|
|
"name": "신민아",
|
|
"username": "ma_shin",
|
|
"email": "shin_ma@example.com"
|
|
},
|
|
{
|
|
"id": "61",
|
|
"name": "김우빈",
|
|
"username": "wb_kim_real",
|
|
"email": "kim_wb_real@example.com"
|
|
},
|
|
{
|
|
"id": "62",
|
|
"name": "이종석",
|
|
"username": "js_lee",
|
|
"email": "lee_js@example.com"
|
|
},
|
|
{
|
|
"id": "63",
|
|
"name": "수지",
|
|
"username": "suzy_bae",
|
|
"email": "suzy@example.com"
|
|
},
|
|
{
|
|
"id": "64",
|
|
"name": "남주혁",
|
|
"username": "jh_nam",
|
|
"email": "nam_jh@example.com"
|
|
},
|
|
{
|
|
"id": "65",
|
|
"name": "한주희",
|
|
"username": "jh_han",
|
|
"email": "han_jh@example.com"
|
|
},
|
|
{
|
|
"id": "66",
|
|
"name": "김수현",
|
|
"username": "sh_kim",
|
|
"email": "kim_sh@example.com"
|
|
},
|
|
{
|
|
"id": "67",
|
|
"name": "전도연",
|
|
"username": "dy_jeon",
|
|
"email": "jeon_dy@example.com"
|
|
},
|
|
{
|
|
"id": "68",
|
|
"name": "설경구",
|
|
"username": "gg_sul",
|
|
"email": "sul_gg@example.com"
|
|
},
|
|
{
|
|
"id": "69",
|
|
"name": "하정우",
|
|
"username": "jw_ha",
|
|
"email": "ha_jw@example.com"
|
|
},
|
|
{
|
|
"id": "70",
|
|
"name": "이정은",
|
|
"username": "je_lee",
|
|
"email": "lee_je@example.com"
|
|
},
|
|
{
|
|
"id": "71",
|
|
"name": "조우진",
|
|
"username": "wj_cho",
|
|
"email": "cho_wj@example.com"
|
|
},
|
|
{
|
|
"id": "72",
|
|
"name": "허성태",
|
|
"username": "st_heo",
|
|
"email": "heo_st@example.com"
|
|
},
|
|
{
|
|
"id": "73",
|
|
"name": "이무생",
|
|
"username": "ms_lee",
|
|
"email": "lee_ms@example.com"
|
|
},
|
|
{
|
|
"id": "74",
|
|
"name": "박해준",
|
|
"username": "hj_park",
|
|
"email": "park_hj@example.com"
|
|
},
|
|
{
|
|
"id": "75",
|
|
"name": "김희애",
|
|
"username": "ha_kim",
|
|
"email": "kim_ha@example.com"
|
|
},
|
|
{
|
|
"id": "76",
|
|
"name": "한소희",
|
|
"username": "sh_han",
|
|
"email": "han_sh@example.com"
|
|
},
|
|
{
|
|
"id": "77",
|
|
"name": "안보현",
|
|
"username": "bh_ahn",
|
|
"email": "ahn_bh@example.com"
|
|
},
|
|
{
|
|
"id": "78",
|
|
"name": "박소담",
|
|
"username": "sd_park",
|
|
"email": "park_sd@example.com"
|
|
},
|
|
{
|
|
"id": "79",
|
|
"name": "정해인",
|
|
"username": "hi_jung",
|
|
"email": "jung_hi@example.com"
|
|
},
|
|
{
|
|
"id": "80",
|
|
"name": "지수",
|
|
"username": "js_blackpink",
|
|
"email": "jisu@example.com"
|
|
},
|
|
{
|
|
"id": "81",
|
|
"name": "제니",
|
|
"username": "jn_blackpink",
|
|
"email": "jenni@example.com"
|
|
},
|
|
{
|
|
"id": "82",
|
|
"name": "로제",
|
|
"username": "rs_blackpink",
|
|
"email": "rose@example.com"
|
|
},
|
|
{
|
|
"id": "83",
|
|
"name": "리사",
|
|
"username": "ls_blackpink",
|
|
"email": "lisa@example.com"
|
|
},
|
|
{
|
|
"id": "84",
|
|
"name": "카리나",
|
|
"username": "karina_aespa",
|
|
"email": "karina@example.com"
|
|
},
|
|
{
|
|
"id": "85",
|
|
"name": "윈터",
|
|
"username": "winter_aespa",
|
|
"email": "winter@example.com"
|
|
},
|
|
{
|
|
"id": "86",
|
|
"name": "지젤",
|
|
"username": "giselle_aespa",
|
|
"email": "giselle@example.com"
|
|
},
|
|
{
|
|
"id": "87",
|
|
"name": "닝닝",
|
|
"username": "ning_aespa",
|
|
"email": "ning@example.com"
|
|
},
|
|
{
|
|
"id": "88",
|
|
"name": "장원영",
|
|
"username": "wy_ive",
|
|
"email": "wonyoung@example.com"
|
|
},
|
|
{
|
|
"id": "89",
|
|
"name": "안유진",
|
|
"username": "yj_ive",
|
|
"email": "yujin@example.com"
|
|
},
|
|
{
|
|
"id": "90",
|
|
"name": "레이",
|
|
"username": "rei_ive",
|
|
"email": "rei@example.com"
|
|
},
|
|
{
|
|
"id": "91",
|
|
"name": "가을",
|
|
"username": "gaeul_ive",
|
|
"email": "gaeul@example.com"
|
|
},
|
|
{
|
|
"id": "92",
|
|
"name": "리즈",
|
|
"username": "liz_ive",
|
|
"email": "liz@example.com"
|
|
},
|
|
{
|
|
"id": "93",
|
|
"name": "이서",
|
|
"username": "leeseo_ive",
|
|
"email": "leeseo@example.com"
|
|
},
|
|
{
|
|
"id": "94",
|
|
"name": "민지",
|
|
"username": "mj_newjeans",
|
|
"email": "minji@example.com"
|
|
},
|
|
{
|
|
"id": "95",
|
|
"name": "하니",
|
|
"username": "hn_newjeans",
|
|
"email": "hanni@example.com"
|
|
},
|
|
{
|
|
"id": "96",
|
|
"name": "다니엘",
|
|
"username": "dn_newjeans",
|
|
"email": "danielle@example.com"
|
|
},
|
|
{
|
|
"id": "97",
|
|
"name": "해린",
|
|
"username": "hr_newjeans",
|
|
"email": "haerin@example.com"
|
|
},
|
|
{
|
|
"id": "98",
|
|
"name": "혜인",
|
|
"username": "hi_newjeans",
|
|
"email": "hyein@example.com"
|
|
},
|
|
{
|
|
"id": "99",
|
|
"name": "박진영",
|
|
"username": "jyp",
|
|
"email": "jyp@example.com"
|
|
},
|
|
{
|
|
"id": "100",
|
|
"name": "방시혁",
|
|
"username": "hitman_bang",
|
|
"email": "bang@example.com"
|
|
},
|
|
{
|
|
"id": "eb12",
|
|
"name": "이지훈",
|
|
"email": "d1d2r3@naver.com",
|
|
"username": "d1d2r3"
|
|
}
|
|
]
|
|
} |