+ To get started, edit the page.tsx file. +
++ Looking for a starting point or more instructions? Head over to{" "} + + Templates + {" "} + or the{" "} + + Learning + {" "} + center. +
+dAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJw b z_^v8bbg` SAn{I*4bH$u(RZ6*x UhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=p C^ S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk( $?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU ^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvh CL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c 70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397* _cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111a H}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*I cmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU &68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-= A= yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v #ix45EVrcEhr>!NMhprl $InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~ &^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7< 4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}sc Zlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+ 9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2 `1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M =hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S( O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/checkmo/src/app/globals.css b/checkmo/src/app/globals.css new file mode 100644 index 0000000..a2dc41e --- /dev/null +++ b/checkmo/src/app/globals.css @@ -0,0 +1,26 @@ +@import "tailwindcss"; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +body { + background: var(--background); + color: var(--foreground); + font-family: Arial, Helvetica, sans-serif; +} diff --git a/checkmo/src/app/layout.tsx b/checkmo/src/app/layout.tsx new file mode 100644 index 0000000..f7fa87e --- /dev/null +++ b/checkmo/src/app/layout.tsx @@ -0,0 +1,34 @@ +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/checkmo/src/app/page.tsx b/checkmo/src/app/page.tsx new file mode 100644 index 0000000..295f8fd --- /dev/null +++ b/checkmo/src/app/page.tsx @@ -0,0 +1,65 @@ +import Image from "next/image"; + +export default function Home() { + return ( + ++ ); +} diff --git a/checkmo/tsconfig.json b/checkmo/tsconfig.json new file mode 100644 index 0000000..cf9c65d --- /dev/null +++ b/checkmo/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.mts" + ], + "exclude": ["node_modules"] +} From f4eb155a5a9cc1a5c3d3d60ecbb670eff78b0ee4 Mon Sep 17 00:00:00 2001 From: psm1st+ ++ ++ ++ To get started, edit the page.tsx file. +
++ Looking for a starting point or more instructions? Head over to{" "} + + Templates + {" "} + or the{" "} + + Learning + {" "} + center. +
+Date: Mon, 10 Nov 2025 04:17:05 +0900 Subject: [PATCH 05/16] =?UTF-8?q?chore=20:=20tailwind=20css=20=EC=84=B8?= =?UTF-8?q?=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- checkmo/package.json | 17 +-- checkmo/pnpm-lock.yaml | 216 +++++++++++++++++++++++++++++++++++++ checkmo/tailwind.config.js | 6 ++ 3 files changed, 232 insertions(+), 7 deletions(-) create mode 100644 checkmo/tailwind.config.js diff --git a/checkmo/package.json b/checkmo/package.json index c029d51..6711564 100644 --- a/checkmo/package.json +++ b/checkmo/package.json @@ -9,19 +9,22 @@ "lint": "eslint" }, "dependencies": { + "next": "16.0.1", "react": "19.2.0", - "react-dom": "19.2.0", - "next": "16.0.1" + "react-dom": "19.2.0" }, "devDependencies": { - "babel-plugin-react-compiler": "1.0.0", - "typescript": "^5", + "@tailwindcss/cli": "^4.1.17", + "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", - "@tailwindcss/postcss": "^4", - "tailwindcss": "^4", + "autoprefixer": "^10.4.21", + "babel-plugin-react-compiler": "1.0.0", "eslint": "^9", - "eslint-config-next": "16.0.1" + "eslint-config-next": "16.0.1", + "postcss": "^8.5.6", + "tailwindcss": "^4", + "typescript": "^5" } } diff --git a/checkmo/pnpm-lock.yaml b/checkmo/pnpm-lock.yaml index 1842f14..29b0c64 100644 --- a/checkmo/pnpm-lock.yaml +++ b/checkmo/pnpm-lock.yaml @@ -18,6 +18,9 @@ importers: specifier: 19.2.0 version: 19.2.0(react@19.2.0) devDependencies: + '@tailwindcss/cli': + specifier: ^4.1.17 + version: 4.1.17 '@tailwindcss/postcss': specifier: ^4 version: 4.1.17 @@ -30,6 +33,9 @@ importers: '@types/react-dom': specifier: ^19 version: 19.2.2(@types/react@19.2.2) + autoprefixer: + specifier: ^10.4.21 + version: 10.4.21(postcss@8.5.6) babel-plugin-react-compiler: specifier: 1.0.0 version: 1.0.0 @@ -39,6 +45,9 @@ importers: eslint-config-next: specifier: 16.0.1 version: 16.0.1(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + postcss: + specifier: ^8.5.6 + version: 8.5.6 tailwindcss: specifier: ^4 version: 4.1.17 @@ -408,12 +417,98 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} + '@parcel/watcher-android-arm64@2.5.1': + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.1': + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.1': + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.1': + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.1': + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.1': + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.1': + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.1': + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.1': + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.1': + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.1': + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + engines: {node: '>= 10.0.0'} + '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tailwindcss/cli@4.1.17': + resolution: {integrity: sha512-jUIxcyUNlCC2aNPnyPEWU/L2/ik3pB4fF3auKGXr8AvN3T3OFESVctFKOBoPZQaZJIeUpPn1uCLp0MRxuek8gg==} + hasBin: true + '@tailwindcss/node@4.1.17': resolution: {integrity: sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==} @@ -742,6 +837,13 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -868,6 +970,11 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -1098,6 +1205,9 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -1488,6 +1598,10 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1525,9 +1639,16 @@ packages: sass: optional: true + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -1606,6 +1727,9 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -2261,12 +2385,82 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} + '@parcel/watcher-android-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-x64@2.5.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.1': + optional: true + + '@parcel/watcher-win32-arm64@2.5.1': + optional: true + + '@parcel/watcher-win32-ia32@2.5.1': + optional: true + + '@parcel/watcher-win32-x64@2.5.1': + optional: true + + '@parcel/watcher@2.5.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.1 + '@parcel/watcher-darwin-arm64': 2.5.1 + '@parcel/watcher-darwin-x64': 2.5.1 + '@parcel/watcher-freebsd-x64': 2.5.1 + '@parcel/watcher-linux-arm-glibc': 2.5.1 + '@parcel/watcher-linux-arm-musl': 2.5.1 + '@parcel/watcher-linux-arm64-glibc': 2.5.1 + '@parcel/watcher-linux-arm64-musl': 2.5.1 + '@parcel/watcher-linux-x64-glibc': 2.5.1 + '@parcel/watcher-linux-x64-musl': 2.5.1 + '@parcel/watcher-win32-arm64': 2.5.1 + '@parcel/watcher-win32-ia32': 2.5.1 + '@parcel/watcher-win32-x64': 2.5.1 + '@rtsao/scc@1.1.0': {} '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 + '@tailwindcss/cli@4.1.17': + dependencies: + '@parcel/watcher': 2.5.1 + '@tailwindcss/node': 4.1.17 + '@tailwindcss/oxide': 4.1.17 + enhanced-resolve: 5.18.3 + mri: 1.2.0 + picocolors: 1.1.1 + tailwindcss: 4.1.17 + '@tailwindcss/node@4.1.17': dependencies: '@jridgewell/remapping': 2.3.5 @@ -2603,6 +2797,16 @@ snapshots: async-function@1.0.0: {} + autoprefixer@10.4.21(postcss@8.5.6): + dependencies: + browserslist: 4.27.0 + caniuse-lite: 1.0.30001754 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -2728,6 +2932,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + detect-libc@1.0.3: {} + detect-libc@2.1.2: {} doctrine@2.1.0: @@ -3111,6 +3317,8 @@ snapshots: dependencies: is-callable: 1.2.7 + fraction.js@4.3.7: {} + function-bind@1.1.2: {} function.prototype.name@1.1.8: @@ -3479,6 +3687,8 @@ snapshots: minimist@1.2.8: {} + mri@1.2.0: {} + ms@2.1.3: {} nanoid@3.3.11: {} @@ -3511,8 +3721,12 @@ snapshots: - '@babel/core' - babel-plugin-macros + node-addon-api@7.1.1: {} + node-releases@2.0.27: {} + normalize-range@0.1.2: {} + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -3596,6 +3810,8 @@ snapshots: possible-typed-array-names@1.1.0: {} + postcss-value-parser@4.2.0: {} + postcss@8.4.31: dependencies: nanoid: 3.3.11 diff --git a/checkmo/tailwind.config.js b/checkmo/tailwind.config.js new file mode 100644 index 0000000..b0ffb83 --- /dev/null +++ b/checkmo/tailwind.config.js @@ -0,0 +1,6 @@ +module.exports = { + content: ['./src/**/*.{js,ts,jsx,tsx}', './app/**/*.{js,ts,jsx,tsx}'], + theme: { extend: {} }, + plugins: [], + }; + \ No newline at end of file From b79bd245b7da3a66ad8508651faf640ce8ae83f5 Mon Sep 17 00:00:00 2001 From: psm1st Date: Mon, 10 Nov 2025 04:24:28 +0900 Subject: [PATCH 06/16] =?UTF-8?q?chore:=20=ED=8F=B4=EB=8D=94=20=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=20=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- checkmo/src/app/(main)/.keep | 0 checkmo/src/app/(public)/.keep | 0 checkmo/src/components/common/.keep | 0 checkmo/src/data/.keep | 0 checkmo/src/hooks/.keep | 0 checkmo/src/lib/.keep | 0 checkmo/src/services/.keep | 0 checkmo/src/services/mappers/.keep | 0 checkmo/src/types/.keep | 0 checkmo/src/utills/.keep | 0 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 checkmo/src/app/(main)/.keep create mode 100644 checkmo/src/app/(public)/.keep create mode 100644 checkmo/src/components/common/.keep create mode 100644 checkmo/src/data/.keep create mode 100644 checkmo/src/hooks/.keep create mode 100644 checkmo/src/lib/.keep create mode 100644 checkmo/src/services/.keep create mode 100644 checkmo/src/services/mappers/.keep create mode 100644 checkmo/src/types/.keep create mode 100644 checkmo/src/utills/.keep diff --git a/checkmo/src/app/(main)/.keep b/checkmo/src/app/(main)/.keep new file mode 100644 index 0000000..e69de29 diff --git a/checkmo/src/app/(public)/.keep b/checkmo/src/app/(public)/.keep new file mode 100644 index 0000000..e69de29 diff --git a/checkmo/src/components/common/.keep b/checkmo/src/components/common/.keep new file mode 100644 index 0000000..e69de29 diff --git a/checkmo/src/data/.keep b/checkmo/src/data/.keep new file mode 100644 index 0000000..e69de29 diff --git a/checkmo/src/hooks/.keep b/checkmo/src/hooks/.keep new file mode 100644 index 0000000..e69de29 diff --git a/checkmo/src/lib/.keep b/checkmo/src/lib/.keep new file mode 100644 index 0000000..e69de29 diff --git a/checkmo/src/services/.keep b/checkmo/src/services/.keep new file mode 100644 index 0000000..e69de29 diff --git a/checkmo/src/services/mappers/.keep b/checkmo/src/services/mappers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/checkmo/src/types/.keep b/checkmo/src/types/.keep new file mode 100644 index 0000000..e69de29 diff --git a/checkmo/src/utills/.keep b/checkmo/src/utills/.keep new file mode 100644 index 0000000..e69de29 From ff9a9cb21dba19d7f8d3861a005ff90998c8de77 Mon Sep 17 00:00:00 2001 From: psm1st Date: Mon, 10 Nov 2025 05:07:10 +0900 Subject: [PATCH 07/16] =?UTF-8?q?chore=20:=20=EB=B0=B0=ED=8F=AC=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- checkmo/.github/workflows/deploy.yml | 32 ++++++++++++++++++++ checkmo/.github/workflows/preview.yml | 43 +++++++++++++++++++++++++++ checkmo/build.sh | 5 ++++ 3 files changed, 80 insertions(+) create mode 100644 checkmo/.github/workflows/deploy.yml create mode 100644 checkmo/.github/workflows/preview.yml create mode 100644 checkmo/build.sh diff --git a/checkmo/.github/workflows/deploy.yml b/checkmo/.github/workflows/deploy.yml new file mode 100644 index 0000000..d23fc98 --- /dev/null +++ b/checkmo/.github/workflows/deploy.yml @@ -0,0 +1,32 @@ +name: Deploy + +on: + push: + branches: ['main'] + +jobs: + build: + runs-on: ubuntu-latest + + container: pandoc/latex + + steps: + - uses: actions/checkout@v2 + - name: Install mustache (to update the date) + run: apk add ruby && gem install mustache + - name: creates output + run: sh ./build.sh + - name: Pushes to another repository + id: push_directory + uses: cpina/github-action-push-to-another-repository@main + env: + API_TOKEN_GITHUB: ${{ secrets.AUTO_ACTIONS }} + with: + source-directory: 'output' + destination-github-username: psm1st + destination-repository-name: FE + user-email: ${{ secrets.EMAIL }} + commit-message: ${{ github.event.commits[0].message }} + target-branch: main + - name: Test get variable exported by push-to-another-repository + run: echo $DESTINATION_CLONED_DIRECTORY \ No newline at end of file diff --git a/checkmo/.github/workflows/preview.yml b/checkmo/.github/workflows/preview.yml new file mode 100644 index 0000000..1c979bf --- /dev/null +++ b/checkmo/.github/workflows/preview.yml @@ -0,0 +1,43 @@ +name: Preview + +on: + pull_request: + branches: ['main'] + +jobs: + vercel-preview: + runs-on: ubuntu-latest + + env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + + steps: + - uses: actions/checkout@v4 + - name: Install Vercel CLI + run: npm install --global vercel@latest && npm install --global pnpm + - name: Get Vercel Environment Variables + run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} + - name: Build Project Artifacts + run: vercel build --token=${{ secrets.VERCEL_TOKEN }} + - name: Deploy Project Artifacts to Vercel + id: deploy + + run: | + + vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }} > vercel-output.txt + echo "preview_url=$(cat vercel-output.txt)" >> $GITHUB_OUTPUT + + - name: Comment PR with Preview URL + uses: thollander/actions-comment-pull-request@v2 + with: + message: | + โ PREVIEW ${{ steps.deploy.outputs.preview_url }} + +permissions: + contents: read + pages: write + deployments: write + id-token: write + issues: write + pull-requests: write \ No newline at end of file diff --git a/checkmo/build.sh b/checkmo/build.sh new file mode 100644 index 0000000..56907aa --- /dev/null +++ b/checkmo/build.sh @@ -0,0 +1,5 @@ +#!/bin/sh +cd ../ +mkdir output +cp -R ./FE/* ./output +cp -R ./output ./FE/ \ No newline at end of file From eee4df0ce6bb180b18b352ce4449c204a690d5d6 Mon Sep 17 00:00:00 2001 From: psm1st Date: Mon, 10 Nov 2025 05:11:19 +0900 Subject: [PATCH 08/16] =?UTF-8?q?fix:=20=ED=8F=B4=EB=8D=94=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99=EC=8B=9C=ED=82=A4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 90 ----------------------------------------- checkmo/README.md | 100 +++++++++++++++++++++++++++++++++++----------- 2 files changed, 77 insertions(+), 113 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 224596e..0000000 --- a/README.md +++ /dev/null @@ -1,90 +0,0 @@ -## ๐จ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์ปจ๋ฒค์ - ---- - -### ๐ณ ๊น ๋ธ๋์น ์ ๋ต - -- **main ๋ธ๋์น** - ๐ ์๋น์ค ๋ฐฐํฌ์ฉ ๋ธ๋์น - ๐ ํ์ฅ๋ง ์ง์ ๊ด๋ฆฌํ๊ณ ๋จธ์ง ๊ฐ๋ฅ -- **develop ๋ธ๋์น** - ๐ ๏ธ ๊ฐ๋ฐ ๊ธฐ๋ฅ ํตํฉ ๋ธ๋์น - ์๋ก์ด ๊ธฐ๋ฅ์ ํญ์ ์ด ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ธ๋์น ์์ฑ - -### ๐ ๋ธ๋์น ๋ช ๋ช ๊ท์น - -| ์ ํ | ํ์ | ์ค๋ช | ์์ | -| ------------------------ | --------------------- | ----------------------------------------------------- | ------------- | -| โจ ๊ธฐ๋ฅ ์ถ๊ฐ | `feat-[์ด์๋ฒํธ]` | ์๋ก์ด UI/๊ธฐ๋ฅ ๊ฐ๋ฐ | `feat-100` | -| โป๏ธ ๋ฆฌํฉํ ๋ง | `refactor-[์ด์๋ฒํธ]` | ์ฝ๋ ๊ตฌ์กฐ ๊ฐ์ | `refactor-28` | -| ๐ ๋ฒ๊ทธ ์์ | `bug-[์ด์๋ฒํธ]` | UI/UX ๋ฒ๊ทธ ์์ | `bug-23` | -| ๐จ ์ฝ๋ ํฌ๋งทํ , CSS ์์ | `style-[์ด์๋ฒํธ]` | ์ฝ๋ ํฌ๋งทํ , CSS ์์ ๋ฑ ๊ธฐ๋ฅ์ ์ํฅ ์๋ ์คํ์ผ ๋ณ๊ฒฝ | `style-123` | -| ๐จ ์ก๋ฌด์ฑ ์์ | `chore-[์ด์๋ฒํธ]` | ์ฃผ์, ์ฝ์ ์ ๊ฑฐ, ์์กด์ฑ ๊ด๋ฆฌ | `chore-102` | -| ๐ ๋ฌธ์ ์์ | `docs-[์ด์๋ฒํธ]` | ๋ฌธ์ ์์ (README ๋ฑ) | `docs-23` | -| ๐ ๋น๋ ์ค์ | `build-[์ด์๋ฒํธ]` | ๋น๋ ์ค์ , ์์กด์ฑ ํจํค์ง | `build-12` | -| โ ํ ์คํธ ์ฝ๋ ์ถ๊ฐ/์์ | `test-[์ด์๋ฒํธ]` | ํ ์คํธ ์ฝ๋ ์ถ๊ฐ / ์์ | `test-12` | - ---- - -### ๐ ์ปค๋ฐ/PR ์ปจ๋ฒค์ - -| ํ์ | ์ค๋ช | ์์ | -| ------------- | ------------------------------------------ | ------------------------------------- | -| โจ `feat` | ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ | `feat: ๊ฒ์ ๊ธฐ๋ฅ ์ถ๊ฐ` | -| โป๏ธ `refactor` | ๋ฆฌํฉํ ๋ง | `refactor: header ์ปดํฌ๋ํธ ๊ตฌ์กฐ ๊ฐ์ ` | -| ๐ `bug` | ๋ฒ๊ทธ ์์ | `bug: ๋ชจ๋ฐ์ผ ๋ฉ๋ด ํ ๊ธ ์ค๋ฅ ์์ ` | -| ๐จ `style` | ์คํ์ผ, ํฌ๋งท, ์ธ๋ฏธ์ฝ๋ก ๋ฑ ์ฝ๋ ๋น๋์ ๋ณ๊ฒฝ | `style: ์ฝ๋ ์ ๋ ฌ ๋ฐ ๋ค์ฌ์ฐ๊ธฐ ์์ ` | -| ๐ `docs` | ๋ฌธ์ ์์ | `docs: README ๋ฐฐํฌ ๋ฐฉ๋ฒ ์ถ๊ฐ` | -| โ `test` | ํ ์คํธ ์ฝ๋ ์ถ๊ฐ/์์ | `test: ๋ก๊ทธ์ธ ํ ์คํธ ์ผ์ด์ค ์ถ๊ฐ` | -| ๐ฆ `build` | ๋น๋ ์์คํ , ์์กด์ฑ ์ค์ | `build: Vite ์ค์ ํ์ผ ์์ ` | -| ๐ `ci` | CI ์ค์ ๋ณ๊ฒฝ | `ci: GitHub Actions ์์ ` | -| ๐จ `chore` | ๊ทธ ์ธ ์ก๋ฌด (์: ์ฝ์ ์ ๊ฑฐ) | `chore: ๋ถํ์ํ ์ฃผ์ ์ ๊ฑฐ` | - ---- - -### ๐ค PR (Pull Request) ์ ๋ต - -- **main ๋ธ๋์น PR**: - ๐ ํ์ฅ ์น์ธ โ ๋จธ์ง ๊ฐ๋ฅ -- **๊ทธ ์ธ ๋ธ๋์น PR**: - ๐ฅ ์ต์ 1๋ช ์ด์ ๋ฆฌ๋ทฐ์ด ์น์ธ โ ๋จธ์ง - ---- - -### ๐ป ์ฝ๋ ์ปจ๋ฒค์ (JavaScript / React ๊ธฐ์ค) - -| ํญ๋ชฉ | ๊ท์น | ์์ | -| ------------------- | -------------------- | ------------------------------ | -| **์ปดํฌ๋ํธ๋ช ** | `PascalCase` | `UserCard`, `MainLayout` | -| **๋ณ์/ํจ์๋ช ** | `camelCase` | `handleClick`, `userName` | -| **์์** | `UPPER_SNAKE_CASE` | `DEFAULT_LIMIT`, `API_URL` | -| **ํ์ผ๋ช ** | `PascalCase` | `ProfilePage.tsx` | -| **์คํ์ผ ํด๋์ค๋ช ** | `camelCase` or `BEM` | `buttonPrimary`, `card__title` | -| **CSS ํ์ผ** | - ์์ ํ์ | | - ---- - -### โ๏ธ React ์ปดํฌ๋ํธ ๊ท์น - -- **props ๊ตฌ์กฐ ๋ถํด** - โ `const Button = ({ text, onClick }) => {}` -- **์กฐ๊ฑด๋ถ ๋ ๋๋ง** - โ `isLoading && ` -- **์ปค์คํ ํ ** - โ `use` ์ ๋์ฌ ํ์: `useFetch`, `useToggle` -- **useEffect** - โ ์์กด์ฑ ๋ฐฐ์ด ๋ช ์: `useEffect(() => { ... }, [value])` - ---- - -### ๐งน ์คํ์ผ๋ง (CSS/SCSS) - -- **๋ฐฉ์**: CSS Module, TailwindCSS, styled-components ์ค ํ๋ ์ฌ์ฉ -- **๊ณตํต ๋ณ์**: `:root`, `variables.css`๋ก ์์, ์ฌ๋ฐฑ ๋ฑ ๊ด๋ฆฌ -- **ํด๋์ค๋ช **: ์ญํ ๊ธฐ๋ฐ ๋ช ๋ช (`searchInput`, `formWrapper` ๋ฑ) - ---- - -### ๐งฐ Lint & Formatter - -- Prettier ์ฌ์ฉ diff --git a/checkmo/README.md b/checkmo/README.md index e215bc4..224596e 100644 --- a/checkmo/README.md +++ b/checkmo/README.md @@ -1,36 +1,90 @@ -This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). +## ๐จ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์ปจ๋ฒค์ -## Getting Started +--- -First, run the development server: +### ๐ณ ๊น ๋ธ๋์น ์ ๋ต -```bash -npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev -``` +- **main ๋ธ๋์น** + ๐ ์๋น์ค ๋ฐฐํฌ์ฉ ๋ธ๋์น + ๐ ํ์ฅ๋ง ์ง์ ๊ด๋ฆฌํ๊ณ ๋จธ์ง ๊ฐ๋ฅ +- **develop ๋ธ๋์น** + ๐ ๏ธ ๊ฐ๋ฐ ๊ธฐ๋ฅ ํตํฉ ๋ธ๋์น + ์๋ก์ด ๊ธฐ๋ฅ์ ํญ์ ์ด ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ธ๋์น ์์ฑ -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +### ๐ ๋ธ๋์น ๋ช ๋ช ๊ท์น -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. +| ์ ํ | ํ์ | ์ค๋ช | ์์ | +| ------------------------ | --------------------- | ----------------------------------------------------- | ------------- | +| โจ ๊ธฐ๋ฅ ์ถ๊ฐ | `feat-[์ด์๋ฒํธ]` | ์๋ก์ด UI/๊ธฐ๋ฅ ๊ฐ๋ฐ | `feat-100` | +| โป๏ธ ๋ฆฌํฉํ ๋ง | `refactor-[์ด์๋ฒํธ]` | ์ฝ๋ ๊ตฌ์กฐ ๊ฐ์ | `refactor-28` | +| ๐ ๋ฒ๊ทธ ์์ | `bug-[์ด์๋ฒํธ]` | UI/UX ๋ฒ๊ทธ ์์ | `bug-23` | +| ๐จ ์ฝ๋ ํฌ๋งทํ , CSS ์์ | `style-[์ด์๋ฒํธ]` | ์ฝ๋ ํฌ๋งทํ , CSS ์์ ๋ฑ ๊ธฐ๋ฅ์ ์ํฅ ์๋ ์คํ์ผ ๋ณ๊ฒฝ | `style-123` | +| ๐จ ์ก๋ฌด์ฑ ์์ | `chore-[์ด์๋ฒํธ]` | ์ฃผ์, ์ฝ์ ์ ๊ฑฐ, ์์กด์ฑ ๊ด๋ฆฌ | `chore-102` | +| ๐ ๋ฌธ์ ์์ | `docs-[์ด์๋ฒํธ]` | ๋ฌธ์ ์์ (README ๋ฑ) | `docs-23` | +| ๐ ๋น๋ ์ค์ | `build-[์ด์๋ฒํธ]` | ๋น๋ ์ค์ , ์์กด์ฑ ํจํค์ง | `build-12` | +| โ ํ ์คํธ ์ฝ๋ ์ถ๊ฐ/์์ | `test-[์ด์๋ฒํธ]` | ํ ์คํธ ์ฝ๋ ์ถ๊ฐ / ์์ | `test-12` | -This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. +--- -## Learn More +### ๐ ์ปค๋ฐ/PR ์ปจ๋ฒค์ -To learn more about Next.js, take a look at the following resources: +| ํ์ | ์ค๋ช | ์์ | +| ------------- | ------------------------------------------ | ------------------------------------- | +| โจ `feat` | ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ | `feat: ๊ฒ์ ๊ธฐ๋ฅ ์ถ๊ฐ` | +| โป๏ธ `refactor` | ๋ฆฌํฉํ ๋ง | `refactor: header ์ปดํฌ๋ํธ ๊ตฌ์กฐ ๊ฐ์ ` | +| ๐ `bug` | ๋ฒ๊ทธ ์์ | `bug: ๋ชจ๋ฐ์ผ ๋ฉ๋ด ํ ๊ธ ์ค๋ฅ ์์ ` | +| ๐จ `style` | ์คํ์ผ, ํฌ๋งท, ์ธ๋ฏธ์ฝ๋ก ๋ฑ ์ฝ๋ ๋น๋์ ๋ณ๊ฒฝ | `style: ์ฝ๋ ์ ๋ ฌ ๋ฐ ๋ค์ฌ์ฐ๊ธฐ ์์ ` | +| ๐ `docs` | ๋ฌธ์ ์์ | `docs: README ๋ฐฐํฌ ๋ฐฉ๋ฒ ์ถ๊ฐ` | +| โ `test` | ํ ์คํธ ์ฝ๋ ์ถ๊ฐ/์์ | `test: ๋ก๊ทธ์ธ ํ ์คํธ ์ผ์ด์ค ์ถ๊ฐ` | +| ๐ฆ `build` | ๋น๋ ์์คํ , ์์กด์ฑ ์ค์ | `build: Vite ์ค์ ํ์ผ ์์ ` | +| ๐ `ci` | CI ์ค์ ๋ณ๊ฒฝ | `ci: GitHub Actions ์์ ` | +| ๐จ `chore` | ๊ทธ ์ธ ์ก๋ฌด (์: ์ฝ์ ์ ๊ฑฐ) | `chore: ๋ถํ์ํ ์ฃผ์ ์ ๊ฑฐ` | -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. +--- -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! +### ๐ค PR (Pull Request) ์ ๋ต -## Deploy on Vercel +- **main ๋ธ๋์น PR**: + ๐ ํ์ฅ ์น์ธ โ ๋จธ์ง ๊ฐ๋ฅ +- **๊ทธ ์ธ ๋ธ๋์น PR**: + ๐ฅ ์ต์ 1๋ช ์ด์ ๋ฆฌ๋ทฐ์ด ์น์ธ โ ๋จธ์ง -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +--- -Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. +### ๐ป ์ฝ๋ ์ปจ๋ฒค์ (JavaScript / React ๊ธฐ์ค) + +| ํญ๋ชฉ | ๊ท์น | ์์ | +| ------------------- | -------------------- | ------------------------------ | +| **์ปดํฌ๋ํธ๋ช ** | `PascalCase` | `UserCard`, `MainLayout` | +| **๋ณ์/ํจ์๋ช ** | `camelCase` | `handleClick`, `userName` | +| **์์** | `UPPER_SNAKE_CASE` | `DEFAULT_LIMIT`, `API_URL` | +| **ํ์ผ๋ช ** | `PascalCase` | `ProfilePage.tsx` | +| **์คํ์ผ ํด๋์ค๋ช ** | `camelCase` or `BEM` | `buttonPrimary`, `card__title` | +| **CSS ํ์ผ** | - ์์ ํ์ | | + +--- + +### โ๏ธ React ์ปดํฌ๋ํธ ๊ท์น + +- **props ๊ตฌ์กฐ ๋ถํด** + โ `const Button = ({ text, onClick }) => {}` +- **์กฐ๊ฑด๋ถ ๋ ๋๋ง** + โ `isLoading && ` +- **์ปค์คํ ํ ** + โ `use` ์ ๋์ฌ ํ์: `useFetch`, `useToggle` +- **useEffect** + โ ์์กด์ฑ ๋ฐฐ์ด ๋ช ์: `useEffect(() => { ... }, [value])` + +--- + +### ๐งน ์คํ์ผ๋ง (CSS/SCSS) + +- **๋ฐฉ์**: CSS Module, TailwindCSS, styled-components ์ค ํ๋ ์ฌ์ฉ +- **๊ณตํต ๋ณ์**: `:root`, `variables.css`๋ก ์์, ์ฌ๋ฐฑ ๋ฑ ๊ด๋ฆฌ +- **ํด๋์ค๋ช **: ์ญํ ๊ธฐ๋ฐ ๋ช ๋ช (`searchInput`, `formWrapper` ๋ฑ) + +--- + +### ๐งฐ Lint & Formatter + +- Prettier ์ฌ์ฉ From cb4e4b17558e6a8333eefed84954a929461be60b Mon Sep 17 00:00:00 2001 From: psm1st Date: Mon, 10 Nov 2025 05:14:24 +0900 Subject: [PATCH 09/16] =?UTF-8?q?fix:=20=ED=8F=B4=EB=8D=94=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.github => .github}/ISSUE_TEMPLATE/custom.md | 0 .../.github => .github}/PULL_REQUEST_TEMPLATE.md | 0 {checkmo/.github => .github}/workflows/deploy.yml | 0 {checkmo/.github => .github}/workflows/preview.yml | 0 checkmo/.gitignore => .gitignore | 0 checkmo/README.md => README.md | 0 checkmo/build.sh => build.sh | 0 checkmo/eslint.config.mjs => eslint.config.mjs | 0 checkmo/next.config.ts => next.config.ts | 0 checkmo/package.json => package.json | 0 checkmo/pnpm-lock.yaml => pnpm-lock.yaml | 0 checkmo/postcss.config.mjs => postcss.config.mjs | 0 {checkmo/public => public}/file.svg | 0 {checkmo/public => public}/globe.svg | 0 {checkmo/public => public}/next.svg | 0 {checkmo/public => public}/vercel.svg | 0 {checkmo/public => public}/window.svg | 0 {checkmo/src => src}/app/(main)/.keep | 0 {checkmo/src => src}/app/(public)/.keep | 0 {checkmo/src => src}/app/favicon.ico | Bin {checkmo/src => src}/app/globals.css | 0 {checkmo/src => src}/app/layout.tsx | 0 {checkmo/src => src}/app/page.tsx | 0 {checkmo/src => src}/components/common/.keep | 0 {checkmo/src => src}/data/.keep | 0 {checkmo/src => src}/hooks/.keep | 0 {checkmo/src => src}/lib/.keep | 0 {checkmo/src => src}/services/.keep | 0 {checkmo/src => src}/services/mappers/.keep | 0 {checkmo/src => src}/types/.keep | 0 {checkmo/src => src}/utills/.keep | 0 checkmo/tailwind.config.js => tailwind.config.js | 0 checkmo/tsconfig.json => tsconfig.json | 4 ++-- 33 files changed, 2 insertions(+), 2 deletions(-) rename {checkmo/.github => .github}/ISSUE_TEMPLATE/custom.md (100%) rename {checkmo/.github => .github}/PULL_REQUEST_TEMPLATE.md (100%) rename {checkmo/.github => .github}/workflows/deploy.yml (100%) rename {checkmo/.github => .github}/workflows/preview.yml (100%) rename checkmo/.gitignore => .gitignore (100%) rename checkmo/README.md => README.md (100%) rename checkmo/build.sh => build.sh (100%) rename checkmo/eslint.config.mjs => eslint.config.mjs (100%) rename checkmo/next.config.ts => next.config.ts (100%) rename checkmo/package.json => package.json (100%) rename checkmo/pnpm-lock.yaml => pnpm-lock.yaml (100%) rename checkmo/postcss.config.mjs => postcss.config.mjs (100%) rename {checkmo/public => public}/file.svg (100%) rename {checkmo/public => public}/globe.svg (100%) rename {checkmo/public => public}/next.svg (100%) rename {checkmo/public => public}/vercel.svg (100%) rename {checkmo/public => public}/window.svg (100%) rename {checkmo/src => src}/app/(main)/.keep (100%) rename {checkmo/src => src}/app/(public)/.keep (100%) rename {checkmo/src => src}/app/favicon.ico (100%) rename {checkmo/src => src}/app/globals.css (100%) rename {checkmo/src => src}/app/layout.tsx (100%) rename {checkmo/src => src}/app/page.tsx (100%) rename {checkmo/src => src}/components/common/.keep (100%) rename {checkmo/src => src}/data/.keep (100%) rename {checkmo/src => src}/hooks/.keep (100%) rename {checkmo/src => src}/lib/.keep (100%) rename {checkmo/src => src}/services/.keep (100%) rename {checkmo/src => src}/services/mappers/.keep (100%) rename {checkmo/src => src}/types/.keep (100%) rename {checkmo/src => src}/utills/.keep (100%) rename checkmo/tailwind.config.js => tailwind.config.js (100%) rename checkmo/tsconfig.json => tsconfig.json (89%) diff --git a/checkmo/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md similarity index 100% rename from checkmo/.github/ISSUE_TEMPLATE/custom.md rename to .github/ISSUE_TEMPLATE/custom.md diff --git a/checkmo/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from checkmo/.github/PULL_REQUEST_TEMPLATE.md rename to .github/PULL_REQUEST_TEMPLATE.md diff --git a/checkmo/.github/workflows/deploy.yml b/.github/workflows/deploy.yml similarity index 100% rename from checkmo/.github/workflows/deploy.yml rename to .github/workflows/deploy.yml diff --git a/checkmo/.github/workflows/preview.yml b/.github/workflows/preview.yml similarity index 100% rename from checkmo/.github/workflows/preview.yml rename to .github/workflows/preview.yml diff --git a/checkmo/.gitignore b/.gitignore similarity index 100% rename from checkmo/.gitignore rename to .gitignore diff --git a/checkmo/README.md b/README.md similarity index 100% rename from checkmo/README.md rename to README.md diff --git a/checkmo/build.sh b/build.sh similarity index 100% rename from checkmo/build.sh rename to build.sh diff --git a/checkmo/eslint.config.mjs b/eslint.config.mjs similarity index 100% rename from checkmo/eslint.config.mjs rename to eslint.config.mjs diff --git a/checkmo/next.config.ts b/next.config.ts similarity index 100% rename from checkmo/next.config.ts rename to next.config.ts diff --git a/checkmo/package.json b/package.json similarity index 100% rename from checkmo/package.json rename to package.json diff --git a/checkmo/pnpm-lock.yaml b/pnpm-lock.yaml similarity index 100% rename from checkmo/pnpm-lock.yaml rename to pnpm-lock.yaml diff --git a/checkmo/postcss.config.mjs b/postcss.config.mjs similarity index 100% rename from checkmo/postcss.config.mjs rename to postcss.config.mjs diff --git a/checkmo/public/file.svg b/public/file.svg similarity index 100% rename from checkmo/public/file.svg rename to public/file.svg diff --git a/checkmo/public/globe.svg b/public/globe.svg similarity index 100% rename from checkmo/public/globe.svg rename to public/globe.svg diff --git a/checkmo/public/next.svg b/public/next.svg similarity index 100% rename from checkmo/public/next.svg rename to public/next.svg diff --git a/checkmo/public/vercel.svg b/public/vercel.svg similarity index 100% rename from checkmo/public/vercel.svg rename to public/vercel.svg diff --git a/checkmo/public/window.svg b/public/window.svg similarity index 100% rename from checkmo/public/window.svg rename to public/window.svg diff --git a/checkmo/src/app/(main)/.keep b/src/app/(main)/.keep similarity index 100% rename from checkmo/src/app/(main)/.keep rename to src/app/(main)/.keep diff --git a/checkmo/src/app/(public)/.keep b/src/app/(public)/.keep similarity index 100% rename from checkmo/src/app/(public)/.keep rename to src/app/(public)/.keep diff --git a/checkmo/src/app/favicon.ico b/src/app/favicon.ico similarity index 100% rename from checkmo/src/app/favicon.ico rename to src/app/favicon.ico diff --git a/checkmo/src/app/globals.css b/src/app/globals.css similarity index 100% rename from checkmo/src/app/globals.css rename to src/app/globals.css diff --git a/checkmo/src/app/layout.tsx b/src/app/layout.tsx similarity index 100% rename from checkmo/src/app/layout.tsx rename to src/app/layout.tsx diff --git a/checkmo/src/app/page.tsx b/src/app/page.tsx similarity index 100% rename from checkmo/src/app/page.tsx rename to src/app/page.tsx diff --git a/checkmo/src/components/common/.keep b/src/components/common/.keep similarity index 100% rename from checkmo/src/components/common/.keep rename to src/components/common/.keep diff --git a/checkmo/src/data/.keep b/src/data/.keep similarity index 100% rename from checkmo/src/data/.keep rename to src/data/.keep diff --git a/checkmo/src/hooks/.keep b/src/hooks/.keep similarity index 100% rename from checkmo/src/hooks/.keep rename to src/hooks/.keep diff --git a/checkmo/src/lib/.keep b/src/lib/.keep similarity index 100% rename from checkmo/src/lib/.keep rename to src/lib/.keep diff --git a/checkmo/src/services/.keep b/src/services/.keep similarity index 100% rename from checkmo/src/services/.keep rename to src/services/.keep diff --git a/checkmo/src/services/mappers/.keep b/src/services/mappers/.keep similarity index 100% rename from checkmo/src/services/mappers/.keep rename to src/services/mappers/.keep diff --git a/checkmo/src/types/.keep b/src/types/.keep similarity index 100% rename from checkmo/src/types/.keep rename to src/types/.keep diff --git a/checkmo/src/utills/.keep b/src/utills/.keep similarity index 100% rename from checkmo/src/utills/.keep rename to src/utills/.keep diff --git a/checkmo/tailwind.config.js b/tailwind.config.js similarity index 100% rename from checkmo/tailwind.config.js rename to tailwind.config.js diff --git a/checkmo/tsconfig.json b/tsconfig.json similarity index 89% rename from checkmo/tsconfig.json rename to tsconfig.json index cf9c65d..541bd6a 100644 --- a/checkmo/tsconfig.json +++ b/tsconfig.json @@ -26,8 +26,8 @@ "next-env.d.ts", "**/*.ts", "**/*.tsx", - ".next/types/**/*.ts", - ".next/dev/types/**/*.ts", + "checkmo/.next/types/**/*.ts", + "checkmo/.next/dev/types/**/*.ts", "**/*.mts" ], "exclude": ["node_modules"] From 781fc703cef455a667d72054110867d34e67dc6f Mon Sep 17 00:00:00 2001 From: psm1st Date: Mon, 10 Nov 2025 05:18:42 +0900 Subject: [PATCH 10/16] =?UTF-8?q?fix:=20=EB=A0=88=ED=8F=AC=EC=A7=80?= =?UTF-8?q?=ED=86=A0=EB=A6=AC=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d23fc98..5a4761c 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -24,7 +24,7 @@ jobs: with: source-directory: 'output' destination-github-username: psm1st - destination-repository-name: FE + destination-repository-name: checkmoFE user-email: ${{ secrets.EMAIL }} commit-message: ${{ github.event.commits[0].message }} target-branch: main From 934d6bf9ffc2b2e1e44deb285cd2b9153516de77 Mon Sep 17 00:00:00 2001 From: jjamming Date: Thu, 13 Nov 2025 12:32:26 +0900 Subject: [PATCH 11/16] =?UTF-8?q?chore:=20=EC=9D=B4=EC=8A=88=20=EB=8B=AB?= =?UTF-8?q?=EA=B8=B0=20=EC=9B=8C=ED=81=AC=ED=94=8C=EB=A1=9C=EC=9A=B0=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/auto-close-issues.yml | 37 +++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/auto-close-issues.yml diff --git a/.github/workflows/auto-close-issues.yml b/.github/workflows/auto-close-issues.yml new file mode 100644 index 0000000..8f5a2c7 --- /dev/null +++ b/.github/workflows/auto-close-issues.yml @@ -0,0 +1,37 @@ +name: Auto-close linked issues on PR merge + +on: + pull_request: + types: + - closed + +jobs: + close-linked-issues: + if: > + github.event.pull_request.merged == true && + ( + github.event.pull_request.base.ref == 'dev' || + github.event.pull_request.base.ref == 'main' + ) + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: read + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Close linked issues via gh CLI + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_BODY: ${{ github.event.pull_request.body }} + shell: bash + run: | + echo "๐ PR ๋ด์ฉ์์ ์ด์ ๋ซ๋ ํค์๋๋ฅผ ์ฐพ๋ ์ค..." + printf '%s' "$PR_BODY" | tr -d '\r' | grep -Eoi '(close[sd]?|fix(e[sd])?|resolve[sd]?) #[0-9]+' | while read -r match; do + issue_number=$(echo "$match" | grep -oE '#[0-9]+' | tr -d '#') + echo "โก๏ธ ๋ซ๋ ์ค: #$issue_number" + gh issue close "$issue_number" --reason completed --repo "$GITHUB_REPOSITORY" + done + From d1253619bdac58befe4d91cd91cf5b1a5ae4ad25 Mon Sep 17 00:00:00 2001 From: jjamming Date: Thu, 13 Nov 2025 12:39:13 +0900 Subject: [PATCH 12/16] =?UTF-8?q?chore:=20=EB=B8=8C=EB=9E=9C=EC=B9=98=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20=ED=8C=8C=EC=9D=BC=20=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...uto-close-issues.yml => pr-merge-cleanup.yml} | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) rename .github/workflows/{auto-close-issues.yml => pr-merge-cleanup.yml} (65%) diff --git a/.github/workflows/auto-close-issues.yml b/.github/workflows/pr-merge-cleanup.yml similarity index 65% rename from .github/workflows/auto-close-issues.yml rename to .github/workflows/pr-merge-cleanup.yml index 8f5a2c7..c7cea89 100644 --- a/.github/workflows/auto-close-issues.yml +++ b/.github/workflows/pr-merge-cleanup.yml @@ -1,4 +1,4 @@ -name: Auto-close linked issues on PR merge +name: PR Merge Cleanup on: pull_request: @@ -6,7 +6,7 @@ on: - closed jobs: - close-linked-issues: + cleanup-after-merge: if: > github.event.pull_request.merged == true && ( @@ -16,7 +16,8 @@ jobs: runs-on: ubuntu-latest permissions: issues: write - pull-requests: read + pull-requests: write + contents: write steps: - name: Checkout @@ -35,3 +36,12 @@ jobs: gh issue close "$issue_number" --reason completed --repo "$GITHUB_REPOSITORY" done + - name: Delete source branch + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH_NAME: ${{ github.event.pull_request.head.ref }} + shell: bash + run: | + echo "๐๏ธ ์์ค ๋ธ๋์น ์ญ์ ์ค: $BRANCH_NAME" + gh api repos/${{ github.repository }}/git/refs/heads/$BRANCH_NAME -X DELETE || echo "โ ๏ธ ๋ธ๋์น ์ญ์ ์คํจ ๋๋ ์ด๋ฏธ ์ญ์ ๋จ: $BRANCH_NAME" + From ef6a79bde948fec676991e42ebb15821af4120fa Mon Sep 17 00:00:00 2001 From: jjamming Date: Thu, 13 Nov 2025 12:51:42 +0900 Subject: [PATCH 13/16] =?UTF-8?q?chore:=20=EC=98=88=EC=99=B8=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=EC=97=90=EB=9F=AC=20=EC=B2=98=EB=A6=AC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pr-merge-cleanup.yml | 32 +++++++++++++++++++++----- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pr-merge-cleanup.yml b/.github/workflows/pr-merge-cleanup.yml index c7cea89..9fb7e44 100644 --- a/.github/workflows/pr-merge-cleanup.yml +++ b/.github/workflows/pr-merge-cleanup.yml @@ -30,11 +30,32 @@ jobs: shell: bash run: | echo "๐ PR ๋ด์ฉ์์ ์ด์ ๋ซ๋ ํค์๋๋ฅผ ์ฐพ๋ ์ค..." - printf '%s' "$PR_BODY" | tr -d '\r' | grep -Eoi '(close[sd]?|fix(e[sd])?|resolve[sd]?) #[0-9]+' | while read -r match; do - issue_number=$(echo "$match" | grep -oE '#[0-9]+' | tr -d '#') - echo "โก๏ธ ๋ซ๋ ์ค: #$issue_number" - gh issue close "$issue_number" --reason completed --repo "$GITHUB_REPOSITORY" - done + issue_count=0 + failed_count=0 + + # ์ด์ ๋ฒํธ ์ถ์ถ ๋ฐ ์ค๋ณต ์ ๊ฑฐ + issue_numbers=$(printf '%s' "$PR_BODY" | tr -d '\r' | grep -Eoi '(close[sd]?|fix(e[sd])?|resolve[sd]?) #[0-9]+' | grep -oE '#[0-9]+' | tr -d '#' | sort -u) + + if [ -z "$issue_numbers" ]; then + echo "โน๏ธ PR ๋ณธ๋ฌธ์์ ๋ซ์ ์ด์๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค." + exit 0 + fi + + # ๊ฐ ์ด์ ์ฒ๋ฆฌ + while IFS= read -r issue_number; do + if [ -n "$issue_number" ]; then + echo "โก๏ธ ๋ซ๋ ์ค: #$issue_number" + if gh issue close "$issue_number" --reason completed --repo "$GITHUB_REPOSITORY"; then + echo "โ ์ด์ #$issue_number ๋ซ๊ธฐ ์๋ฃ" + issue_count=$((issue_count + 1)) + else + echo "โ ๏ธ ์ด์ #$issue_number ๋ซ๊ธฐ ์คํจ (์ด์๊ฐ ์กด์ฌํ์ง ์๊ฑฐ๋ ๊ถํ์ด ์์ ์ ์์ต๋๋ค)" + failed_count=$((failed_count + 1)) + fi + fi + done <<< "$issue_numbers" + + echo "๐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ: ์ฑ๊ณต $issue_count๊ฐ, ์คํจ $failed_count๊ฐ" - name: Delete source branch env: @@ -44,4 +65,3 @@ jobs: run: | echo "๐๏ธ ์์ค ๋ธ๋์น ์ญ์ ์ค: $BRANCH_NAME" gh api repos/${{ github.repository }}/git/refs/heads/$BRANCH_NAME -X DELETE || echo "โ ๏ธ ๋ธ๋์น ์ญ์ ์คํจ ๋๋ ์ด๋ฏธ ์ญ์ ๋จ: $BRANCH_NAME" - From ce170ed54f27e26b84124f2aa095b01796f2052e Mon Sep 17 00:00:00 2001 From: bini0918 <165636716+bini0918@users.noreply.github.com> Date: Mon, 29 Dec 2025 01:27:51 +0900 Subject: [PATCH 14/16] =?UTF-8?q?feat:=20header=20UI=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/logo.svg | 13 ++++ public/notification.svg | 4 ++ public/profile.svg | 13 ++++ public/search.svg | 4 ++ src/app/(main)/layout.tsx | 11 +++ src/app/(main)/page.tsx | 3 + src/app/{page.tsx => page.backup.tsx} | 0 src/components/layout/Header.tsx | 97 +++++++++++++++++++++++++++ src/components/layout/NavItem.tsx | 28 ++++++++ tsconfig.json | 18 +++-- 10 files changed, 187 insertions(+), 4 deletions(-) create mode 100644 public/logo.svg create mode 100644 public/notification.svg create mode 100644 public/profile.svg create mode 100644 public/search.svg create mode 100644 src/app/(main)/layout.tsx create mode 100644 src/app/(main)/page.tsx rename src/app/{page.tsx => page.backup.tsx} (100%) create mode 100644 src/components/layout/Header.tsx create mode 100644 src/components/layout/NavItem.tsx diff --git a/public/logo.svg b/public/logo.svg new file mode 100644 index 0000000..6019f54 --- /dev/null +++ b/public/logo.svg @@ -0,0 +1,13 @@ + diff --git a/public/notification.svg b/public/notification.svg new file mode 100644 index 0000000..899f7b1 --- /dev/null +++ b/public/notification.svg @@ -0,0 +1,4 @@ + diff --git a/public/profile.svg b/public/profile.svg new file mode 100644 index 0000000..e4024a1 --- /dev/null +++ b/public/profile.svg @@ -0,0 +1,13 @@ + diff --git a/public/search.svg b/public/search.svg new file mode 100644 index 0000000..ddd0af0 --- /dev/null +++ b/public/search.svg @@ -0,0 +1,4 @@ + diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx new file mode 100644 index 0000000..d319b8f --- /dev/null +++ b/src/app/(main)/layout.tsx @@ -0,0 +1,11 @@ +import Header from "@/components/layout/Header"; +import type { ReactNode } from "react"; + +export default function MainLayout({ children }: { children: ReactNode }) { + return ( + <> + + {children} + > + ); +} diff --git a/src/app/(main)/page.tsx b/src/app/(main)/page.tsx new file mode 100644 index 0000000..acca1f1 --- /dev/null +++ b/src/app/(main)/page.tsx @@ -0,0 +1,3 @@ +export default function HomePage() { + return ; +} diff --git a/src/app/page.tsx b/src/app/page.backup.tsx similarity index 100% rename from src/app/page.tsx rename to src/app/page.backup.tsx diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx new file mode 100644 index 0000000..1b59ab7 --- /dev/null +++ b/src/components/layout/Header.tsx @@ -0,0 +1,97 @@ +"use client"; + +import Link from "next/link"; +import { usePathname } from "next/navigation"; +import Image from "next/image"; +import { NavItem } from "./NavItem"; + +const NAV = [ + { label: "์ฑ ๋ชจ ํ", href: "/" }, + { label: "๋ชจ์", href: "/groups" }, + { label: "์ฑ ์ด์ผ๊ธฐ", href: "/stories" }, + { label: "์์", href: "/news" }, +]; + +export default function Header() { + const pathname = usePathname(); + + return ( ++ + ); +} diff --git a/src/components/layout/NavItem.tsx b/src/components/layout/NavItem.tsx new file mode 100644 index 0000000..0c67a68 --- /dev/null +++ b/src/components/layout/NavItem.tsx @@ -0,0 +1,28 @@ +import Link from "next/link"; + +interface NavItemProps { + href: string; + label: string; + active: boolean; +} + +export function NavItem({ href, label, active }: NavItemProps) { + return ( + + + {label} + + + ); +} diff --git a/tsconfig.json b/tsconfig.json index 541bd6a..559e4f4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,11 @@ { "compilerOptions": { "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -19,7 +23,9 @@ } ], "paths": { - "@/*": ["./src/*"] + "@/*": [ + "./src/*" + ] } }, "include": [ @@ -28,7 +34,11 @@ "**/*.tsx", "checkmo/.next/types/**/*.ts", "checkmo/.next/dev/types/**/*.ts", - "**/*.mts" + "**/*.mts", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" ], - "exclude": ["node_modules"] + "exclude": [ + "node_modules" + ] } From 8f75f385b247eea2ae96e309f6b0872f241877ed Mon Sep 17 00:00:00 2001 From: bini0918 <165636716+bini0918@users.noreply.github.com> Date: Mon, 29 Dec 2025 01:44:01 +0900 Subject: [PATCH 15/16] =?UTF-8?q?chore:=20=EC=9D=B4=EB=AF=B8=EC=A7=80?= =?UTF-8?q?=EC=97=90=20alt=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/layout/Header.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx index 1b59ab7..03362cf 100644 --- a/src/components/layout/Header.tsx +++ b/src/components/layout/Header.tsx @@ -55,7 +55,7 @@ export default function Header() {+++ {/*๋ก๊ณ + ๋ฉ๋ด*/} +++ ++ + {/*์์ด์ฝ*/} ++ + + + + +++ + + + + + + + + + Date: Mon, 29 Dec 2025 01:49:36 +0900 Subject: [PATCH 16/16] =?UTF-8?q?chore:=20image=EC=97=90=20alt=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/ISSUE_TEMPLATE/custom.md | 8 +++++--- src/components/layout/Header.tsx | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md index 8a5180b..d27887b 100644 --- a/.github/ISSUE_TEMPLATE/custom.md +++ b/.github/ISSUE_TEMPLATE/custom.md @@ -1,13 +1,13 @@ --- name: Custom issue template about: Describe this issue template's purpose here. -title: '' -labels: '' +title: "" +labels: "" assignees: shinwokkang - --- ### ๐ ์ด์ ์ ํ + - [ ] ๊ธฐ๋ฅ ์ถ๊ฐ - [ ] ๋ฒ๊ทธ ์์ - [ ] ๋ฆฌํฉํ ๋ง @@ -16,9 +16,11 @@ assignees: shinwokkang --- ### โจย ๊ธฐ๋ฅ + ์ด๋ค ๊ธฐ๋ฅ์ ๊ตฌํํ ์ง ๊ฐ๋จํ ์์ฑํด์ฃผ์ธ์. --- ### ๐ ์ฐธ๊ณ ์๋ฃ + ํผ๊ทธ๋ง, ๋ ธ์ , ์คํฌ๋ฆฐ์ท, ๊ด๋ จ ๋งํฌ ๋ฑ ์์ผ๋ฉด ์ฒจ๋ถํด์ฃผ์ธ์. diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx index 03362cf..b3f9dac 100644 --- a/src/components/layout/Header.tsx +++ b/src/components/layout/Header.tsx @@ -55,7 +55,7 @@ export default function Header() {