저는 소프트웨어 개발자 이석호입니다. 국내 기업 NextGen, WHOFA와 실리콘밸리 기업 Pulzze Systems에서 주요 제품 개발을 주도했습니다.

학창 시절부터 열정과 도전정신으로 개발에 몰입했습니다. 제가 좋아하는 소프트웨어 개발에서만큼은 누구에게도 지고 싶지 않아 여가 시간까지 줄이며 실력을 쌓았습니다.

소프트웨어에는 한계가 없다고 믿습니다. 불가능해 보이는 문제도 제 기술적 한계를 넘는 과정이라 생각하며, 지금도 그 한계를 돌파하고 있습니다.

저는 실제 제품 개발과 운영 환경에서 성과를 만들어온 개발자입니다. 기술적 한계를 정하지 않는 태도와 끝까지 완성도 있게 제품을 만들어내는 실행력과 끈기로, 맡은 소프트웨어 제품을 주도적으로 완성하고 성과로 증명하겠습니다.

학력

2022.03 ~ 2025.02 인공지능소프트웨어과

대구소프트웨어마이스터고등학교

C언어, Java, 자료구조, 컴퓨터 시스템 일반 등 개발 지식을 학습하고 실서비스 개발 프로젝트에 참여했습니다.

  • 교내 대표와 교육청 대표로 대한민국인재상 후보에 선정되었습니다.
  • ISEF(국제과학기술경진대회) 2022 한국대표단에 선발되어 임베디드시스템 부문 Finalist에 올랐습니다.
  • B1CODE 컨퍼런스 등 교내 개발 세션에서 iOS 및 개발 경험을 발표했습니다.
  • 교내 서비스 개발 팀 Progress 리더로 활동하며 Toongether 프로젝트를 기획, 개발, 배포했습니다.
2017.02 ~ 2018.10 수료

대구교육대학교 정보영재교육원

마인드스톰, C언어, Python, App Inventor 등 개발 기초를 학습했습니다.

  • 기초과정 수료 후 승급하여 심화과정을 수료했습니다.

경력

2026.03 ~ 2026.04

NextGen

Full-stack Developer

차세대 크리에이터 육성 아카데미 플랫폼 Nextgen웹, API, 모바일, 인프라 개발에 참여했습니다.

  • Next.js/Fastify/Expo 기반 monorepo 구조와 개발 환경을 정리했습니다.
  • 강의 수강, 영상 보호, 결제, 사용자 인증, 운영 배포가 연결되는 핵심 제품 흐름을 설계하고 구현했습니다.
  • AWS EC2/ECR, nginx Blue-Green 배포, Vercel prebuilt 배포, Terraform 인프라, GitHub Actions CI/CD를 연결했습니다.
  • 약 1개월 개발 기간 안에 강의 사이트를 출시 가능한 수준으로 완성했습니다.
  • 피크 타임 동시 접속자 1,000명 규모에서도 오류율 0%를 기록했습니다.
  • 서비스 일일 매출 6,000만 원 달성에 크게 기여했습니다.
  • AWS, Vercel, Cloudflare, EAS, SSM, Secrets Manager까지 6개 이상의 운영 계층을 하나의 배포 문서로 정리했습니다.
2025.09 ~ 2026.02

WHOFA

Flutter Developer

팬과 아티스트 경험을 연결하는 WHOFA Flutter 기반 모바일/웹 앱 개발에 참여했습니다.

  • Flutter/Riverpod 기반 기능 개발과 버그 수정을 담당했습니다.
  • 커뮤니티, 프로필, Preplay 상세 화면, iOS 스타일 navigation, 딥링크, 온디바이스 DB, 미디어 처리 영역을 다뤘습니다.
  • 이미지 다운로드, 오디오 첨부 crash, 상대 시간/탭 선택/상태 초기화 버그 등 사용자 경험에 직접 영향을 주는 문제를 해결했습니다.
  • 커뮤니티, 프로필, Preplay, 딥링크, 온디바이스 DB, 미디어 처리 등 6개 이상의 기능 영역을 다뤘습니다.
  • Flutter WebAssembly 빌드 경로까지 포함된 멀티플랫폼 Flutter 프로젝트에서 기여했습니다.
  • crash, navigation, animation, media edge case까지 사용자가 체감하는 완성도를 기준으로 마무리했습니다.
2024.06 ~ 2025.02

Pulzze Systems

Software Engineer Intern Sunnyvale, CA / Seoul, Korea

SaaS 자동화 제품 InteractorConnector UI와 datatype 설명 구조 개선에 참여했습니다.

  • Connector 선택, Action/Authentication Test, 개발자 navigation, Billing 화면 등 반복 사용되는 UI를 개선했습니다.
  • 테스트 결과 갱신 문제와 내부 오류 표시 흐름을 개선해 Connector 개발자가 디버깅하기 쉬운 UX를 만들었습니다.
  • Google, Slack, Salesforce, Notion, HubSpot, Jira, Mailchimp, Microsoft 계열 Connector의 datatype 설명 파일을 작성하고 구조를 정리했습니다.
  • 미국 서니베일과 서울 지사에서 실제 SaaS 제품 개발 흐름을 경험했습니다.
  • 8개 이상 서비스군의 Connector datatype 설명 구조를 다뤘습니다.
  • 인증 테스트, Action Test, Connector 선택, Billing 등 4개 이상의 핵심 관리 화면을 개선했습니다.

수상이력

제 10회 하이톤

우수상

SK Smarteen App+ Challenge

우수상

Fun Hackathon Weekend in Silicon Valley

3위

Apple WWDC Swift Student Challenge

우승

제 9회 하이톤

인프런특별상

교내 알고리즘 대회

은상

SK Smarteen App+ Challenge

최우수상

SW마이스터고 연합 해커톤

AWS기업상

교내 하계 SW 해커톤

대상

Microsoft Hackers Ground

최우수상

Apple WWDC Swift Student Challenge

우승

교내 동계 SW 해커톤

대상

Global Innovator Festa Rookie League

금상

삼성 주니어 SW 창작대회

상생상

국립대구과학관 SW 융합 해커톤

최우수상

대구광역시 ICT 창의성 경진대회

동상

제 3회 한국코드페어 SW공모전

은상

대구교육대학교 C 프로그래밍 경진대회

우수상

프로젝트

회사 프로젝트

4개

Nextgen

차세대 크리에이터 육성 아카데미 플랫폼

개요

Nextgen은 차세대 크리에이터 육성 아카데미 플랫폼입니다. 웹, API, 모바일 앱을 하나의 monorepo에서 관리하고, 결제, 영상, 이메일, SMS, 파일 업로드, 운영 배포까지 포함한 실서비스형 구조로 설계되었습니다.

특히 강의 사이트는 한 달이라는 짧은 개발 기간과 DRM 적용 조건 속에서 실제 매출이 발생하는 운영 서비스로 완성해야 했고, 제품이 사용자에게 처음 닿는 순간의 안정성과 완성도를 끝까지 책임지는 방향으로 개발했습니다.

README 기준 Next.js 웹, Fastify API, Expo 모바일 앱, PostgreSQL/Redis, S3/CloudFront, Mux, TossPayments, Resend, Naver SENS, Terraform, GitHub Actions, Vercel, AWS EC2/ECR 기반 배포 흐름을 포함합니다.

내 역할

  • Next.js/Fastify/Expo 기반 monorepo 구조와 개발 환경을 정리했습니다.
  • API, web, mobile, shared packages가 함께 움직이는 Turborepo 기반 개발 흐름을 구성했습니다.
  • 강의 수강, 영상 보호, 결제, 사용자 인증, 운영 배포가 연결되는 핵심 제품 흐름을 설계하고 구현했습니다.
  • AWS EC2/ECR, nginx Blue-Green 배포, Vercel prebuilt 배포, Terraform 인프라, GitHub Actions CI/CD를 연결했습니다.
  • dev/prod 환경변수, SSM Parameter Store, Secrets Manager, RDS, S3/CloudFront 동기화 흐름을 정리했습니다.

문제와 해결

문제

웹, 모바일, API, 인프라가 한 번에 엮이면 개발 환경과 운영 배포의 source of truth가 쉽게 흐려집니다.

해결

환경별 .env, SSM Parameter Store, EAS profile, Vercel env, AWS Secrets Manager 역할을 분리하고 README에 운영 절차를 문서화했습니다.

문제

오래된 CI run이 늦게 성공하거나 배포 중 마이그레이션이 실패하면 운영 환경이 깨질 수 있습니다.

해결

브랜치별 deploy workflow, concurrency, 최신 변경 검증, migration job 차단, Blue-Green 전환 흐름을 둬 배포 안정성을 높였습니다.

문제

짧은 개발 기간 안에 DRM 적용, 강의 수강 권한, 결제 후 접근, 피크 트래픽 대응을 함께 완성해야 했습니다.

해결

수강 플로우와 영상 보호 정책, 결제 상태, 배포 안정성을 분리해 점검하고, 출시 전후 장애 가능성이 높은 구간을 우선적으로 안정화했습니다.

수치화된 성과

  • 약 1개월 개발 기간 안에 강의 사이트를 출시 가능한 수준으로 완성했습니다.
  • 피크 타임 동시 접속자 1,000명 규모에서도 오류율 0%를 기록했습니다.
  • 서비스 일일 매출 6,000만 원 달성에 크게 기여했습니다.
  • web, api, mobile 3개 앱과 types, utils, api-client, auth, config 등 5개 공유 package를 monorepo에 구성했습니다.
  • GitHub Actions 기준 CI, dev 배포, prod 배포, iOS TestFlight, iOS App Store 후보 배포 workflow를 설계했습니다.
  • AWS, Vercel, Cloudflare, EAS, SSM, Secrets Manager까지 6개 이상의 운영 계층을 하나의 배포 문서로 정리했습니다.

BL Agent

포워딩 업무에서 B/L PDF 문서의 주요 정보를 추출하고 기존 XLS 양식으로 저장하는 데스크톱 앱

2026.06 ~

개요

BL Agent는 포워딩 업무에서 B/L PDF 문서의 주요 정보를 추출하고, 검토 후 기존 .xls 양식으로 저장하는 데스크톱 앱입니다. React 기반 UI와 Tauri/Rust 백엔드를 사용해 데스크톱 앱으로 패키징했고, 문서 목록, 추출 상태, 검토 화면, XLS export 흐름을 하나의 업무 도구로 묶었습니다.

단순 OCR 데모가 아니라 실제 납품 가능한 품질을 목표로, 모델 설정, 추출 상태 표시, 취소/재시작 UX, Windows 설치 패키징까지 다듬었습니다.

내 역할

  • 기존 BL Reader의 제품 정체성을 BL Agent로 전면 전환하고 앱 메타데이터, 릴리즈 산출물, 문서, 앱 저장 키를 정리했습니다.
  • PDF 문서 처리와 필드 검토 UI, 추출 결과 저장, XLS export 흐름을 설계했습니다.
  • Tauri v2 권한, Windows NSIS 설치 파일, macOS 앱 번들 등 데스크톱 배포 품질 이슈를 직접 해결했습니다.
  • 실무자가 이해하기 쉬운 한국어 업무 문구와 처리, 검토, 저장 같은 상태 표현을 분리했습니다.

문제와 해결

문제

사용자가 중단을 눌렀을 때 "취소 요청" 상태로 오래 머무르면 업무 도구로서 신뢰가 떨어졌습니다.

해결

즉시 중단 UX를 우선하고, 재시작 시 보이는 문서 목록은 비우되 문서별 추출 이력은 보존하도록 런타임 상태와 저장 데이터를 분리했습니다.

문제

Tauri v2에서 창의 X 버튼이 닫히지 않는 네이티브 권한 문제가 발생했습니다.

해결

close handler만 보지 않고 capability manifest까지 추적해 core:window:allow-destroy 권한을 추가하는 방식으로 원인을 해결했습니다.

문제

Windows 배포에서 설치 파일 이름, 아이콘, 한국어 설치 UI, NSIS 이미지 경고까지 제품 품질에 영향을 주는 세부 사항이 많았습니다.

해결

릴리즈 workflow와 Tauri bundle 설정을 정리하고, 단일 Windows 설치 파일과 브랜드 이미지가 일관되게 나오도록 패키징 구성을 다듬었습니다.

수치화된 성과

  • 클라이언트사의 직원 6명치 일을 현재까지도 이 프로그램이 수행하고 있습니다.
  • 제품 버전 1.0.x 기준 macOS 앱 번들과 Windows 설치 패키지 산출물을 검증했습니다.
  • React/TypeScript 프론트엔드와 Rust/Tauri 백엔드를 함께 테스트하는 검증 흐름을 운영했습니다.
  • 릴리즈 전 SQLite id 정책, 추출 상태 동기화, 창 닫기 권한, NSIS 패키징 등 여러 배포 차단 이슈를 해결했습니다.

WHOFA

팬과 아티스트 경험을 연결하는 Flutter 기반 모바일/웹 앱

2025.09 ~ 2026.02 주식회사 후파

개요

WHOFA는 팬과 아티스트 경험을 연결하는 Flutter 기반 앱입니다. 모바일과 웹 빌드를 모두 고려하고 있으며, 인증, 커뮤니티, Preplay, 프로필, 보상, 알림, 미디어 처리 등 복합 기능을 가진 서비스입니다.

국내 기업 WHOFA의 주요 제품 개발에 참여하며, 사용자가 앱에서 처음 마주하는 화면 전환, 미디어 경험, 커뮤니티 사용성까지 제품 완성도 관점에서 다뤘습니다.

내 역할

  • Flutter/Riverpod 기반 기능 개발과 버그 수정을 담당했습니다.
  • 커뮤니티, 프로필, Preplay 상세 화면, iOS 스타일 navigation, 딥링크, 온디바이스 DB, 미디어 처리 영역을 다뤘습니다.
  • 이미지 다운로드, 오디오 첨부 crash 수정, 상대 시간/탭 선택/상태 초기화 버그 수정 등 사용자 경험에 직접 영향을 주는 문제를 해결했습니다.
  • iOS blur, refresh indicator, Hero animation 등 플랫폼별 UI 디테일을 개선했습니다.
  • 기능 구현에서 끝내지 않고 crash, navigation, animation, media edge case까지 사용자가 체감하는 완성도를 기준으로 마무리했습니다.

문제와 해결

문제

커뮤니티와 Preplay 기능은 텍스트, 이미지, 오디오, 공유, 딥링크가 함께 움직이기 때문에 상태 관리가 복잡했습니다.

해결

Riverpod provider와 feature 단위 화면 구조를 유지하면서, 온디바이스 DB와 네트워크 mapper, media preprocessor를 분리해 변경 범위를 좁혔습니다.

문제

iOS 스타일 navigation과 Hero animation을 적용하면서 Flutter 기본 동작과 서비스 UX가 충돌하는 지점이 있었습니다.

해결

App router와 화면 전환 구조를 조정하고, 임시 Hero 처리와 blur/refresher 동작을 단계적으로 개선했습니다.

수치화된 성과

  • 커뮤니티, 프로필, Preplay, 딥링크, 온디바이스 DB, 미디어 처리 등 6개 이상의 기능 영역을 다뤘습니다.
  • Flutter WebAssembly 빌드 경로까지 포함된 멀티플랫폼 Flutter 프로젝트에서 기여했습니다.
  • 인증, 커뮤니티, 미디어, 알림, 보상 등 실제 서비스 운영에 필요한 여러 사용자 접점을 한 제품 안에서 다뤘습니다.

Interactor

SaaS 자동화 제품의 Connector UI와 datatype 설명 구조 개선

2024.06 ~ 2025.02 Pulzze Systems, Inc.

개요

Interactor는 여러 SaaS 서비스의 Connector를 연결해 자동화 workflow를 구성하는 제품입니다. 실리콘밸리 기업 Pulzze Systems에서 인턴으로 근무하며 Connector UI 제품의 프론트엔드 디자인과 개발, 테스트 UX 개선, datatype 설명 구조 정비에 참여했습니다.

인턴 기간 동안 미국 서니베일에서 2개월, 서울 지사에서 3개월 근무했습니다.

내 역할

  • Connector 선택, Action/Authentication Test, 개발자 navigation, Billing 화면 등 반복 사용되는 UI를 개선했습니다.
  • 테스트 결과가 새로고침되지 않거나 내부 오류가 명확히 드러나지 않는 문제를 UX 관점에서 개선했습니다.
  • Google, Slack, Salesforce, Notion, HubSpot, Jira, Mailchimp, Microsoft 계열 Connector의 datatype 설명 파일을 작성하고 구조를 정리했습니다.
  • FormData 의존성 추가와 README 정리 등 Connector 개발 경험을 보조하는 작업도 수행했습니다.
  • Connector를 만드는 개발자와 실제 자동화 제품을 운영하는 사용자가 모두 덜 헤매도록, 테스트 화면과 선택 흐름의 마찰을 줄이는 데 집중했습니다.

문제와 해결

문제

Connector 테스트 화면에서 결과가 바로 갱신되지 않거나 실패 원인이 명확하지 않아 개발자가 디버깅하기 어려웠습니다.

해결

Test panel을 컴포넌트로 분리하고, 결과 표시와 내부 오류 처리 흐름을 개선했습니다.

문제

서비스별 datatype 설명 구조가 일관되지 않으면 Connector를 추가할 때 문서와 UI가 함께 흔들립니다.

해결

Gmail, Google Calendar, Google Drive, Google Sheets, Slack, Salesforce, Notion, HubSpot 등 여러 서비스의 datatype 설명 구조를 정비했습니다.

수치화된 성과

  • Connector datatype 설명 작업은 Google, Slack, Salesforce, Notion, HubSpot, Jira, Mailchimp, Microsoft 계열까지 8개 이상 서비스군을 다뤘습니다.
  • 인증 테스트, Action Test, Connector 선택, Billing 등 4개 이상의 핵심 관리 화면을 개선했습니다.
  • 미국 서니베일과 서울 지사에서 총 5개월 동안 실제 SaaS 제품 개발 흐름을 경험했습니다.

팀 프로젝트

4개

Toongether

작가의 플랫폼 의존도를 줄이는 웹툰 자유 연재 서비스

Toongether 스크린샷 1
Toongether 스크린샷 2
Toongether 스크린샷 3
Toongether 스크린샷 4
Toongether 스크린샷 5

개요

Toongether는 웹툰 작가들이 복잡한 계약 절차 없이 자유롭게 웹툰을 연재할 수 있도록 만든 웹/앱 플랫폼입니다. 작가에게는 연재 기회와 자동화된 연재 환경을 제공하고, 독자에게는 장르의 경계가 낮은 작품 탐색과 편리한 열람 환경을 제공하는 것을 목표로 했습니다.

팀은 iOS 1명, Android 1명, 웹 2명, 서버 2명으로 구성되었습니다.

내 역할

  • iOS 애플리케이션 개발과 출시를 담당했습니다.
  • TCA에서 사용할 수 있는 push/pop 기반 navigation 라이브러리 FlowKit을 직접 개발했습니다.
  • 리더 겸 PM으로 팀 리딩, 기획, 디자인, 개발, 배포, 마케팅을 주도했습니다.
  • 주 사용자인 웹툰 작가를 대상으로 테스트와 인터뷰를 진행해 피드백을 제품에 반영했습니다.

문제와 해결

문제

웹툰 탐색 화면은 독자가 빠르게 스크롤하면서도 작품 표지와 회차 정보를 자연스럽게 볼 수 있어야 했습니다.

해결

SwiftUI의 GeometryReader와 DragGesture를 활용해 커스텀 스크롤 바를 구현하고, 모바일 독서 경험에 맞춰 탐색 흐름을 다듬었습니다.

문제

PM과 iOS 개발을 동시에 맡으면서 제품 방향과 구현 속도를 모두 관리해야 했습니다.

해결

작가 인터뷰, 독자 피드백, 수상 대회 일정, 앱 배포 일정을 하나의 우선순위로 묶어 팀의 작업 범위를 조율했습니다.

수치화된 성과

  • SK Smarteen App+ Challenge 2023 최우수상을 수상했습니다.
  • 약 300명의 독자와 10여 명의 작가 피드백을 수용했습니다.
  • iOS, Android, 웹, 서버까지 총 6명 팀에서 리더와 PM 역할을 수행했습니다.
  • FlowKit을 별도 Swift Package로 분리해 Toongether 이후 다른 프로젝트에서도 재사용할 수 있게 했습니다.

DodamDodam

학생과 선생님의 학교생활을 편리하게 만드는 교내 스마트 스쿨 서비스

2023.03 ~ 2024.04 B1ND
DodamDodam 스크린샷 1
DodamDodam 스크린샷 2
DodamDodam 스크린샷 3
DodamDodam 스크린샷 4
DodamDodam 스크린샷 5

개요

DodamDodam은 대구소프트웨어마이스터고 학생과 선생님의 학교생활을 편리하게 만드는 스마트 스쿨 서비스입니다. 급식 조회, 외출/외박, 상벌점 관리, 기상송 신청, 심야 자습 같은 오프라인 행정/생활 절차를 웹과 앱으로 옮겼습니다.

팀은 iOS 5명, Android 5명, 웹 6명, 서버 4명 규모였습니다.

내 역할

  • DodamDodam iOS 애플리케이션 개발과 출시를 담당했습니다.
  • 약 1년 동안 유지보수하며 심야 자습 기능과 급식 정보 제공 위젯을 포함한 10개 버전을 출시했습니다.
  • Android Chapter와 협업해 모바일 앱 UI 디자인 통일을 추진했습니다.
  • PM으로 프로젝트 관리, 회의, 기록, 개발 Chapter 간 협업을 주도했습니다.

문제와 해결

문제

학생과 교직원이 매일 사용하는 서비스이기 때문에 작은 버그도 실제 학교생활에 영향을 줄 수 있었습니다.

해결

기능 출시 전 사용 흐름을 반복 점검하고, 유지보수 기간 동안 안정성과 UX 일관성을 우선했습니다.

문제

iOS와 Android가 따로 개발되면 같은 기능도 서로 다른 사용 경험으로 느껴질 수 있었습니다.

해결

모바일 앱의 디자인 언어와 화면 구조를 맞추기 위해 Android Chapter와 협업했고, 추후 유지보수를 쉽게 하기 위해 디자인 시스템 제작을 추진했습니다.

수치화된 성과

  • 전교생 약 200명과 교직원 약 34명이 매일 사용하는 서비스 개발에 참여했습니다.
  • 1년간 유지보수하며 10개의 iOS 버전을 출시했습니다.
  • iOS 5명, Android 5명, 웹 6명, 서버 4명 규모의 다분야 팀에서 PM 역할을 수행했습니다.
  • 교내 학생들의 개발 역량에 긍정적 영향을 주기 위해 소스 코드 공개 방향을 결정했습니다.

Love & Code

새내기 개발자들의 첫 협업 경험을 담은 비주얼 노벨 게임

Love & Code 스크린샷 1
Love & Code 스크린샷 2

개요

Love & Code는 새내기 개발자들의 첫 협업 경험을 가볍게 즐길 수 있게 만든 비주얼 노벨 게임입니다. 실제 소프트웨어마이스터고 재학생과 개발자 지망생의 경험에서 출발해, 현실 기반 스토리와 캐릭터 페르소나 AI 채팅을 결합했습니다.

팀은 개발자 3명과 일러스트레이터 2명으로 구성되었습니다.

내 역할

  • Android, iOS, Desktop을 하나의 코드베이스로 개발하기 위해 Flutter 전환을 주도했습니다.
  • 비주얼 노벨 스토리 표현을 위한 Story 포맷과 라이브러리를 직접 설계했습니다.
  • GPT-4o mini와 Ktor를 활용한 캐릭터 페르소나 AI 채팅 기능을 설계하고 개발했습니다.
  • PM으로 팀 리딩, 기획, 디자인, 개발, 베타 테스트, 마케팅을 주도했습니다.

문제와 해결

문제

초기에는 Kotlin Multiplatform과 Compose Multiplatform으로 시작했지만, 게임 UI와 다중 플랫폼 배포를 빠르게 안정화하기 어려웠습니다.

해결

Flutter로 전환해 Android, iOS, Desktop을 하나의 코드베이스로 관리하고, 게임 화면 구현 속도를 높였습니다.

문제

일반 비주얼 노벨과 차별화하려면 사용자가 캐릭터와 직접 상호작용하는 경험이 필요했습니다.

해결

캐릭터 성격과 진행 상황을 반영한 페르소나 AI 채팅을 붙여, 정해진 대사 외에도 몰입감을 주는 대화를 만들었습니다.

수치화된 성과

  • SK Smarteen App+ Challenge 2024 우수상을 수상했습니다.
  • 개발자 3명, 일러스트레이터 2명 규모의 팀에서 PM과 핵심 클라이언트 개발을 동시에 수행했습니다.
  • KMP/Compose 기반 초기 구조를 Flutter 단일 코드베이스로 전환해 Android, iOS, Desktop 개발 범위를 통합했습니다.
  • Story 포맷과 AI 채팅 기능을 통해 일반 비주얼 노벨과 다른 상호작용 기능을 구현했습니다.

Allermi

알레르기 정보를 바탕으로 안전한 식품 선택을 돕는 서비스

2022.07 ~ 2022.09 Allermi Project 삼성 주니어 SW 창작대회 2022 상생상

개요

Allermi는 사용자의 알레르기 정보를 바탕으로 식품 선택 과정에서 위험 요소를 확인할 수 있도록 돕는 서비스입니다. 알레르기 정보가 익숙하지 않은 사용자도 식품과 알레르기 유발물질을 쉽게 확인할 수 있게 만드는 것이 목표였습니다.

Allermi Project 조직에는 iOS, Android, Server repo가 분리되어 있으며, 삼성 주니어 SW 창작대회 2022에서 상생상을 수상했습니다.

내 역할

  • iOS 앱 개발에 참여해 사용자가 알레르기 정보를 확인하고 관리하는 흐름을 구현했습니다.
  • 모바일에서 빠르게 확인할 수 있는 화면 구조와 알레르기 정보 표시 방식을 설계했습니다.
  • 서버/Android 팀과 API와 화면 요구사항을 맞추며 팀 프로젝트 구조를 경험했습니다.

문제와 해결

문제

알레르기 정보는 사용자의 건강과 연결되기 때문에 단순한 추천 앱처럼 모호하게 표현하면 안 됩니다.

해결

위험 여부를 사용자의 알레르기 설정과 식품 정보에 기반해 명확히 보여주는 방향으로 화면을 설계했습니다.

문제

해커톤/공모전 프로젝트는 짧은 시간 안에 문제 정의, 기능 구현, 발표 자료까지 완성해야 합니다.

해결

iOS, Android, Server repo를 분리하고 각 담당 영역을 명확히 나눠 병렬로 개발했습니다.

수치화된 성과

  • 삼성 주니어 SW 창작대회 2022 상생상을 수상했습니다.
  • iOS, Android, Server 3개 repo로 역할을 분리한 팀 프로젝트를 수행했습니다.
  • 삼성SDS 공개 자료 기준 2022년 대회 본선 60팀 중 수상팀으로 선정되었습니다.

개인 프로젝트

7개

Desktop Fushi

'초 가구야 공주'의 마스코트 캐릭터 'FUSHI'를 바탕화면 펫으로 만드는 프로젝트

2026.06 ~
Desktop Fushi 스크린샷 1

개요

Desktop Fushi는 캐릭터 FUSHI를 바탕화면 위에서 살아 움직이는 데스크톱 펫으로 구현하는 개인 프로젝트입니다. 일반 앱 창 안에 캐릭터를 넣는 것이 아니라, OS별 그래픽 API와 윈도우 레이어링을 활용해 사용자의 작업 공간 위에 자연스럽게 배치하는 것을 목표로 합니다.

내 역할

  • Windows와 macOS를 모두 고려해 데스크톱 오버레이 구조를 설계했습니다.
  • Windows에서는 Direct2D, macOS에서는 Metal 기반 렌더링을 사용하는 방향으로 실험했습니다.
  • 투명 창, 클릭 통과, 애니메이션 프레임 렌더링, 화면 경계 처리 같은 데스크톱 펫 특유의 UX를 검토했습니다.

문제와 해결

문제

데스크톱 펫은 일반 GUI 앱과 달리 배경 투명도, 입력 이벤트, 창 레벨, 렌더링 타이밍이 모두 OS별로 다릅니다.

해결

공통 로직은 Rust로 두고, 플랫폼별 그래픽/윈도우 처리는 얇은 백엔드로 분리하는 구조를 선택했습니다.

문제

사용자의 작업을 방해하지 않으면서 캐릭터가 존재감을 가져야 합니다.

해결

클릭 통과와 상호작용 가능 상태를 분리하고, 애니메이션과 위치 업데이트를 UI 스레드에 과도하게 묶지 않는 방향으로 설계했습니다.

수치화된 성과

  • Windows와 macOS 양쪽 렌더링 경로를 고려한 멀티백엔드 구조를 초기 설계했습니다.
  • Direct2D와 Metal을 같은 프로젝트 안에서 다룰 수 있도록 기술 스택을 정리했습니다.
  • 현재 진행 중 프로젝트로, 성능 수치보다 플랫폼별 기술 검증을 우선하고 있습니다.

Windows 11 for Galaxy Tab 6 Lite

Galaxy Tab 6 Lite(Exynos 9611)에 Windows 11 on ARM을 설치하는 프로젝트

2026.05 ~

개요

Windows 11 for Galaxy Tab 6 Lite는 Exynos 9611 기반 Galaxy Tab S6 Lite에 Windows 11 on ARM을 구동하기 위한 포팅 프로젝트입니다. Android 태블릿의 부트 체인, ACPI 테이블, 드라이버, 디바이스 트리 성격의 정보를 분석해 Windows가 인식할 수 있는 형태로 맞추는 저수준 시스템 프로젝트입니다.

내 역할

  • 대상 디바이스의 하드웨어 구성과 부팅 흐름을 분석했습니다.
  • ACPI ASL, ARM64 어셈블리, C, Python 도구를 조합해 Windows on ARM 포팅에 필요한 실험을 진행했습니다.
  • ADB와 커스텀 recovery 환경을 사용해 반복적으로 이미지와 설정을 검증하는 흐름을 구성했습니다.

문제와 해결

문제

Android 기기에서 Windows를 부팅하려면 PC와 다른 펌웨어/ACPI/드라이버 계층을 Windows가 이해하는 형태로 맞춰야 합니다.

해결

하드웨어 정보를 ACPI ASL로 표현하고, 부팅과 장치 초기화에 필요한 최소 경로부터 하나씩 검증하는 방식으로 접근했습니다.

문제

부팅 실패 원인이 커널, ACPI, 저장소, 디스플레이, 드라이버 중 어디인지 바로 드러나지 않습니다.

해결

ADB, recovery, 로그 가능한 중간 단계, 작은 단위의 이미지 변경을 사용해 실패 지점을 좁히는 반복 디버깅 흐름을 만들었습니다.

수치화된 성과

  • Exynos 9611 기반 ARM64 태블릿이라는 비표준 대상에서 Windows 11 on ARM 부팅 가능성을 검증하는 저수준 실험을 진행했습니다.
  • C, ARM64 Assembly, ACPI ASL, Python, WDK, ADB를 함께 사용하는 포팅 작업 흐름을 정리했습니다.
  • 현재 진행 중 프로젝트로, 완성 기능보다 부트/장치 인식 단계별 검증을 우선하고 있습니다.

App Pilot

터치와 드래그만으로 실제 iOS 앱을 만들 수 있는 SwiftUI 기반 WYSIWYG 노코드 앱 개발 서비스

App Pilot 스크린샷 1
App Pilot 스크린샷 2
App Pilot 스크린샷 3

개요

App Pilot은 터치와 드래그만으로 컴포넌트를 조합해 실제 iOS 앱을 만들 수 있는 노코드 앱 개발 서비스입니다. Apple WWDC Swift Student Challenge 2024 우승작으로 선정되었고, Swift Playgrounds 환경에서 실행되는 WYSIWYG 편집기를 목표로 만들었습니다.

단순히 화면을 꾸미는 데서 끝내지 않고, 사용자가 구성한 화면 구조를 SwiftUI 코드와 동일한 개념으로 표현하고 다시 앱으로 추출할 수 있게 설계했습니다.

Allergist에 이어 두 번째 Apple Swift Student Challenge 우승으로 이어진 프로젝트이며, 이 성과를 계기로 WWDC24 기간 Apple Park에 초대받았습니다.

내 역할

  • 전체 앱 구조와 편집기 UX를 설계하고 SwiftUI로 구현했습니다.
  • Image, VStack, Text 등 주요 UI 컴포넌트마다 대리자 클래스를 만들어 작업물을 렌더링했습니다.
  • Xcode에서 열 수 있는 .swiftpm 구조를 분석해, 사용자가 만든 앱을 동일한 형태로 내보내는 Export 기능을 구현했습니다.
  • 미리보기와 코드 추출 흐름을 연결해 "만든 화면이 실제 앱이 된다"는 경험을 완성했습니다.

문제와 해결

문제

SwiftUI의 선언형 View 구조를 사용자의 드래그 기반 편집 작업물로 다시 표현해야 했습니다.

해결

모든 컴포넌트를 내부 모델과 대리자 클래스로 분리해, 편집기 상태와 렌더링 결과를 동기화했습니다.

문제

Swift Playgrounds 안에서 생성한 결과물을 Xcode 프로젝트처럼 다시 열 수 있어야 했습니다.

해결

.swiftpm 패키지 구조를 분석하고, 사용자의 View 트리를 Swift 파일과 리소스 구조로 변환하는 Export 파이프라인을 만들었습니다.

수치화된 성과

  • WWDC Swift Student Challenge 2024 우승작으로 선정되었습니다.
  • Apple Swift Student Challenge 2회 연속 우승을 달성했습니다.
  • Swift Playgrounds 단일 프로젝트 안에서 편집, 미리보기, 코드 추출까지 하나의 흐름으로 연결했습니다.
  • 컴포넌트별 대리자 구조를 도입해 렌더링과 Export 로직을 분리했고, 새 컴포넌트 추가 비용을 낮췄습니다.

Allergist

사용자의 알레르기 정보에 맞춰 식품 알레르기 유발물질을 확인하는 iOS 서비스

Allergist 스크린샷 1
Allergist 스크린샷 2
Allergist 스크린샷 3

개요

Allergist는 사용자의 알레르기 정보에 기반해 식품 알레르기 유발물질을 확인할 수 있게 만든 iOS 서비스입니다. 식품 알레르기로 불편을 겪었던 개인 경험에서 출발했고, Apple WWDC Swift Student Challenge 2023 우승작으로 선정되었습니다.

미국 현지 공모전 맥락에 맞춰 알레르기 유발물질 분류 기준과 모든 문자열을 영어로 구성했습니다.

내 역할

  • 서비스 아이디어, 데이터 구조, 검색 UX, 설정 화면을 모두 설계하고 SwiftUI로 구현했습니다.
  • 사용자가 선택한 알레르기 항목을 기준으로 식품 목록을 탐색하고 위험 항목을 빠르게 확인할 수 있게 만들었습니다.
  • 오프라인 Swift Playgrounds 환경에서도 동작하도록 식품 데이터를 앱 내부에 포함했습니다.
  • 데이터 용량 제한 안에서 검색 가능한 형태로 식품 정보를 로딩하는 최적화 작업을 수행했습니다.

문제와 해결

문제

오프라인 환경과 25MB 용량 제한 안에서 558,728건의 식품 데이터를 다뤄야 했습니다.

해결

plist 기반 저장과 데이터 클러스터링을 적용해 초기 로딩을 약 1분에서 약 3초로 단축했습니다.

문제

알레르기 정보는 단순 검색보다 사용자의 개인 설정과 함께 해석되어야 했습니다.

해결

검색 화면과 알레르기 설정 화면을 분리하고, 식품별 위험 정보를 사용자 설정에 맞춰 강조했습니다.

수치화된 성과

  • 558,728건의 식품 데이터를 앱 내부에서 다뤘습니다.
  • 초기 데이터 로딩 시간을 약 1분에서 약 3초로 줄였습니다.
  • WWDC Swift Student Challenge 2023 우승작으로 선정되었습니다.
  • 이후 App Pilot까지 이어지는 Apple Swift Student Challenge 2회 연속 우승의 첫 번째 프로젝트가 되었습니다.

FlowKit

SwiftUI를 위한 push/pop 기반 Navigation 라이브러리

2023.12 ~ 2025.12

개요

FlowKit은 SwiftUI에서 UIKit의 navigation stack처럼 push, pop, popToRoot, replace, sheet, alert 등을 명확하게 다룰 수 있게 만든 navigation 라이브러리입니다. Toongether 프로젝트에서 복잡한 화면 전환을 안정적으로 처리하기 위해 시작했고, 이후 다른 프로젝트에서도 재사용할 수 있는 Swift Package로 정리했습니다.

내 역할

  • SwiftUI의 선언형 View 구조와 imperative navigation 요구사항 사이의 간극을 해결하는 API를 설계했습니다.
  • iOS 13 이상에서 사용할 수 있도록 SwiftUI와 UINavigationController를 조합했습니다.
  • TCA(The Composable Architecture) reducer 내부에서도 사용할 수 있게 dependency 기반 사용 예시를 만들었습니다.
  • 프로젝트 내부 구현체가 아니라 외부 패키지로 쓸 수 있도록 README, 설치 방법, 예제를 정리했습니다.

문제와 해결

문제

SwiftUI 초기 버전의 NavigationLink만으로는 앱 전역에서 원하는 시점에 push/pop을 제어하기 어렵습니다.

해결

FlowPresenter, @Flow, FlowProvider를 통해 View와 navigation controller 사이의 책임을 분리했습니다.

문제

TCA 기반 프로젝트에서는 View 바깥의 reducer에서도 navigation side effect를 다룰 필요가 있었습니다.

해결

swift-dependencies 스타일의 dependency 주입으로 reducer에서 FlowProvider를 사용할 수 있게 설계했습니다.

수치화된 성과

  • iOS 13 이상을 지원하는 Swift Package로 정리했습니다.
  • push, pop, popToRoot, replace, reload, sheet, alert 등 7개 이상의 핵심 navigation 동작을 단일 API로 묶었습니다.
  • 교내에서 3개 이상의 프로젝트가 FlowKit을 채택했습니다.

Story

XML 기반 비주얼 노벨 스토리 포맷과 파서, StoryMaker GUI 편집기

2024.07 ~ 2025.12
Story 스크린샷 1

개요

Story는 비주얼 노벨 게임의 스토리, 대사, 배경, 효과, 분기 같은 연출 정보를 XML 기반 포맷으로 표현하고 처리하기 위한 라이브러리입니다. Love & Code에서 독자적인 스토리 표현과 특수 효과를 다루기 위해 만들었고, StoryMaker GUI 편집기를 통해 사람이 직접 편집할 수 있는 workflow까지 확장했습니다.

내 역할

  • 비주얼 노벨에 필요한 스토리 명령과 장면 정보를 Story XML 포맷으로 정의했습니다.
  • XML 파일을 파싱하고 게임 런타임에서 사용할 수 있는 구조로 처리하는 라이브러리를 만들었습니다.
  • StoryMaker 데스크톱 GUI 편집기를 Flutter로 구현해 작가와 개발자가 XML을 직접 손으로 수정하지 않아도 되게 했습니다.
  • Love & Code의 게임 진행, 특수 효과, 페르소나 대화 흐름과 연결될 수 있는 형태로 설계했습니다.

문제와 해결

문제

비주얼 노벨은 단순 대사 목록이 아니라 캐릭터, 배경, 효과, 분기, 진행 상태가 함께 움직입니다.

해결

스토리 데이터를 XML 기반 구조로 분리해 콘텐츠와 렌더링 로직을 나눴습니다.

문제

XML 포맷은 개발자에게는 명확하지만, 콘텐츠 작성자가 직접 편집하기에는 부담이 큽니다.

해결

StoryMaker 편집기를 만들어 GUI에서 장면과 명령을 조작하고 결과를 XML로 저장할 수 있게 했습니다.

수치화된 성과

  • Love & Code에서 실제 게임 스토리 처리에 사용되는 전용 포맷으로 설계했습니다.
  • 라이브러리와 GUI 편집기를 함께 만들어 포맷 설계, 파싱, 편집 workflow를 한 번에 검증했습니다.
  • 작은 기능이라도 완성 가능한 단위로 끝까지 구현하며 게임 개발 생산성을 높였습니다.

Amaze

Rust로 직접 구현하는 멀티플랫폼 AI-friendly 게임 엔진

2026.05 ~

개요

Amaze는 Rust 기반의 멀티플랫폼 게임 엔진입니다. README 기준으로 렌더링 HAL, 오디오 HAL, 물리, 네트워킹, 텍스트 셰이핑, ICU i18n, OpenXR, MCP 서버, 셰이더 컴파일러까지 자체 구현 범위로 잡고 있습니다.

목표는 단일 소스 트리에서 macOS, iOS, Windows, Linux, Android, Web을 지원하고, AI agent가 엔진 내부를 다룰 수 있도록 MCP와 SKILL bundle을 일급 기능으로 제공하는 것입니다.

내 역할

  • 프로젝트의 기술 방향과 workspace 구조를 설계했습니다.
  • 엔진, 플랫폼, 백엔드, foundation crate를 분리해 기능 확장이 가능한 구조를 만들었습니다.
  • 렌더링, 오디오, 물리, XR, 네트워킹, MCP tooling의 구현 범위와 계획 기능을 README와 문서에 명확히 정리했습니다.
  • AI agent가 이해할 수 있는 문서, 예제, skill bundle 중심의 개발 경험을 설계했습니다.

문제와 해결

문제

wgpu, winit, Bevy, Rapier, SDL 같은 큰 하위 런타임에 의존하지 않는 엔진은 구현 범위가 쉽게 흐려집니다.

해결

엔진 코어, 플랫폼 런타임, GPU/audio 백엔드, foundation 기능을 workspace 레벨에서 분리하고, 계획 기능과 현재 scaffold 기능을 README에서 구분했습니다.

문제

게임 엔진은 사람만 쓰는 SDK가 아니라 AI agent도 다룰 수 있어야 했습니다.

해결

MCP live tooling, machine-readable docs, SKILL bundle을 제품 범위에 포함해 엔진 조작과 문서 탐색을 자동화 가능한 작업으로 정의했습니다.

수치화된 성과

  • README 기준 6개 OS 런타임과 5개 GPU 백엔드, 5개 오디오 백엔드를 목표 플랫폼 매트릭스로 정리했습니다.
  • 예제 22개와 AI agent용 skill bundle을 포함한 workspace 구조를 설계했습니다.
  • Determinism, XR, world streaming, networking, MCP tooling 등 대형 엔진 기능을 crate 단위로 나눠 장기 구현 가능한 구조를 만들었습니다.

자격 및 점수

정보처리산업기사

합격 한국산업인력공단

TOEIC

815점 (LC 440, RC 375) ETS

TOEIC Bridge

100점 (만점) ETS

TOPCIT

570점 정보통신기획평가원

Microsoft AI-900

합격 Microsoft

DIAT 스프레드시트

고급 한국정보통신진흥협회

ITQ 한글파워포인트

A 한국생산성본부

GTQ 그래픽기술자격

2급 한국생산성본부