TappyType
2026.05 ~ 현재애플펜슬로 쓴 손글씨를 한글 폰트로 만들어 주는 iOS 앱입니다.
Swift·SwiftUI·PencilKit으로 직접 만들었고, 모델을 바꿔도 앱을 고치지 않도록 앱과 서버를 REST 계약으로 분리했습니다. 지금은 출시 준비 단계이며, 직접 브랜딩해 인스타그램으로 사전 마케팅을 하고 있습니다.
안녕하세요. 믿을 수 있고 이해할 수 있는 경험을 위한 개발자 석지인입니다.
MBC AI 전략자회사 · 디지털 에셋 마켓 도프켓 운영 · AI개발팀 · 풀스택 개발자 (Rails + React)
지금 보고 계신 이 사이트입니다.
경력·프로젝트·교육을 생성형 AI 연표와 나란히 보여주는 타임라인형 디자인이고, 마우스를 따라다니는 포차코 커서 컴패니언이 숨어 있습니다. Next.js App Router와 TypeScript로 만들었고, 공통 컴포넌트와 자동화(ESLint·Prettier·Husky)로 코드 스타일을 통일했습니다. 이력서(HTML·PDF)도 이 저장소에서 함께 관리합니다. 날짜·수치 같은 사실을 단일 팩트 저장소에 두고 명령 한 번으로 두 문서를 재생성하며, 사이트와 이력서가 어긋나면 테스트가 실패합니다.
실제 개발에 쓰는 Claude Code 설정에서 민감정보를 제외한 공개판입니다.
React 30개·Python 13개 스타일 규칙을 스킬로 정리하고, .tsx·.py 수정 전에 해당 규칙을 먼저 읽도록 CLAUDE.md로 강제했습니다. 규칙은 formkit-react, albaform 등 실제 프로젝트에서 굳어진 패턴을 옮긴 것이라 코드와 가이드가 서로를 검증합니다. 설정 디렉터리 자체를 git 저장소로 두고 launchd가 1시간마다 pull 후 변경분을 자동 커밋·push해, 어느 기기에서든 같은 규칙으로 작업합니다.
# skills/seokjiin-react-style/rules — 30개 중 발췌
## component-variant-dict
변형 스타일은 딕셔너리로 관리한다 — 삼항 중첩 금지
const variantStyles = {
primary: 'bg-brand-500 text-white hover:bg-brand-600',
outline: 'border-2 border-brand-500 text-brand-500',
}
## format-comments
주석은 "what"이 아니라 "why"
// Notion 임시 URL이 1시간 후 만료되어
// 빌드 시점에 다운로드가 필요
const imageUrl = await downloadNotionImage(block.image.url)ML 연구원들과 한 저장소를 쓰며 방송용 CG 합성 도구의 프론트엔드를 재설계했습니다.
도구는 Gradio지만 일의 본질은 같았습니다. 사용자의 작업 흐름을 화면 구조로 번역하는 것. 도구 이름 기준 영문 탭을 실제 작업 순서인 1.마스크 → 2.에셋 → 3.합성으로 재구성하고, '원본+마스크+에셋=합성 결과' 썸네일 타임라인을 신설해 산출물이 다음 단계 어디에 쓰이는지 화면이 안내합니다. UI 용어 한국어화와 방송용 5GB 업로드 대응까지 함께 했습니다.
검색 엔진을 '정보 이용자에게 정보 요구 충족이라는 가치를 주는 제품'으로 정의하고, 40여 개 SEO 기법을 웹 표준·속도·신뢰성으로 묶어 정리한 라이트닝 토크입니다. 크롤링 예산과 서버 비용, 접근성 같은 검색엔진 개발자의 고민에서 거꾸로 출발하면 각 순위 기준의 이유가 보이고, 같은 원리가 LLM 시대의 GEO(Bing 인덱싱, 인용하기 쉬운 구조)로 이어진다는 내용입니다.
도스트11 데브 미팅에서 '알잘딱깔센 개발을 위한 CX 101'을 주제로 발표한 라이트닝 토크입니다. 서버 응답도 서비스직의 응대라는 관점으로, 고객이 부정적으로 반응하는 응답 3가지(손해 입히기, 맥락 무시, 아마추어의 응대)와 도서관 사서의 참고 봉사(무엇을 찾는지 함께 정의하고 단계별로 안내)를 대비했습니다. 좋은 에러 메시지는 그 자체로 DX이자 마케팅이라는 것이 핵심입니다.
AI 검색 최적화 SaaS · 인턴/수습 · 프론트엔드
체인시프트에서 SaaS 사용량 관리 콘솔의 프론트엔드 구조를 정리했습니다.
백엔드에 전달만 하는 Next.js API route 15개를 catch-all 프록시 1개로 대체하고, react-hook-form 기반 공통 Form 컴포넌트(compound 패턴)와 HTTP status 기준 에러 핸들러 1종으로 화면마다 다르던 폼·에러 처리를 통일했습니다. 코드는 비공개이며 요청 주시면 공유드립니다.
// Before — 엔드포인트마다 전달만 하는 route 파일 15개
// app/api/apps/route.ts, app/api/accounts/route.ts, ...
// After — catch-all 프록시 1개로 대체
// app/api/proxy/[...path]/route.ts
export async function GET(
request: NextRequest,
{ params }: { params: { path: string[] } },
) {
const url = new URL(params.path.join('/'), process.env.NEXCA_API_URL)
request.nextUrl.searchParams.forEach((v, k) => url.searchParams.append(k, v))
const response = await fetch(url, {
headers: forwardAuthHeader(request), // 인증 헤더만 선별 전달
})
return NextResponse.json(await response.json(), { status: response.status })
}축구 데이터 올인원 '오코치' · FIFA Preferred Provider(FPP) · 소프트웨어개발팀 · SQA
중대형 제품 배송·설치 매칭 물류 SaaS(OMS/WMS) · 플랫폼기획팀 · SQA 매니저 · CX 매니저
대한민국 대표 통신사 · 출판국 DB센터 · 인물자료 담당
문헌정보학을 전공하고 연합뉴스에서 인물 DB를, 물류 스타트업과 핏투게더에서 QA·CX를 맡았습니다. 응답 양식을 한 페이지로 줄여 응답률을 30% 올리고 용어 사전으로 소통 비용을 줄이면서, 제가 좋아하는 게 정보를 다듬어 사람이 쓰기 쉽게 만드는 일이라는 걸 알았습니다. 다만 QA·CX는 개선을 제안하고 전달하는 자리였고, 그 일을 할수록 직접 만들고 고치는 쪽을 배우고 싶어졌습니다. 코딩은 2020년부터 해 오던 터라 자연스럽게 개발로 방향을 잡았습니다.
문헌정보학은 정보를 분류하고 구조화하는 학문이라, 데이터 모델링과 용어 통일 감각은 오히려 전공에서 왔습니다. 부족한 부분은 직접 구현하며 채웁니다. TrueType 폰트 writer를 순수 Swift로 직접 구현했고, 공통 컴포넌트를 npm 라이브러리(formkit-react)로 배포했습니다. 품질 이론은 ISTQB·CSTS 자격으로 검증받았습니다.
두 회사에서 SQA·CX를 하며 사용자가 어디서 헷갈리고 이탈하는지 직접 지켜봤습니다. 그 경험이 코드에 그대로 남아 있습니다. 에러를 예측 가능한 것(400·422)과 불가능한 것(5xx·네트워크)으로 나눠 정책으로 처리하고, 가상화 같은 성능 전략도 50개 임계처럼 수치 근거를 두고 적용합니다. 이슈 트래커 세팅, 용어 통일, 디자인 시스템 마련도 그때 들인 습관입니다.
MBC AI 전략자회사 도스트11에서 디지털 에셋 마켓 도프켓의 풀스택 개발을 맡고 있습니다. 한국 시장 로컬라이제이션, 상품 대시보드, 블로그 CMS, 결제 UX를 담당했고 첫 B2B 고객사 온보딩도 진행했습니다. 회의에서 당일 제안한 포토부스 기능을 3일 만에 프로토타입으로 만들었고, ML 연구원들과 한 저장소에서 방송용 CG 합성 도구의 UI/UX를 재설계했습니다.
적극적으로, 대신 검증해서 씁니다. 체인시프트에서는 Claude Code로 7일 안에 랜딩 3페이지를 완성했고, 개인 코드 스타일과 작업 규칙을 Claude Code에 주입하는 설정을 공개해 두었습니다. 반대로 채용 과제에서는 AI가 만든 코드를 직접 작성한 코드로 바꿔 에러 처리를 통일하고 그 과정을 분석 문서로 남겼습니다. few-shot 폰트 생성 파이프라인과 ML 모노레포처럼 제품 안의 AI도 다룹니다.
PR 기반으로 작업하고, ESLint·Prettier에 Overcommit·Husky 같은 Git Hook을 더해 코드 품질을 자동 관리합니다. UI 용어 표준화(visits/views → 조회수 등)나 반응형 가이드라인 문서화처럼 코드 밖의 품질도 챙깁니다. 도스트11에서는 연구 코드와 제품 코드가 한 저장소에서 빠르게 자라면서 화면 용어와 에러 메시지의 표기가 제각각이 되었는데, 사용자에게 보이는 텍스트를 한 기준으로 맞추자고 제안하고 화면 라벨부터 백엔드 파일 50여 개의 에러 메시지까지 직접 통일했습니다. 테스트 코드도 함께 작성합니다.