From b63c60b042bf722fb5f03f74900bcf53687f58c8 Mon Sep 17 00:00:00 2001 From: dd3ok Date: Sat, 20 Jun 2026 21:10:30 +0900 Subject: [PATCH 1/4] chore: refine AI backend portfolio copy --- docs/plans/portfolio-improvement-plan.md | 2 ++ src/app/layout.tsx | 12 ++++----- src/components/sections/PagesSection.tsx | 2 +- src/data/portfolio.ts | 32 ++++++++++++++++-------- 4 files changed, 31 insertions(+), 17 deletions(-) diff --git a/docs/plans/portfolio-improvement-plan.md b/docs/plans/portfolio-improvement-plan.md index 0a6e0e3..a723a23 100644 --- a/docs/plans/portfolio-improvement-plan.md +++ b/docs/plans/portfolio-improvement-plan.md @@ -189,3 +189,5 @@ Establish a repeatable development workflow and then improve the portfolio in sm - 2026-06-18: Removed the `/ai-fitting` route, home service card, sitemap entry, smoke-check expectation, and current docs references after retiring the AI fitting demo. - 2026-06-18: Updated the visible repository card name from `커리어 에이전트` to `who-am-ai` while keeping the chat-facing agent copy unchanged. - 2026-06-20: Removed finance/API skill promotions from the home page while keeping the `/agent-skills` detail route available. +- 2026-06-20: Added a `Current Focus` experience entry for post-Gmarket backend, AI agent, and automation work without exposing the private wallstreetcats repository name. +- 2026-06-20: Refined About, skills, current focus, and metadata copy around practical AI backend experiments across public repos and private toy projects without overstating production AI specialization. diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d33684a..c2f29e3 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -10,7 +10,7 @@ const notoSansKR = Noto_Sans_KR({ const siteUrl = 'https://dd3ok.github.io' const siteTitle = 'dd3ok — Backend Developer Portfolio' const siteDescription = - 'Backend Developer dd3ok의 포트폴리오. Spring Boot, 분산 시스템, AI Agent Skill 오픈소스 프로젝트 — 네이버증권 API, 토스증권 API, 바이낸스 API, 야후 파이낸스 스킬 등.' + 'Backend Developer dd3ok의 포트폴리오. Spring Boot 기반 백엔드 경험과 who-am-ai, Waitworthy, Repoclip, Agent Skill 등 AI 백엔드·자동화 토이프로젝트를 정리합니다.' export const metadata: Metadata = { metadataBase: new URL(siteUrl), @@ -23,15 +23,15 @@ export const metadata: Metadata = { 'dd3ok', 'backend developer', 'portfolio', + 'Spring Boot', + 'AI backend', + 'RAG', + 'LLMOps', + 'AI agent', 'agent skill', 'codex skill', 'openai skill', - '네이버증권 API', - '토스증권 API', - 'Binance API', - 'Yahoo Finance', 'Python', - 'Spring Boot', 'open source', ], authors: [{ name: 'dd3ok', url: 'https://github.com/dd3ok' }], diff --git a/src/components/sections/PagesSection.tsx b/src/components/sections/PagesSection.tsx index e12ba54..4169645 100644 --- a/src/components/sections/PagesSection.tsx +++ b/src/components/sections/PagesSection.tsx @@ -15,7 +15,7 @@ export default function PagesSection() { Toys

- 개인적인 페이지와 토이프로젝트 repository입니다 + AI, 자동화, 개발 도구를 가볍게 실험한 개인 프로젝트입니다

diff --git a/src/data/portfolio.ts b/src/data/portfolio.ts index b6f20ff..78ff13e 100644 --- a/src/data/portfolio.ts +++ b/src/data/portfolio.ts @@ -1,12 +1,12 @@ import type { AboutContent, Experience, Project, Service, Skill } from '@/types' export const aboutContent: AboutContent = { - summaryTags: ['클린코드', '대용량트래픽', '분산환경', 'AI', 'LLM'], - title: '확장 가능하고 안정적인 시스템을 만듭니다', + summaryTags: ['Spring', '분산시스템', 'AI에이전트', 'RAG', '자동화'], + title: '운영 가능한 백엔드 위에 AI를 실험합니다', paragraphs: [ - '스프링 기반의 백엔드 서비스를 주로 담당했고 최근에는 AI와 LLM에 관심이 있습니다. 웹 애플리케이션 개발과 운영에 전문성을 갖추고 있습니다.', - '특히 분산 시스템 아키텍처에 관심이 많으며, 안정적인 시스템을 만들기 위해 노력합니다.', - '지속적인 학습을 통해 최신 기술 트렌드를 따라가며, 팀과의 협업을 통한 문제 해결을 선호합니다.', + 'Spring 기반 백엔드 개발과 운영 경험을 바탕으로, 최근에는 RAG, AI Agent, LLMOps, 자동화 파이프라인을 개인 토이프로젝트에 적용해보고 있습니다.', + '지마켓 ESM+와 삼성전자 BQMS에서 로그인·인증, 판매자 API, 업무 시스템 운영 경험을 쌓았고, 안정성과 확장성을 우선합니다.', + 'who-am-ai, Repoclip, Agent Skill, 데이터 브리핑 파이프라인 같은 실험을 통해 AI를 백엔드 시스템에 자연스럽게 녹이는 방법을 탐색하고 있습니다.', ], } @@ -14,10 +14,22 @@ export const skills: Skill[] = [ { category: 'Language', items: ['Java', 'Kotlin', 'javascript', 'C#'] }, { category: 'Framework & Library', items: ['Spring Boot', 'React', 'Next.js', 'Vue', 'jQuery'] }, { category: 'Database', items: ['Oracle', 'MSSQL', 'Redis', 'MongoDB', 'Kafka'] }, + { category: 'AI Backend', items: ['Spring AI', 'RAG', 'Agent Tooling', 'LLM Eval', 'MCP'] }, { category: 'Monitoring', items: ['Prometheus', 'Grafana', 'ELK Stack', 'Datadog'] }, ] export const experiences: Experience[] = [ + { + company: 'Current Focus', + position: 'Backend / AI Agent Engineering', + period: '2025.01 - Present', + description: [ + 'Spring AI 기반 커리어 Q&A 에이전트 who-am-ai 개발', + 'Python 기반 주식 데이터 수집·분석,평가,브리핑 자동화 파이프라인 개발', + 'RAG, Agent Tooling, Eval, Observability를 개인 토이프로젝트에 점진적으로 적용', + 'Codex, Claude Code 기반 Agent Skill과 개발 자동화 워크플로우 실험', + ], + }, { company: '지마켓', position: 'Backend Developer', @@ -120,10 +132,10 @@ export const services: Service[] = [ { id: 'nopairprgm', title: '코드리뷰 AI', - description: 'PR을 올려 Gemini 한테 리뷰를 받자', + description: 'GitHub PR에 Gemini 기반 리뷰 흐름을 붙여본 코드리뷰 자동화 실험', icon: '🤖', path: 'https://github.com/dd3ok/no-pair-prgm', - features: ['Gemini 1.5 Flash 연동', 'Github API 연동', 'Github PR 자동 코드리뷰'], + features: ['Gemini 1.5 Flash 연동', 'GitHub API 연동', 'GitHub PR 자동 코드리뷰'], color: 'from-purple-500 to-indigo-500', buttonText: 'Repository 바로가기', buttonType: 'repo', @@ -131,7 +143,7 @@ export const services: Service[] = [ { id: 'oauth', title: 'OAuth 로그인 + 세션/토큰 관리', - description: 'Naver, Kakao, Google OAuth로 간편하게 로그인하세요', + description: 'OAuth 로그인과 JWT/Redis 세션 관리를 구현한 인증 서비스 예제', icon: '🔐', path: 'https://github.com/dd3ok/auth-service', features: ['OAuth 2.0 로그인', 'JWT 토큰 인증', 'Redis 세션 관리'], @@ -154,10 +166,10 @@ export const services: Service[] = [ { id: 'repoclip', title: 'Repoclip', - description: 'LLM을 위한 Repository 요약 도구', + description: 'Repository를 LLM 컨텍스트로 정리하는 요약 도구', icon: '📦', path: 'https://repoclip.onrender.com', - features: ['Github 저장소 / ZIP 파일 업로드', '클립보드 or 텍스트파일로 export'], + features: ['GitHub 저장소 / ZIP 파일 업로드', '클립보드 or 텍스트파일로 export'], color: 'from-yellow-500 to-green-500', buttonText: '서비스 이용하기', buttonType: 'service', From 90f60ee64eea6f53877bb4290be1b48b7a8f3366 Mon Sep 17 00:00:00 2001 From: dd3ok Date: Sat, 20 Jun 2026 21:23:05 +0900 Subject: [PATCH 2/4] chore: normalize current focus punctuation --- src/data/portfolio.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/portfolio.ts b/src/data/portfolio.ts index 78ff13e..e555fa1 100644 --- a/src/data/portfolio.ts +++ b/src/data/portfolio.ts @@ -25,7 +25,7 @@ export const experiences: Experience[] = [ period: '2025.01 - Present', description: [ 'Spring AI 기반 커리어 Q&A 에이전트 who-am-ai 개발', - 'Python 기반 주식 데이터 수집·분석,평가,브리핑 자동화 파이프라인 개발', + 'Python 기반 주식 데이터 수집·분석·평가·브리핑 자동화 파이프라인 개발', 'RAG, Agent Tooling, Eval, Observability를 개인 토이프로젝트에 점진적으로 적용', 'Codex, Claude Code 기반 Agent Skill과 개발 자동화 워크플로우 실험', ], From ead763c176c847fa378f6c0adccbf43be3d29837 Mon Sep 17 00:00:00 2001 From: dd3ok Date: Sat, 20 Jun 2026 21:33:27 +0900 Subject: [PATCH 3/4] chore: trim code review project copy --- src/data/portfolio.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/portfolio.ts b/src/data/portfolio.ts index e555fa1..48387ef 100644 --- a/src/data/portfolio.ts +++ b/src/data/portfolio.ts @@ -132,7 +132,7 @@ export const services: Service[] = [ { id: 'nopairprgm', title: '코드리뷰 AI', - description: 'GitHub PR에 Gemini 기반 리뷰 흐름을 붙여본 코드리뷰 자동화 실험', + description: 'GitHub PR에 Gemini 기반 리뷰 흐름을 붙여본 코드리뷰 자동화', icon: '🤖', path: 'https://github.com/dd3ok/no-pair-prgm', features: ['Gemini 1.5 Flash 연동', 'GitHub API 연동', 'GitHub PR 자동 코드리뷰'], From 4898899cb01f6f798ecb6eac78f6b38f13c85ec7 Mon Sep 17 00:00:00 2001 From: dd3ok Date: Sat, 20 Jun 2026 22:35:44 +0900 Subject: [PATCH 4/4] chore: simplify contact wakeup copy --- src/components/sections/ContactForm.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/sections/ContactForm.tsx b/src/components/sections/ContactForm.tsx index b6fcf4d..4c426a5 100644 --- a/src/components/sections/ContactForm.tsx +++ b/src/components/sections/ContactForm.tsx @@ -91,7 +91,7 @@ export default function ContactForm() { if (status && status >= 500) { return { title: '연락 서비스가 아직 준비 중일 수 있습니다.', - detail: '외부 API가 잠들어 있다가 깨어나는 중일 수 있습니다. 30~60초 후 다시 시도하거나 이메일로 직접 연락해주세요.', + detail: '외부 서비스가 wake up 중일 수 있습니다. 30~60초 후 다시 시도해주세요.', } } @@ -312,7 +312,7 @@ export default function ContactForm() {

- 응답이 늦으면 외부 서비스가 깨어나는 중일 수 있습니다. 급한 문의는 이메일로 바로 연락해주세요. + 외부 서비스가 wake up 중일 수 있습니다. 잠시 후 다시 시도해주세요.

)