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.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/timeline.tsx b/src/components/timeline.tsx
index 4350af3..0080c0b 100644
--- a/src/components/timeline.tsx
+++ b/src/components/timeline.tsx
@@ -25,7 +25,7 @@ export default function TimelineComponent() {
return (