diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index aab7d16..e148f5c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,8 +39,8 @@ jobs: cache-from: type=gha cache-to: type=gha,mode=max tags: | - ghcr.io/imnyang/choten:latest - ghcr.io/imnyang/choten:${{ github.run_id }} + ghcr.io/imnyang/imnya.ng:latest + ghcr.io/imnyang/imnya.ng:${{ github.run_id }} update: runs-on: self-hosted steps: diff --git a/Dockerfile b/Dockerfile index 7d8b61a..7ee8c87 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ FROM oven/bun:latest AS base FROM base AS deps WORKDIR /app -COPY package.json bun.lockb* package-lock.json* pnpm-lock.yaml* .npmrc* ./ +COPY package.json bun.lockb* package-lock.json* pnpm-lock.yaml* .npmrc* bun.lock* ./ RUN bun install --frozen-lockfile diff --git a/bun.lock b/bun.lock index b679183..4997316 100644 --- a/bun.lock +++ b/bun.lock @@ -36,6 +36,7 @@ "cmdk": "^1.1.1", "date-fns": "^4.1.0", "embla-carousel-react": "^8.6.0", + "framer-motion": "^12.23.24", "input-otp": "^1.4.2", "lucide-react": "^0.544.0", "next": "16.0.0", @@ -417,6 +418,8 @@ "fast-equals": ["fast-equals@5.3.2", "", {}, "sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ=="], + "framer-motion": ["framer-motion@12.23.24", "", { "dependencies": { "motion-dom": "^12.23.23", "motion-utils": "^12.23.6", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-HMi5HRoRCTou+3fb3h9oTLyJGBxHfW+HnNE25tAXOvVx/IvwMHK0cx7IR4a2ZU6sh3IX1Z+4ts32PcYBOqka8w=="], + "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], @@ -461,6 +464,10 @@ "magic-string": ["magic-string@0.30.19", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw=="], + "motion-dom": ["motion-dom@12.23.23", "", { "dependencies": { "motion-utils": "^12.23.6" } }, "sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA=="], + + "motion-utils": ["motion-utils@12.23.6", "", {}, "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ=="], + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], "next": ["next@16.0.0", "", { "dependencies": { "@next/env": "16.0.0", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.0.0", "@next/swc-darwin-x64": "16.0.0", "@next/swc-linux-arm64-gnu": "16.0.0", "@next/swc-linux-arm64-musl": "16.0.0", "@next/swc-linux-x64-gnu": "16.0.0", "@next/swc-linux-x64-musl": "16.0.0", "@next/swc-win32-arm64-msvc": "16.0.0", "@next/swc-win32-x64-msvc": "16.0.0", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-nYohiNdxGu4OmBzggxy9rczmjIGI+TpR5vbKTsE1HqYwNm1B+YSiugSrFguX6omMOKnDHAmBPY4+8TNJk0Idyg=="], diff --git a/package.json b/package.json index 396d2b2..75f0ab6 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "cmdk": "^1.1.1", "date-fns": "^4.1.0", "embla-carousel-react": "^8.6.0", + "framer-motion": "^12.23.24", "input-otp": "^1.4.2", "lucide-react": "^0.544.0", "next": "16.0.0", diff --git a/public/art.html b/public/art.html new file mode 100644 index 0000000..6f3598a --- /dev/null +++ b/public/art.html @@ -0,0 +1,122 @@ + + + + + + + + + imnyang + + +
 w   _gggggggggggggg ,ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
+,g@@@@@@@@@@@@@@@@@ ,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@@',@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@? @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@P @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@ !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@ P""%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@ ,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@P ' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @@@@PQ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@{  /@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| @@@@ [@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@g .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @@@; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@ [@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @@@ .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .@@@ {@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |@@1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@  |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@;  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@ [@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@@  '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N @ ! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@@:  9@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| @j |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@W    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |@F  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@@ /@  Q@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ _  @B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@',@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| @F @@, '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@W @@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @ /@@@L @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@ {@@@@@p `@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #  @@@@@L @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@ /@@@@@@@a `@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' T +aT@@@@L t@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@',@@@@@@@@@\ .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ , ,,@@_Q@@@b '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@',@@@@@@@@@@@, \@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F ' F@@@@@_@@@@  %@@@@D" [@@@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@ ,@@@@@@@@@@@@@,  Q@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   /@@@@@@@@_0@@.   __g@@@@D,[@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@ _@@@@@@@@@@@@@@@,  [@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?  _@@@@@@@@B>" ___  '@@B>_g@@!@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@F  _________ """=4B@,  \@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"+@@@@@@@@@  ,@@B="  __g@@@@@@@a  \@@@@@@LT@@@@@@@@@@@@@@@@@@g
+[@@@@@@D /@@@@@@@@@@@@@@@@gg__   ""=B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g____       __~gW@@@@@@@@@@@@@@@_  "@@@@@@'@@@@@@@@@@@@@@@@@g
+[@@@@@F g@@@@@@@@@@@@@@@@@@@@@a a -ggp___ "<4@@@@@@@@_g "@@@@@@@@@@@@@@@@@@@@@@@@@@@W   @@@@@@@@@@@@@@@@@@@@@@g_  "4@@@Lt@@@@@@@@@@@@@@@g
+[@@@@ _@@@@@@@@@@@@@@@@@@@@@@@@@ t,'@@@@@@@@g~____/@@@@@_ _, @@@@@@@@@@@@@@@@@@@@@@@ ;@g@@@@@@@@@@@@@@@@@@@@@@@@@g_  -___   ""[@@@@@@@@@g
+[BP*  ""               `"""=BB@@@,'a T@@@@@@@@@@@@@@@@@@@ [@_@@@@@@@@@@@@@@@@@@@@@@  @,@@@@@@@@@@@@@@@@@@@BD="""    ''<B@@_%@@@@@@@@@@@@g
+    """  _gg@@@@@@@@mmgg~______     <. Q@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D  @/@@@@@@@@@@@@@D>" _    ___g@@@@@@@@@@@@_+@@@@@@@@@@g
+         _ _      -~---_______  """=. ,  '<8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"  @F@@@@@@@@@D" __+" __+@@D>""  ____.--- `g@@g_"8@@@@@@g
+,____~_~~~gggg~______   -.._  ""<0B@gg,     _ '8@@@@@@@@@@@@PQ@@@@@@@@@@@@@@@@P / @F@@@@@@@" ,*' _o@B>" __wr>" __..-===0@@@@@@@@@@g__-"""
+'>"""                                     "   >, <@@@@@@@@@@ [@@@@@@@@@@@@@@P  " @'@@@@@P  '__@@D" .-'             ... __4@@@@@@@@@@@@@@g
+;g@@@@@@g  !/ggggg~_____---"-_".  ggg_____        ,`Q@@@@@@@ [@@@@@@@D  @@@@@@ ,@_@@@@F  _g@@BP'       .._~'-~~"_ggg@B@W@@p'@@@@@@@@@@@@g
+[@@@@@@@@ ; '@@@@@@@@@@@@@@@@@@1! @@@@@@@ 'p_.   -_   P=B@@) @@@@@@P   @@@@@P _Po@@@@" o@D"    ___g@@ _g@@@=_~gg_~_@@@@@@@@p'@@@@@@@@@@@g
+[@@@@@@@@ ' ''@@@@@@@@@@@@@@@@@@! !@@@@@g    .,  @@@@@gg___ .@@@@P   ,@@@@B _@@gggg       __g@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@g
+[@@@@@@@@@  ''@@@@@@@@@@@@@@@@@@,, @@@@@@ ';_g.: @@@@@@@@@F @@@F _@',@@@P _@@@@@@@9 ,  p"@@@@@@@@@@@@9@@@@@@@@@@@@@@@@@@@@@/g@@@@@@@@@@@g
+[@@@@@@@@@,  '\@@@@@@@@@@@@@@@@@@, {@@@@@ {B 0,; @@@@@@@Fj *D  o@@ .@B" _@@@@@@@@@@@@g__@'@@@@@@@@@@@LQ@@@@@@@@@@@@@@@@@@F_@@@@@@@@@@@@@g
+[@@@@@@@@@@   '@@@@@@@@@@@@@@@@@@,  @@@@@ [g-T]! [@@@@@/'   _@@@@ _ __@@@@@@@@@@@@@@@@@@@g@@@@@@@@@@@@@_<@@@@@@@@@@B=>"~@g@@_@@@@@@@@@@@g
+[@@@@@@@@@@g   '@@@@@@@@@@@@@@@@@@\ {@@@@ '@@1+, '@@@F@@gg@@@@@P _@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@F$@@@@@@@@g@@@@@@@@@@g
+[@@@@@@@@@@@l  \V@@@@@@@@@@@@@@@@@!! @@@@ '[@@@'. @@P@@@@@@@@@@y@@@@@@@@@@@@@@@@@@@@@@@@Dg@@@@@@@@@@@@@@@@@@@@@@@@gj@@@@@@@@@@ @@@@@@@@@g
+[@@@@@@@@@@@@,  '@@@@@@@@@BD=<f>"g@@L @@8 ggggg@g @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F@@@@@@@@@@@@@@@@@@@@@@@@@H ]@@@@@@@@@@@[@@@@@@@@g
+[@@@@@@@@@@@@@  ''@B"__~g@@@@@@@@@@@@b " {@@@@@@@ @@,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@P_@@@@@@@@@@@@@@@@@@@@@@@@@W3:W@@@@@@@@@@@@,@@@@@@@@g
+[@@@@@@@@@@@@@@  0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@'@@@@@@@@@@@@@@@@@@@@@@@B="_g@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g@[@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g@@@@b+@@@@@@@@@@@@@@"~g@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@|@@@@@@@g
+[@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g"<4B@@@BP"o@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\@@@@@@@@@@@Pj@@@@@@@g
+[@@@@@@@@@@@@@@@@@ '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@gT@@@@@@@@@@g@@@@@@@@g
+[@@@@@@@@@@@@@@@@@@ '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,@@@@@@@@@g@@@@@@@@@g
+[@@@@@@D>""""9Q@@@@@ `@@@@@@@@@@B=*""  ___@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BBBBBB@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B'@@@@@@@@@]@@@@@@@@g
+[@@@@'@R@@@@g\  """""         -~-`""   _____og@@@@@@@@@@@@@B>"""   ______~ggggggggg@@gg T@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g_*B@@@P_@@@@@@@@B"
+[@@D~ _@@@@@@@_<=====mnmmmmm==r~-=_@@@@@@@@@@@@@@@@@@@@@@@ _g@@@@@@@@@@@@@@@@@@@@@@@@@F_@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B" _og
+'@P_@W@@@@@@@@@@@@@PB+~gM@@@@@g_.+^gt@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@B====>" _~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B" ,oFg@@g
+ P/@@@@@@@@@@@@@g -@@@@@M""" ._~"A8_g9@@@@@@@@@@@@@@@@@@@@ 9@@@@@@@@@@@@B>  _o@@@W@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@P' _gB"_@@@@g
+ ' <@@@@@@@@@@@@@'<__ggW@@@@@@@@@@@@@|@@@@@@@@@@@@@@@@@@@@,'"8BBB=="" __g@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D"  _@@Po@@@@@@@g
+,    "`t@@@@@@@@@@@@@@@@@@@@@@@@@@@@Fg@@@@@@@@@@@@@@@@@@@@@@ggggg@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@P"  __g@@@@@@@@@@@@@g
+!@@_.__ ;@@@@@@@@@@@@@@@@@@@@@@@@@@"g@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+ _,_o@@@@@@@@@@@@@@@@@@g
+ '@@[_<B@@@@@@@@@@@,  [@@@@@@B="s_g@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BBB==>""""""""=0@@" __@@F@@@@@@@@@@@@@@@@@@@@@g
+[g "@_@@@@gp~"___"-/ q___~ggg@@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*""  _____go~+grqggggggggg~___  "*F@@@@@@@@@@@@@@@@@@@@@@g
+[@@@_ '<@@@@@@@@@@@@,'@@@@@@@@@" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B="  __~g@@@@@@@@@@@@@@| @@@@@@@@@@@@@@@@@g, @@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@g_.@@@@@@@@@@@L`8@@@@@@P @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B=" __g@@@@@@@@@@@@@@@@BP>"_\ .:@@@@@@@@g_4@@@@@@  @@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@_@@@@@@@@@@@@_ `"" __@@@@@@@@@@@@@@@@@@@@@@@@@@@@B>    g@@@@@@@@@@@@@B>"~g@@@@@@@@  |[@@@@@@@@@@@L@@@@@.g@@@@@@@@@@@@@@@@@@@@@g
+[@@@@@@@@@@@__ "<B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D" _g@@@ / @@@@@@B>"og@@@@@@@@@@@@@@@, [@@@@@@@@@@@@@,@@@@1@@@@@@@@@@@@@@@@@@@@@@g
+!BBBBBBBBBBBBBBB...    """""==4BBBBBBBBBBP>"D==4BBBBP .mBBBBBB"  BBBB"oBBBBBBBBBBBBBBBBBBBBB  "BBBBBBBBBBBBBhBBBBBaBBBBBBBBBBBBBBBBBBBBBN
+
+ diff --git a/public/bg.avif b/public/bg.avif deleted file mode 100644 index e2c685d..0000000 Binary files a/public/bg.avif and /dev/null differ diff --git a/public/bg.png b/public/bg.png deleted file mode 100644 index 35bbba2..0000000 Binary files a/public/bg.png and /dev/null differ diff --git a/public/char.avif b/public/char.avif index 2d21370..ea2d596 100644 Binary files a/public/char.avif and b/public/char.avif differ diff --git a/src/app/globals.css b/src/app/globals.css index 0c750d9..d0191f5 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,4 +1,5 @@ @import url("https://cdn.jsdelivr.net/gh/wanteddev/wanted-sans@v1.0.3/packages/wanted-sans/fonts/webfonts/variable/split/WantedSansVariable.min.css"); +@import url('https://fonts.googleapis.com/css2?family=Google+Sans+Code:ital,wght@0,300..800;1,300..800&display=swap'); @import "tailwindcss"; @import "tw-animate-css"; @@ -14,6 +15,42 @@ } :root { + --background: hsl(340 40% 98%); + --foreground: hsl(315 21% 8%); + --card: hsl(340 40% 98%); + --card-foreground: hsl(315 21% 8%); + --popover: hsl(340 40% 98%); + --popover-foreground: hsl(315 21% 8%); + --primary: hsl(340 25% 15%); + --primary-foreground: hsl(0 0% 98%); + --secondary: hsl(340 25% 95%); + --secondary-foreground: hsl(240 5.9% 10%); + --muted: hsl(340 20% 95%); + --muted-foreground: hsl(340 10% 60%); + --accent: hsl(340 25% 94%); + --accent-foreground: hsl(240 5.9% 10%); + --destructive: hsl(0 84.2% 60.2%); + --destructive-foreground: hsl(0 0% 98%); + --border: hsl(340 25% 90%); + --input: hsl(340 25% 90%); + --ring: hsl(315 21% 8%); + --chart-1: hsl(12 76% 61%); + --chart-2: hsl(173 58% 39%); + --chart-3: hsl(197 37% 24%); + --chart-4: hsl(43 74% 66%); + --chart-5: hsl(27 87% 67%); + --radius: 0.6rem; + --sidebar-background: hsl(340 25% 98%); + --sidebar-foreground: hsl(240 5.3% 26.1%); + --sidebar-primary: hsl(240 5.9% 10%); + --sidebar-primary-foreground: hsl(0 0% 98%); + --sidebar-accent: hsl(340 20% 95%); + --sidebar-accent-foreground: hsl(240 5.9% 10%); + --sidebar-border: hsl(340 20% 90%); + --sidebar-ring: hsl(217.2 91.2% 59.8%); +} + +.dark { --background: hsl(315 21% 8%); --foreground: hsl(0 0% 98%); --card: hsl(315 21% 8%); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index dff78e2..6e1ed29 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -2,6 +2,8 @@ import type { Metadata } from "next"; import { ThemeProvider } from "@/components/theme-provider" import "./globals.css"; +import "./scrollbar.css"; +import SUPERCOMMAND from "@/components/SUPERCOMMAND"; export const metadata: Metadata = { title: "λ‚¨ν˜„μ„ | :two_hearts: imnya.ng", @@ -24,6 +26,7 @@ export default function RootLayout({ disableTransitionOnChange > {children} + diff --git a/src/app/page.tsx b/src/app/page.tsx index ca85446..73d3906 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,4 +1,5 @@ import NeoFetch from "@/components/NeoFetch"; +import Projects from "@/components/Projects"; import TimelineComponent from "@/components/timeline"; import Top from "@/components/Top"; @@ -8,15 +9,15 @@ export default function Home() {
-
+

πŸ’• About

-

μ΄ˆλ“±ν•™κ΅ μ‹œμ ˆ μš΄μ˜μ²΄μ œμ— ν₯λ―Έλ₯Ό 느껴 컴퓨터λ₯Ό μ‹œμž‘ν–ˆκ³ , 이후 ν”„λ‘œκ·Έλž˜λ°μ— 관심을 κ°–κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

-

μ΄ˆλ“±ν•™κ΅ 4ν•™λ…„ λ•Œ Python으둜 ν”„λ‘œκ·Έλž˜λ°μ„ μ‹œμž‘ν–ˆμœΌλ©°, ν˜„μž¬λŠ” TypeScriptλ₯Ό 주둜 μ‚¬μš©ν•©λ‹ˆλ‹€.

-

μ΅œκ·Όμ—λŠ” μ •λ³΄λ³΄μ•ˆ λΆ„μ•Ό 쀑 μ›Ή 해킹에 관심이 λ§ŽμŠ΅λ‹ˆλ‹€.

+

였직 ν˜ΈκΈ°μ‹¬κ³Ό μ‹€ν–‰λ ₯으둜만 μ„±μž₯ν•΄ 온 개발자, μ •λ³΄λ³΄μ•ˆμ „λ¬Έκ°€ λ‚¨ν˜„μ„μž…λ‹ˆλ‹€.

+

μ΄ˆλ“±ν•™κ΅ μ‹œμ ˆ μš΄μ˜μ²΄μ œμ— ν₯λ―Έλ₯Ό 느껴 컴퓨터λ₯Ό μ‹œμž‘ν–ˆκ³ , 이후 ν”„λ‘œκ·Έλž˜λ°μ— 관심을 κ°–κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

+

μ΄ˆλ“±ν•™κ΅ 4ν•™λ…„ λ•Œ Python으둜 ν”„λ‘œκ·Έλž˜λ°μ„ μ‹œμž‘ν–ˆμœΌλ©°, ν˜„μž¬λŠ” TypeScriptλ₯Ό 주둜 μ‚¬μš©ν•©λ‹ˆλ‹€.

+

μ΅œκ·Όμ—λŠ” μ •λ³΄λ³΄μ•ˆ λΆ„μ•Ό 쀑 μ›Ή 해킹에 관심이 λ§ŽμŠ΅λ‹ˆλ‹€.


λŒ€ν‘œμ μΈ ν”„λ‘œμ νŠΈλ“€μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

- Effect Playing Contest 2025 Broadcast Develop
- today.isangjeong +
diff --git a/src/app/scrollbar.css b/src/app/scrollbar.css new file mode 100644 index 0000000..b293db4 --- /dev/null +++ b/src/app/scrollbar.css @@ -0,0 +1,26 @@ +/* from reset */ +::-webkit-scrollbar-track { + background: 0 0; +} + +::-webkit-scrollbar-thumb { + background: var(--muted-foreground); + border: 5px solid var(--background); + border-radius: 16px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--foreground); +} + +/* ::-webkit-scrollbar:not(.highlighttable, .highlight table, .gist .highlight) { + background: var(--theme); +} +*/ +/* reset */ +::-webkit-scrollbar { + width: 19px; + height: 11px; +} + +/* from PaperMod https://github.com/adityatelange/hugo-PaperMod/blob/c98a924842fc7ee0c14212c316c69ede3ad76ca3/assets/css/includes/scroll-bar.css */ \ No newline at end of file diff --git a/src/components/NeoFetch.tsx b/src/components/NeoFetch.tsx index 402c9a8..0bcaba9 100644 --- a/src/components/NeoFetch.tsx +++ b/src/components/NeoFetch.tsx @@ -8,19 +8,19 @@ export default function NeoFetch() { const wakaTimeData = useWakaTimeData(); return ( -
+
-
+
- imnyang@adofai.gg + imnyang@adofai.gg

----------

-

+

Uptime:{" "} {(() => { const startDate = new Date("2010-11-08T00:00:00+09:00"); @@ -39,12 +39,12 @@ export default function NeoFetch() { })()}

-

+

Experience:{" "} {Object.values(events).flat().length}

-

+

WakaTime:{" "} {wakaTimeData?.data?.total_seconds_including_other_language ? (() => { @@ -59,7 +59,7 @@ export default function NeoFetch() { : "N/A"}

-

+

Most used Language:{" "} {wakaTimeData?.data?.languages[0]?.name || "N/A"}{" "} {wakaTimeData?.data?.languages[0]?.total_seconds @@ -79,29 +79,29 @@ export default function NeoFetch() { Terminal: {ipData}

-

+

Locale: ko_KR.UTF-8


-
-

β €β €

-

β €β €

-

β €β €

-

β €β €

-

β €β €

-

β €β €

-

β €β €

-

β €β €

+
+
γ€€
+
+
+
+
+
+
+
-

β €β €

-

β €β €

-

β €β €

-

β €β €

-

β €β €

-

β €β €

-

β €β €

-

β €β €

+
γ€€
+
+
+
+
+
+
+
diff --git a/src/components/Projects.tsx b/src/components/Projects.tsx new file mode 100644 index 0000000..f31cfc4 --- /dev/null +++ b/src/components/Projects.tsx @@ -0,0 +1,55 @@ +import { SquareArrowOutUpRight } from 'lucide-react'; + +{/* Effect Playing Contest 2025 Broadcast Develop
+today.isangjeong */} + +const projects = [ + { + name: 'EPC 2025 Broadcast Manager', + url: 'https://github.com/NY0510/slunchv2', + desc: 'μ–ΌλΆˆμΆ€ λΌμ–ν˜Έμš°', + detail: '달성이 μ£Όκ΄€ν•˜κ³  ADOFAI.ggκ°€ 곡동 μ£Όμ΅œν•˜λŠ” Effect Playing Contest 2025 방솑 ν™”λ©΄μ˜ λŒ€λΆ€λΆ„μ˜ κΈ°λŠ₯을 κ°œλ°œν•˜μ˜€μŠ΅λ‹ˆλ‹€.', + tags: ['React', 'ElysiaJS'], + }, + { + name: '@today.isangjeong', + url: 'https://instagram.com/today.isangjeong', + desc: 'μΈμŠ€νƒ€μ—μ„œ 급식 곡유λ₯Ό κ°„νŽΈν•˜κ²Œ', + detail: '였늘의 급식을 μ‚¬μ§„μœΌλ‘œ κ³΅μœ ν•˜λŠ” μΈμŠ€νƒ€κ·Έλž¨ κ³„μ •μž…λ‹ˆλ‹€. 맀일 학ꡐ 급식을 μžλ™μœΌλ‘œ μ •λ¦¬ν•˜μ—¬ μ œκ³΅ν•©λ‹ˆλ‹€.', + tags: ['TypeScript', '자체 개발 Instagram Library', '@napi-rs/canvas'], + }, +]; + +export default function Projects() { + return ( +
+
+ {projects.map((project, idx) => ( +
+
+
+ {project.url ? ( + + {project.name} + + + ) : ( + {project.name} + )} + {project.desc} +
+
+

{project.detail}

+
+
+
+ {project.tags.map((tag, i) => ( + {tag} + ))} +
+
+ ))} +
+
+ ); +} \ No newline at end of file diff --git a/src/components/SUPERCOMMAND.tsx b/src/components/SUPERCOMMAND.tsx new file mode 100644 index 0000000..0d3a538 --- /dev/null +++ b/src/components/SUPERCOMMAND.tsx @@ -0,0 +1,90 @@ +"use client"; +import React from "react"; +import { Button } from "@/components/ui/button" +import { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog" + +export default function SUPERCOMMAND() { + const [keySequence, setKeySequence] = React.useState(""); + const [showDialog, setShowDialog] = React.useState(false); + const targetSequence = "MAGICALWORLD"; + + const handleKeyDown = (event: KeyboardEvent) => { + // 영문자만 처리 + if (event.key.length === 1 && /[a-zA-Z]/.test(event.key)) { + console.log(keySequence); + console.log(targetSequence); + console.log("Key pressed:", event.key); + setKeySequence(prev => { + const newSequence = prev + event.key; + console.log("New sequence:", newSequence); + + // λͺ©ν‘œ μ‹œν€€μŠ€μ™€ μ •ν™•νžˆ μΌμΉ˜ν•˜λŠ”μ§€ 확인 (λŒ€λ¬Έμžλ§Œ) + if (newSequence === targetSequence) { + console.log("Sequence matched!"); + setShowDialog(true); + return ""; + } + + // λͺ©ν‘œ μ‹œν€€μŠ€μ˜ μ‹œμž‘ λΆ€λΆ„κ³Ό μΌμΉ˜ν•˜λŠ”μ§€ 확인 (λŒ€λ¬Έμžλ§Œ) + if (targetSequence.startsWith(newSequence)) { + return newSequence; + } + + // μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄ ν˜„μž¬ ν‚€λΆ€ν„° λ‹€μ‹œ μ‹œμž‘ + const restartSequence = event.key; + if (targetSequence.startsWith(restartSequence)) { + return restartSequence; + } + + // μ™„μ „νžˆ μ΄ˆκΈ°ν™” + return ""; + }); + } else { + // νŠΉμˆ˜ν‚€λ‚˜ μˆ«μžκ°€ μž…λ ₯되면 μ‹œν€€μŠ€ μ΄ˆκΈ°ν™” + setKeySequence(""); + } + }; + + React.useEffect(() => { + window.addEventListener("keydown", handleKeyDown); + return () => { + window.removeEventListener("keydown", handleKeyDown); + }; + }, []); + + return ( + + + + + ??? + +
+ +
+
+

{`μ§€κΈˆλ°”λ‘œ 윀회!`} +

+
+
+
+ + + +
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/Top.tsx b/src/components/Top.tsx index 02f1032..d10daf7 100644 --- a/src/components/Top.tsx +++ b/src/components/Top.tsx @@ -62,10 +62,10 @@ export default function Top() {
{ - e.preventDefault(); - window.scrollBy(0, window.innerHeight * (e.deltaY > 0 ? 1 : -1)); - }} + // onWheel={(e) => { + // e.preventDefault(); + // window.scrollBy(0, window.innerHeight * (e.deltaY > 0 ? 1 : -1)); + // }} >

🌠 μˆ˜μƒ 및 ꡐ윑