저는 소프트웨어 개발자 이석호입니다. 국내 기업 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·모바일 앱과 AWS 운영 환경을 1인 개발 체제로 구축했습니다.

  • Next.js·Fastify·Expo 기반 모노레포 구조와 개발 환경을 구축했습니다.
  • 강의 수강, 영상 보호, 결제, 사용자 인증, 운영 배포가 연결되는 핵심 제품 흐름을 설계하고 구현했습니다.
  • AWS EC2·ECR, nginx 블루-그린 배포, Vercel 사전 빌드 배포, 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에서 Swift 기반 iOS 기능을 개발·유지보수하고 Flutter 전환을 주도했습니다.

  • Swift로 iOS 앱의 프로필·커뮤니티 신규 기능을 개발하고 기존 기능을 유지보수했습니다.
  • Flutter·Riverpod 기반 앱 전환을 주도하고 화면·상태 구조, 내비게이션, 딥링크, 온디바이스 DB를 구현했습니다.
  • 이미지 다운로드 오류, 오디오 첨부 크래시, 상대 시간·탭 선택·상태 초기화 오류를 수정했습니다.
  • 4명 규모 제품팀에서 기존 iOS 앱의 Flutter 전환을 주도했습니다.
  • Swift 기반 프로필·커뮤니티 신규 기능을 구현하고 기존 기능을 유지보수했습니다.
  • 크래시·내비게이션·애니메이션·미디어 예외 상황까지 확인하며 기능을 마무리했습니다.
2024.06 ~ 2025.02

Pulzze Systems

Software Engineer Intern Sunnyvale, CA / Seoul, Korea

SaaS 자동화 제품 InteractorConnector UI 프론트엔드 개발을 담당했습니다.

  • Phoenix LiveView와 JavaScript로 Connector 선택, Action Test·Authentication Test, 개발자용 내비게이션, Billing 화면을 구현했습니다.
  • 테스트 결과 갱신과 내부 오류 표시 흐름을 수정해 Connector 개발자가 실패 원인을 바로 확인할 수 있게 했습니다.
  • Google·Slack·Salesforce·Notion·HubSpot·Jira·Mailchimp·Microsoft 계열 Connector의 데이터 타입 설명 파일을 작성하고 구조를 정리했습니다.
  • 미국 서니베일과 서울 지사에서 실제 SaaS 제품 개발 흐름을 경험했습니다.
  • 8개 이상 서비스군의 Connector 데이터 타입 설명 파일을 정리했습니다.
  • 인증 테스트, Action Test, Connector 선택, Billing 등 4개 이상의 핵심 관리 화면을 개선했습니다.

수상이력

제 10회 하이톤

우수상

SK Smarteen App+ Challenge

우수상

Fun Hackathon Weekend in Silicon Valley

3위

Apple WWDC Swift Student Challenge

Winner

제 9회 하이톤

인프런 특별상

교내 알고리즘 대회

은상

SK Smarteen App+ Challenge

최우수상

SW마이스터고 연합 해커톤

AWS 기업상

교내 하계 SW 해커톤

대상

Microsoft Hackers Ground

최우수상

Apple WWDC Swift Student Challenge

Winner

교내 동계 SW 해커톤

대상

Global Innovator Festa Rookie League

금상

삼성 주니어 SW 창작대회

상생상

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

최우수상

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

동상

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

은상

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

우수상

프로젝트

회사 프로젝트

4개

NextGen

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

개요

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

강의 사이트는 약 1개월의 개발 기간과 DRM 적용 조건 안에서 실제 운영 가능한 상태로 출시해야 했습니다. 결제부터 수강 권한 부여, DRM 영상 재생까지 사용자가 거치는 구간을 나눠 점검했습니다.

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 기반 모노레포 구조와 개발 환경을 구축했습니다.
  • API·웹·모바일 앱과 공유 패키지를 관리하는 Turborepo 기반 개발 흐름을 구성했습니다.
  • 강의 수강, 영상 보호, 결제, 사용자 인증, 운영 배포가 연결되는 핵심 제품 흐름을 설계하고 구현했습니다.
  • AWS EC2·ECR, nginx 블루-그린 배포, Vercel 사전 빌드 배포, Terraform 인프라, GitHub Actions CI/CD를 구성했습니다.
  • 개발·운영 환경변수, SSM Parameter Store, Secrets Manager, RDS, S3·CloudFront 동기화 흐름을 정리했습니다.

문제와 해결

문제

웹·API·모바일·인프라에 환경변수와 배포 설정이 분산되어 설정 기준을 추적하기 어려웠습니다.

해결

환경별 .env, SSM Parameter Store, EAS 프로필, Vercel 환경변수, AWS Secrets Manager의 용도를 구분하고 README에 운영 절차를 정리했습니다.

문제

이전 CI 실행이 뒤늦게 성공하거나 배포 중 마이그레이션이 실패하면 잘못된 버전이 운영 환경에 반영될 수 있었습니다.

해결

브랜치별 배포 워크플로, 동시 실행 제한, 최신 커밋 검증, 마이그레이션 실패 시 배포 중단, 블루-그린 전환 흐름을 구성했습니다.

문제

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

해결

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

수치화된 성과

  • 약 1개월의 개발 기간 안에 강의 사이트를 출시했습니다.
  • 피크 타임 동시 접속자 1,000명 규모에서도 오류율 0%를 기록했습니다.
  • 일일 최대 매출 약 6,000만 원 규모의 서비스를 개발·운영했습니다.
  • web, api, mobile 3개 앱과 types, utils, api-client, auth, config 등 5개 공유 package를 monorepo에 구성했습니다.
  • GitHub Actions에서 CI·개발 배포·운영 배포·iOS TestFlight·App Store 제출 후보 빌드 워크플로를 설계했습니다.
  • 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

Swift 기반 iOS 기능 개발·유지보수와 Flutter 전환을 주도한 팬·아티스트 서비스

2025.09 ~ 2026.02 주식회사 후파

개요

WHOFA는 팬과 아티스트를 연결하는 서비스입니다. Swift로 iOS 앱의 프로필·커뮤니티 신규 기능을 개발하고 기존 기능을 유지보수했으며, 이후 Flutter 기반 앱으로의 전환을 주도했습니다. 인증·커뮤니티·Preplay·프로필·보상·알림·미디어 처리 기능을 다뤘습니다.

국내 기업 WHOFA에서 iOS 기능 개발부터 Flutter 전환까지 맡았고, 화면 전환·미디어 처리·커뮤니티 사용성과 관련된 오류를 수정했습니다.

내 역할

  • Swift로 iOS 앱의 프로필·커뮤니티 신규 기능을 개발하고 기존 기능을 유지보수했습니다.
  • 기존 iOS 앱의 Flutter·Riverpod 전환을 주도하고 화면·상태 구조를 구현했습니다.
  • Preplay 상세 화면, iOS 스타일 내비게이션, 딥링크, 온디바이스 DB, 미디어 처리 영역을 다뤘습니다.
  • 이미지 다운로드 오류, 오디오 첨부 크래시, 상대 시간·탭 선택·상태 초기화 오류를 수정했습니다.
  • iOS 블러·새로고침 표시·Hero 애니메이션 등 플랫폼별 UI 동작을 개선했습니다.

문제와 해결

문제

기존 iOS 기능을 Flutter로 옮기면서 화면 상태·딥링크·온디바이스 데이터·미디어 처리 구조를 함께 재구성해야 했습니다.

해결

Riverpod 상태와 기능 단위 화면 구조를 정리하고 온디바이스 DB·네트워크 매핑·미디어 전처리 영역을 나눠 변경 범위를 좁혔습니다.

문제

iOS 스타일 내비게이션과 Hero 애니메이션을 적용할 때 Flutter 기본 동작과 맞지 않는 부분이 있었습니다.

해결

앱 라우터와 화면 전환 구조를 조정하고 Hero 애니메이션·블러·새로고침 동작을 단계별로 점검했습니다.

수치화된 성과

  • 4명 규모 제품팀에서 기존 iOS 앱의 Flutter 전환을 주도했습니다.
  • Swift 기반 프로필·커뮤니티 신규 기능을 구현하고 기존 기능을 유지보수했습니다.
  • 인증, 커뮤니티, 미디어, 알림, 보상 등 실제 서비스 운영에 필요한 여러 사용자 접점을 한 제품 안에서 다뤘습니다.

Interactor

SaaS 자동화 제품의 Connector UI 프론트엔드 개발과 데이터 타입 설명 파일 정리

2024.06 ~ 2025.02 Pulzze Systems, Inc.

개요

Interactor는 여러 SaaS 서비스의 Connector를 연결해 자동화 워크플로를 만드는 제품입니다. 실리콘밸리 기업 Pulzze Systems에서 인턴으로 근무하며 Connector UI 프론트엔드 개발을 담당했고, 테스트 화면과 데이터 타입 설명 파일을 정리했습니다.

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

내 역할

  • Connector 선택, Action Test·Authentication Test, 개발자용 내비게이션, Billing 화면 등 반복 사용되는 UI를 개선했습니다.
  • 테스트 결과가 갱신되지 않거나 내부 오류가 명확히 표시되지 않는 문제를 수정했습니다.
  • Google·Slack·Salesforce·Notion·HubSpot·Jira·Mailchimp·Microsoft 계열 Connector의 데이터 타입 설명 파일을 작성하고 구조를 정리했습니다.
  • FormData 의존성 추가와 README 정리 등 Connector 개발 경험을 보조하는 작업도 수행했습니다.
  • Connector 개발자와 자동화 제품 사용자가 필요한 정보를 바로 확인할 수 있도록 테스트 화면과 선택 흐름을 정리했습니다.

문제와 해결

문제

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

해결

테스트 패널을 별도 컴포넌트로 분리하고 결과 갱신과 내부 오류 표시 흐름을 수정했습니다.

문제

서비스별 데이터 타입 설명 형식이 달라 Connector를 추가할 때 문서와 UI 표기를 일관되게 유지하기 어려웠습니다.

해결

Gmail·Google Calendar·Google Drive·Google Sheets·Slack·Salesforce·Notion·HubSpot 등 여러 서비스의 데이터 타입 설명 파일을 같은 기준으로 정리했습니다.

수치화된 성과

  • Connector 데이터 타입 설명 작업은 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·서버 저장소가 분리되어 있으며, 삼성 주니어 SW 창작대회 2022에서 상생상을 수상했습니다.

내 역할

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

문제와 해결

문제

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

해결

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

문제

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

해결

iOS·Android·서버 저장소를 분리하고 각 담당 영역을 나눠 병렬로 개발했습니다.

수치화된 성과

  • 삼성 주니어 SW 창작대회 2022 상생상을 수상했습니다.
  • iOS·Android·서버로 역할을 나눠 병렬로 개발했습니다.
  • 삼성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 앱을 만들 수 있는 노코드 앱 개발 서비스입니다. **Swift Student Challenge Winner, 2024**로 선정되었고, Swift Playgrounds 환경에서 실행되는 WYSIWYG 편집기를 목표로 만들었습니다.

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

Allergist에 이어 2년 연속 Swift Student Challenge Winner로 선정된 프로젝트이며, 이 성과를 계기로 WWDC24 기간 Apple Park에 초대받았습니다.

내 역할

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

문제와 해결

문제

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

해결

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

문제

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

해결

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

수치화된 성과

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

Allergist

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

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

개요

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

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

내 역할

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

문제와 해결

문제

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

해결

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

문제

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

해결

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

수치화된 성과

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

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급 한국생산성본부