개발자 김준환 포트폴리오

운영 URL: https://tetonam.co.kr/portfolio

경력 요약

CMES

2025.05.19 ~ 2026.01.07 (8개월)

  • 팔레타이징 물류 자동화(10인 팀) 백엔드 단독 담당
  • ZeroMQ·State Machine·WebSocket 기반 공정 허브 구현
  • Linux/Windows 멀티프로세스 DB commit 장애 원인 분석 및 해결

SIR소프트

2023.12.04 ~ 2025.04.30 (1년 5개월)

  • AI Hub 데이터 3,000+건 파이프라인 단독 구축
  • 그누보드 모바일 앱 단독 개발 및 Google Play 배포
  • 그누보드6 FastAPI 커넥션 누수 장애 해결 및 구조 개선

리눅스긱

2022.08.29 ~ 2023.11.30 (1년 3개월)

  • RealLinux: 동영상 보안·결제·대량메일 등 핵심 기능 구현
  • Git Rainbow: ORM 최적화로 4~5초 → 100~300ms 개선
  • OSS 기사 스크랩 자동화로 일일 30~60분 → 5~10분 단축

프로젝트

해외 주식 데이터를 AI 리서치로 분석해 정량 점수와 매수/보유/매도 가격 구간을 만들고, 그 결과를 관심종목, KIS 잔고·주문 조회, Daily Order 승인 흐름까지 연결한 투자 리서치·주문 보조 서비스

개인 개발·운영 중인 AI 리서치 중심 해외 주식 투자 워크스페이스. 핵심은 종목 분석 프롬프트를 13개 리서치 태스크로 컴파일하고 실행 결과를 스키마 검증, 근거 조정, 정량 점수화, 매수 구간 계산, 다국어 리포트 아티팩트 저장까지 연결한 분석 엔진입니다. OpenAI, Anthropic, Google, Perplexity Provider를 선택해 기업 프로필, 매출 품질, 지배구조, 자본구조, 경쟁 환경, 해자, 촉매, 회계 신뢰도, 밸류에이션 입력값을 구조화합니다. 분석 결과를 통해 종목 검색, 관심종목, 매수/매도 구간을 활용한 주문 등으로 이용 가능합니다.

상세 분석

AI 리서치 중심 해외 주식 투자 워크스페이스. 종목 분석 프롬프트를 13개 리서치 태스크로 컴파일하고 실행 결과를 스키마 검증, 근거 조정, 정량 점수화, 매수 구간 계산, 다국어 리포트 아티팩트 저장까지 연결했습니다. OpenAI, Anthropic, Google, Perplexity Provider를 선택해 주식을 분석하고 최종 점수와 가격 구간을 계산합니다. 데이터 수집은 KIS, SEC EDGAR를 함께 사용합니다. 미국 주식 가격·재무 데이터, SEC 재무제표, 공시, 내부자 거래, 8-K 이벤트를 주기적으로 수집하고, 매일 가격 구간·실시간 점수·검색 지표·숏스크린 스냅샷을 갱신합니다. FastAPI 기반 KIS API 서버를 별도로 두어 실시간 가격, 잔고, 매수/매도, 체결, 미체결, 주문 취소 기능을 웹 서비스와 분리했고, Daily Order System으로 주문을 이메일 승인 후 실행하는 주문 보조 흐름까지 구현했습니다.

기술 스펙

  • 웹 프레임워크: Next.js (TypeScript)
  • 상태관리: Zustand
  • 증권사 API 서버: FastAPI (Python)
  • 데이터 수집: Python (KIS API, SEC EDGAR, yfinance)
  • 데이터베이스: PostgreSQL
  • DB ORM: Raw SQL / Prisma (보안 목적)
  • 인프라: Docker Compose (Blue/Green 배포 구성)
  • 웹서버: Nginx
  • 호스팅: 홈 서버
  • 외부 API: KIS API(한국투자증권)

구현된 특징 기능

  • 해외 주식의 가격·재무 데이터 수집 및 매출 성장률, 영업이익률, P/E, P/B, PEG, P/S 등 조건검색 기능 구현
  • 대량 종목 검색과 재무 지표 갱신 성능을 위해 비동기·병렬 처리 기반 데이터 수집/필터링 파이프라인 구성
  • OpenAI/Anthropic/Google/Perplexity Provider와 모델을 선택해 종목별 리서치를 실행
  • Codex, Claude Code Agent를 사용하여 분석진행도 가능
  • buy-band를 적용하여 Aggressive Buy, Buy, Hold, Sell, Aggressive Sell 5단계 가격 구간을 계산하고 AI Buy Zone 스냅샷으로 전 종목 상태 추적
  • PB·PE·PEG·PS Ratio Valuation과 레버리지 ETF 정보를 함께 제공해 밸류에이션과 상품 특성을 한 화면에서 비교
  • 관리자 분석 큐에서 bulk 분석, Provider/모델 선택, 공식 리포트 지정, 수동 리포트 override, 스냅샷 재생성, 점수/가격 구간 비교 테이블 운영
  • SEC EDGAR 재무 데이터, 공시, 내부자 거래, 8-K 이벤트, 13F 기관투자자 데이터를 수집해 AI 분석 근거와 검증 데이터로 활용
  • KIS 해외주식 API를 FastAPI 서비스로 분리해 실시간 가격, 잔고, 매수/매도, 체결, 미체결, 주문 취소, WebSocket 가격 구독 기능 제공
  • 한국투자증권 API와 연동해 보유 주식, 외화 예수금, 일별 주문내역, 체결/미체결 내역을 조회하고 주문 실행 흐름과 연결
  • Daily Order System으로 정해진 시간에 AI Buy Zone, 잔고, 관심종목 기준 주문안을 생성하고 이메일 승인 후 KIS API로 실행하는 주문 보조 흐름 구현
  • 자료 수집 -> 분석 -> 주문 으로 이어지는 실제 투자에 활용하는 실서비스 직접 운영
Next.js 15FastAPIPostgreSQLRedisWebSocketPrismaZustandDocker

참고 이미지

screener_01

screener_01

성장률, PE, buy band 등에 따른 스크린 기능

sec_data_01

sec_data_01

SEC에서 가져온 개별 symbol의 내부자 거래 공시

symbol_ai_01

symbol_ai_01

LLM(ChatGPT)를 통해 분석한 개별 symbol의 일부 내용(경쟁 관계, 거시/이벤트 민감도)

symbol_financial_01

symbol_financial_01

개별 Symbol의 매출, 영업 이익 차트

symbol_price_01

symbol_price_01

symbol_price_02

symbol_price_02

개별 symbol의 차트 (Buy band 적용)

order_balance_01

order_balance_01

API 연동한 실제 주문 페이지

부동산 중개 실무를 기준으로 매물, 임대인, 고객, 계약, 문서, 일정, 크롤링 매칭, 부동산 계산기, 관리자 기능을 하나의 워크플로우로 연결한 운영 플랫폼.

부동산 중개업무 통합 관리 서비스입니다. 기존 단순 매물 장부 수준을 넘어서, 중개사가 실제 업무에서 다루는 매물 정보, 임대인/공동명의자, 고객 요구사항, 계약서 작성, 표준임대차계약서, 확인설명서, 계약 일정, 주요 일정 알림(Google Calendar 활용), 문서 파일(PDF 및 이미지 미리 보기 및 다운로드), 계산기(각종 세금), 실무 사례, 협력업체 정보를 하나의 데이터 흐름으로 묶었습니다. 매물, 고객, 임대인, 계약 같은 핵심 화면은 카드형 UI와 엑셀형 대량 처리 UI를 함께 제공하고, 컬럼 표시/숨김, 컬럼 폭 조절, 정렬, 필터, 검색, 뷰 상태 저장을 통해 실제 장부 업무에 맞게 반복 작업을 줄이도록 구성했습니다.

상세 분석

부동산 중개사가 매일 반복하는 장부 관리와 계약 준비 과정을 웹 서비스로 구조화한 프로젝트입니다. 중개 실무에서는 매물, 임대인, 고객, 계약, 확인설명서, 첨부 문서, 잔금 일정, 신고 일정이 서로 따로 관리되기 쉽습니다. 이 프로젝트는 분절된 정보를 하나의 흐름으로 연결하는 데 초점을 맞췄습니다. 서비스의 핵심 흐름은 `매물 등록 -> 임대인/건물/호실 연결 -> 고객 요구사항 관리 -> 계약 생성 -> 계약서/확인설명서 PDF 출력 -> 문서 보관 -> 일정 관리`로 이어집니다. 각 기능은 독립 화면으로 존재하지만, 사용자는 매물에서 계약으로, 계약에서 문서와 일정으로 자연스럽게 이동할 수 있습니다. 단순 CRUD가 아니라 실제 업무 순서를 따라가도록 설계한 점이 이 프로젝트의 중심입니다. 백엔드는 기능이 많아지는 상황을 전제로 설계했습니다. 도메인 모델, 외부 연동, API 라우터를 분리하고, 신규 기능은 Feature Registry에 등록하는 방식으로 확장합니다. 덕분에 계약, 문서, 크롤링, 계산기, 관리자, 경매, 통화 분석처럼 성격이 다른 기능을 같은 규칙으로 추가할 수 있습니다. 프론트엔드는 장부형 업무에 맞춰 두 가지 사용 패턴을 지원합니다. 개별 매물을 확인할 때는 카드형 UI를 사용하고, 여러 건을 비교하거나 정리할 때는 엑셀형 테이블 UI를 사용합니다. 컬럼 표시/숨김, 폭 조절, 정렬, 필터, 뷰 상태 저장을 통해 반복 업무에서 사용자가 매번 같은 화면 설정을 다시 하지 않도록 구성했습니다. 운영 관점에서는 PDF 생성, 외부 공공데이터 연동, 백그라운드 작업, 인증/권한, 백업/복원, 배포 스크립트까지 포함했습니다. 포트폴리오용 데모가 아니라 실제 데이터를 넣고 장기간 운영하는 업무 시스템을 목표로 개발했습니다.

기술 스펙

  • BackEnd: FastAPI (Python)
  • FrontEnd: React (TypeScript)
  • 상태관리: Zustand
  • 데이터베이스/Queue: PostgreSQL, Redis, Celery
  • 인프라: Docker Compose (Blue/Green 배포 구성)
  • 웹서버: Nginx
  • 호스팅: 홈서버
  • 외부 API: 공공데이터포털(건축물 대장), Google Calendar, VWorld

구현된 특징 기능

  • 매물: 거래유형/상태/가격/면적/주소/옵션 관리, 방문 연락처, 임대할 부분, 사진 및 문서 관리
  • 임대인: 공동명의자, 계좌, 연락처, 신분번호 유형, 임대인별 건물/호실 관리
  • 고객: 연락처, 요구사항, 활성 상태, 조건 등록하여 매물과 매칭
  • 계약: 일반 계약, 표준임대차계약서, 확인설명서, 계약 복사, 계약 상태, 계약 대리인, 계약 준비사항 관리
  • 문서: 매물/임대인/고객/계약/건물/호실 단위 문서 그룹, 파일 업로드/다운로드/삭제
  • 일정: 계약 잔금일, 신고일, 임대차 일정, 사용자 일정, Google Calendar 연동 구조
  • 계산기: 임대료 인상, 양도소득세, 재산세, 종합부동산세, 보증보험, 부분 보증금, 스프레드시트형 계산기, 일반 계산기, 주요 계산은 저장이 가능하도록 하여 유저 편의성을 높임
  • 크롤링/매칭: 외부 매물 데이터를 내부 매물/임대인 건물과 주소·층 기준으로 비교하고 검토 상태를 관리
  • 외부 데이터: 건축물대장, 토지이용계획, 기준금리
  • 운영 도구: DB 백업/복원, 전체 백업, rollback restore, 무중단 blue-green 배포 스크립트

장점

  • 부동산 중개 업무 흐름에 맞게 서비스하여 실제 사용이 가능한 수준의 서비스입니다.
  • 기능 수가 많은 서비스에서 Clean Architecture와 Feature Registry로 확장성을 관리했습니다.
  • 업무형 UI에 필요한 카드/테이블 전환, 동적 컬럼, 필터, 상태 저장을 구현했습니다.
  • Docker, Celery, Redis, PostgreSQL, Nginx, 백업/복원, 무중단 배포 스크립트까지 운영 관점을 포함했습니다.
FastAPIReactTypeScriptPostgreSQLRedisCeleryDockerTailwind CSSSQLAlchemy

참고 이미지

realty_main

realty_main

메인 대시보드

realty_filter

realty_filter

매물 필터링

realty_properties

realty_properties

매물(엑셀뷰)

realty_properties_cardview

realty_properties_cardview

매물(카드뷰)

realty_contract_pdf_view

realty_contract_pdf_view

계약 PDF 미리보기

realty_admin_page

realty_admin_page

관리자 페이지 - 기능 노출 설정

네이버 부동산·직방·다방 매물 데이터를 수집해 가격·주소·층·면적 정보를 표준화하고 탈탈리얼티 API로 전송하는 다중 플랫폼 크롤링 자동화 도구입니다.

Selenium, Playwright, REST API를 플랫폼 특성에 맞게 혼합 사용해 외부 매물을 수집합니다. 한국 부동산 가격 표현을 원 단위 보증금/월세/매매가로 변환하고, 주소·층·면적·중개사 정보를 공통 스키마로 정규화한 뒤 batch/single/incremental 모드로 탈탈부동산 API에 전송합니다.

상세 분석

Naver Realty New는 탈탈리얼티의 외부 매물 확인 업무를 자동화하기 위해 만든 다중 플랫폼 부동산 크롤러입니다. 부동산 실무에서는 내부 장부의 매물과 네이버 부동산, 직방, 다방에 올라온 외부 매물을 반복적으로 비교해야 하는데, 이 과정을 수동으로 처리하면 누락과 시간이 크게 발생합니다. 이 프로젝트는 플랫폼별 수집 방식은 각각 다르게 가져가되, 수집 이후에는 가격, 주소, 층, 면적, 중개사 정보, 외부 URL을 공통 매물 스키마로 정규화합니다. 네이버는 Selenium, 직방은 REST API, 다방은 Playwright를 사용하고, transformer 계층에서 한국 부동산 가격 표현과 주소 정보를 내부 API가 바로 처리할 수 있는 형태로 변환합니다. 결과적으로 단순 크롤링 스크립트가 아니라 탈탈리얼티 운영 데이터 파이프라인의 외부 매물 수집 모듈로 설계된 프로젝트입니다.

기술 스펙

  • Language: Python
  • Crawling: Selenium, Playwright, requests/httpx, BeautifulSoup4
  • Data Processing: dataclasses, regex parser, pandas/openpyxl 의존성
  • API Integration: async httpx client, bulk create endpoint, retry with backoff
  • Scheduler: Naver -> Zigbang -> Dabang 순차 cycle runner
  • Runtime: Docker, Docker Compose, Makefile, local setup script

구현된 특징 기능

  • 네이버 부동산 Selenium 크롤링
  • 직방 REST API 기반 매물 수집
  • 다방 Playwright 기반 매물 수집
  • 자양동/구의동 등 주소 기반 지역 필터링
  • 억/만/보증금월세 형식의 한국 부동산 가격 문자열을 원 단위로 변환
  • 주소에서 동 이름 추출 및 층수/방수/욕실수/면적/중개사 정보 표준화
  • 탈탈리얼티 API bulk-create endpoint 전송
  • batch 전송, single 즉시 전송, dry-run, incremental crawling 모드
  • 네이버/직방/다방 순차 실행 스케줄러

이슈 해결

문제: 매일 전체 카테고리를 다시 크롤링하면 실행 시간이 길고 중복 전송이 많음

원인: 이미 수집된 매물까지 매번 끝까지 탐색하면 외부 사이트 부하와 처리 시간이 증가합니다.

해결: API에서 기존 external_id 목록을 가져와 이미 존재하는 매물을 만나면 해당 카테고리를 스킵하는 incremental 모드를 구현했습니다.

결과: 새 매물 위주의 빠른 반복 수집이 가능해졌습니다.

장점

  • 실제 부동산 서비스와 연결되는 운영형 크롤러입니다.
  • Selenium, Playwright, REST API를 플랫폼 특성에 맞게 혼합 사용했습니다.
PythonSeleniumPlaywrighthttpxBeautifulSoup4DockerMakefile

동행복권 과거 회차 데이터를 자동 동기화하고 여러 번호 생성 전략별 조합을 역대 당첨 이력과 비교해 검증하는 FastAPI 기반 시뮬레이션 서비스입니다.

과거 로또 데이터에 대해 여러가지 전략을 조합하여(중복 최소 랜덤, 균형 퀵픽, 구간 분산, 연속수 제어, hot/cold 번호 가중치 등) 전략별 번호를 생성한 뒤 1~5등 당첨 이력과 추정 당첨금을 계산합니다. Docker, APScheduler, Nginx /lotto 서브패스 운영 구성을 포함합니다.

상세 분석

로또 전략 시뮬레이션 서비스는 단순히 번호 6개를 랜덤으로 뽑는 도구가 아니라, 과거 당첨 회차 데이터 수집부터 전략별 번호 생성, 역대 회차 기준 성과 평가, 실행 이력 저장까지 하나의 흐름으로 구성한 FastAPI 서비스입니다. 동행복권 데이터를 동기화하고, SQLite에 저장된 회차 정보를 기준으로 생성 조합이 과거에 몇 등 수준의 결과를 냈는지 계산합니다. 전략 엔진은 균등 랜덤뿐 아니라 중복 최소화, 홀짝/고저 균형, 구간 분산, 연속수 제어, 합계/스팬 제한, hot/cold 번호 가중치 같은 설명 가능한 옵션을 제공합니다. 사용자는 자동 생성 번호와 직접 입력 번호를 같은 평가 로직으로 비교할 수 있고, Docker와 Nginx 서브패스 운영까지 고려해 작은 아이디어를 실제 서비스 형태로 완성한 사례입니다.

기술 스펙

  • Backend: FastAPI(Python)
  • Scheduler: APScheduler, CLI sync command
  • Database: SQLite
  • Data Collection: requests, openpyxl, 동행복권 엑셀/API 수집

구현된 특징 기능

  • 동행복권 과거 회차 데이터 적재 및 최신 회차 동기화
  • 엑셀 다운로드 파싱
  • 회차 데이터 insert/update/skip 방식의 안전한 upsert
  • 전략 기반 게임 생성 API
  • 게임 간 번호 중복을 최소화하는 분산 랜덤 전략
  • 균등 랜덤, 균형 퀵픽, 구간 분산, 연속수 제어, 합계/스팬 가드 전략
  • 직접 입력 번호 조합의 과거 당첨 이력 조회
  • 등수별 당첨 횟수, 매칭 번호, 보너스 매칭 여부, 추정 당첨금 계산

장점

  • 데이터 수집, 전략 알고리즘, 평가 엔진, API, 배포 구성을 모두 갖춘 작은 완결형 서비스입니다.
  • 외부 데이터 파싱 실패 가능성을 고려해 보조 조회 경로를 둔 점이 실사용 관점의 설계입니다.
  • 전략 옵션을 스키마화해 프론트엔드 UI와 백엔드 전략 로직을 연결하기 쉽게 만들었습니다.
  • Docker/Nginx 서브패스 운영까지 고려해 서비스 형태로 구성했습니다.
PythonFastAPISQLiteAPScheduleropenpyxlDockerNginx

단일 서버에서 여러 서비스를 안전하게 운영하기 위해 Nginx, fail2ban, SSL, 방화벽, 포트 레지스트리, 보안 알림을 통합 관리하는 인프라 보안 프로젝트입니다.

애플리케이션과 호스트 인프라 책임을 분리하고, Nginx snippets, fail2ban jail/filter, SSL/TLS, SSH hardening, firewall, 포트/서비스 YAML 레지스트리를 한 저장소에서 관리합니다. SQL Injection, XSS, Path Traversal, scanner 접근을 탐지해 차단하고 이메일 알림과 일일 요약을 제공하는 운영 보안 체계를 설계했습니다.

상세 분석

Security Guide는 여러 개인 서비스를 한 서버에서 운영하면서 반복적으로 발생하는 보안·인프라 설정 문제를 해결하기 위해 만든 운영 레이어 프로젝트입니다. 각 애플리케이션은 자체 Docker와 데이터베이스를 관리하고, 이 저장소는 Nginx, fail2ban, SSL/TLS, SSH hardening, firewall, 포트 레지스트리처럼 호스트 서버 공통 책임을 담당하도록 범위를 분리했습니다. 특히 Nginx 로그에서 SQL Injection, XSS, Path Traversal, scanner 접근을 구분해 탐지하고, 명백한 공격은 fail2ban으로 즉시 차단하며, 일반 404는 오차단을 줄이기 위해 빈도 기준으로 다르게 다룹니다. 서비스/포트/환경 정보를 YAML 레지스트리로 관리하고 배포·헬스체크·사고대응 체크리스트를 갖춰, 개인 프로젝트라도 반복 가능한 운영 보안 절차로 만들었습니다.

기술 스펙

  • Web Server: Nginx, security snippets, reverse proxy
  • Security: fail2ban, iptables/ufw, SSH hardening, SSL/TLS, security headers
  • Automation: Bash scripts, deploy/health-check/setup scripts
  • Registry: YAML 기반 services/ports/environments/security-alerts 레지스트리
  • Alerting: SMTP 이메일 알림, 일일 보안 요약 구조
  • Documentation: 보안 가이드, 배포/코드리뷰/사고대응 체크리스트

구현된 특징 기능

  • 단일 서버 다중 프로젝트 운영을 위한 인프라 레이어 분리
  • Nginx reverse proxy, SSL termination, security headers 관리
  • fail2ban 기반 SSH, Nginx rate limit, 공격 패턴 차단 정책
  • SQL Injection, XSS, Path Traversal, scanner/bot 접근 탐지 설계
  • 일반 404와 공격성 404를 구분하는 차단 정책
  • 즉시 이메일 알림과 일일 요약 리포트 구조
  • 서비스별 컨테이너, 시작 순서, 외부 의존성 레지스트리화
  • 배포, health check, shared config 적용, SSH 포트 이전 스크립트

장점

  • 애플리케이션 개발을 넘어 서버 운영, 보안 하드닝, 배포 안정화까지 다룬 프로젝트입니다.
  • Nginx/fail2ban/방화벽/SSL/SSH 설정을 실제 운영 관점에서 통합했습니다.
  • 공격 패턴 탐지와 정상 요청 오차단 방지를 함께 고려한 정책 설계가 드러납니다.
  • 서비스/포트/환경을 레지스트리로 관리해 운영 변경의 추적성을 높였습니다.
Nginxfail2banShellYAMLUFWSSL/TLSDocker

pywinauto와 Windows UI Automation으로 브라우저, ChatGPT 화면, 메모장을 자동 조작해 반복적인 질의·복사·저장 작업을 자동화한 데스크톱 RPA 프로젝트입니다.

Chrome과 메모장을 실행하고, 클립보드에 구성한 프롬프트를 붙여넣은 뒤 ChatGPT 응답 완료 마커를 화면 요소에서 찾아 복사·저장합니다. API가 없는 동적 GUI 환경에서 키보드, 마우스, 클립보드, UIA control 탐색을 조합해 반복 작업을 자동화했습니다.

상세 분석

Window GUI Control은 API로 처리하기 어려운 Windows 데스크톱 작업을 실제 화면 조작 방식으로 자동화한 RPA 프로젝트입니다. 브라우저를 실행해 ChatGPT에 접속하고, 서비스별 프롬프트를 클립보드로 입력한 뒤, 응답 완료 마커가 화면에 나타날 때까지 스크롤과 polling을 반복합니다. 응답이 완료되면 시작/종료 마커의 좌표를 기준으로 해당 응답 영역의 복사 버튼을 찾아 결과를 복사하고, 메모장에 붙여넣어 저장합니다. 단순 매크로가 아니라 UIA control 탐색, 클립보드, 키보드 입력, 마우스 스크롤, 화면 요소 좌표를 조합해 비정형 GUI 환경에서 반복 업무를 처리한 자동화 사례입니다.

기술 스펙

  • Language: Python
  • GUI Automation: pywinauto, Windows UI Automation backend
  • Windows Integration: pywin32, comtypes, tkinter clipboard
  • Browser Control: Chrome 실행 및 키보드/마우스 자동 조작
  • Data Flow: 서비스 목록 기반 prompt 생성, clipboard paste, response copy

구현된 특징 기능

  • Windows 메모장 실행 및 기존 파일 연결
  • Chrome 실행 후 ChatGPT 접속
  • 클립보드 기반 대형 프롬프트 입력
  • 서비스별 URL/이름을 순회하며 반복 질의
  • 응답 시작/종료 마커 기반 완료 감지
  • 응답 영역에 해당하는 복사 버튼 탐색
  • 응답 복사 후 메모장에 붙여넣고 저장
  • 화면 스크롤과 polling을 통한 긴 응답 처리

이슈 해결

문제: API가 없거나 직접 연동이 어려운 웹 화면의 반복 작업을 자동화해야 함

원인: 브라우저 화면, ChatGPT 응답, 복사 버튼, 메모장 저장처럼 GUI 상호작용이 필요했습니다.

해결: pywinauto로 브라우저와 메모장을 실제 사용자처럼 조작하고 키보드, 클립보드, 마우스 스크롤, 버튼 클릭을 조합했습니다.

결과: 프롬프트 입력, 응답 대기, 복사, 저장 작업을 스크립트로 자동화했습니다.

문제: ChatGPT 응답 완료 시점을 안정적으로 판단하기 어려움

원인: 응답 생성 중 UI 상태가 계속 바뀌고 텍스트 길이에 따라 복사 버튼 위치가 달라집니다.

해결: 시작/종료 마커를 프롬프트에 강제하고 종료 마커가 UI 요소로 발견될 때까지 polling했습니다.

결과: 여러 질의를 순차 처리해도 응답 범위를 구분할 수 있게 되었습니다.

장점

  • API 자동화가 아닌 실제 Windows GUI 자동화 경험을 보여줍니다.
  • pywinauto, clipboard, keyboard/mouse event, UIA control 탐색을 조합했습니다.
  • 응답 마커와 버튼 위치 계산으로 비정형 화면에서 필요한 결과만 추출했습니다.
  • 서비스 목록을 순회하는 데이터 기반 반복 자동화 구조입니다.
Pythonpywinautopywin32tkinterWindows UI Automation

ESP32-S3 기반 풀 커스텀 키보드. USB OTG·BLE·ESPNOW 무선 지원. PCB 설계·3D 프린팅 전 과정 직접 제작.

FreeRTOS + ESP-IDF(C언어). N-key Rollover, Consumer 키(음량·Mute·밝기). BLE 3대 기기 동시 연결. PCB 설계(KiCad), 보강판·케이스 3D 모델링(Fusion360).

상세 분석

ESP32-S3를 MCU로 사용한 풀 커스텀 키보드. USB·BLE·ESPNOW 무선 세 가지 연결 방식 모두 지원. 소프트웨어(FreeRTOS)부터 하드웨어(PCB·3D프린팅)까지 전 과정 단독 설계·제작.

기술 스펙

  • 소프트웨어: ESP-IDF (C언어), FreeRTOS
  • MCU: ESP32-S3
  • PCB 설계: KiCad
  • 3D 모델링: Fusion360
  • 배터리 충/방전: TP4056

구현된 특징 기능

  • USB OTG 지원 (TinyUSB library, Espressif component)
  • BLE 3대 기기 동시 연결 (Espressif BLE API)
  • ESPNOW 무선 동글 연결 (Espressif 자체 WiFi 프로토콜)
  • N-key Rollover (무한 키 입력 지원)
  • Consumer 키: 음량 조절·Mute·화면 밝기
  • PCB 설계 (KiCad)
  • 보강판·케이스 3D 모델링 및 3D 프린팅 (Fusion360)

장점

  • 소프트웨어(FreeRTOS, C언어)·하드웨어(PCB·3D프린팅) 전 과정 단독 설계·제작
  • USB·BLE·ESPNOW 세 가지 연결 방식 모두 직접 구현
C/C++ESP-IDFFreeRTOSTinyUSBKiCad

pyupbit로 업비트 계좌 잔고·평균매수가·현재가를 조회하고 수익률 조건에 따라 BTC/ETH를 소액 시장가 매수·매도하는 자동매매 프로토타입입니다.

환경변수에서 Upbit API key를 읽고 BTC/ETH의 보유 수량, 평균 매수가, 현재가를 주기적으로 조회합니다. 평균매수가 대비 수익률을 계산해 수익 구간에서는 일부 매도하고 손실 구간에서는 소액 추가 매수하는 rule-based trading loop를 실험했습니다.

상세 분석

Upbit Auto는 업비트 API를 직접 연동해 암호화폐 자동매매의 기본 흐름을 실험한 프로토타입입니다. 핵심은 현재가만 보는 것이 아니라 계좌의 보유 수량, 평균 매수가, 현재 가격을 함께 조회한 뒤 평균매수가 대비 수익률을 기준으로 주문 여부를 판단하는 구조입니다. BTC와 ETH를 대상으로 소액 단위의 시장가 매수·매도를 반복하며, 수익 구간에서는 일부 매도하고 손실 구간에서는 추가 매수하는 단순하지만 명확한 rule-based loop를 구성했습니다. 운영형 트레이딩 시스템이라기보다는 거래소 private API 인증, 잔고 조회, 주문 수량 계산, 예외 처리, 장시간 반복 실행이라는 자동매매의 핵심 요소를 직접 다뤄본 실험 프로젝트입니다.

기술 스펙

  • Language: Python
  • Exchange API: pyupbit, Upbit private/public API
  • Configuration: 환경변수 기반 API key 로딩
  • Strategy: 평균매수가 대비 수익률 조건, 소액 분할 매수/매도
  • 대상 자산: KRW-BTC, KRW-ETH

구현된 특징 기능

  • Upbit access/secret key 환경변수 로딩
  • BTC/ETH 잔고와 평균 매수가 조회
  • 현재가 조회 후 기준 금액 기반 주문 수량 계산
  • 보유 수량 부족 시 최초/추가 매수
  • 평균매수가 대비 현재 수익률 계산
  • 수익률 기준 초과 시 시장가 일부 매도
  • 손실 구간 진입 시 소액 추가 매수
  • 예외 발생 시 루프 중단 없이 로그 출력
  • 변동성 돌파 전략 학습 코드 포함

장점

  • 거래소 private API를 사용해 실제 잔고와 주문 흐름을 다뤄본 경험을 보여줍니다.
  • 평균매수가 기반 수익률 계산과 조건부 시장가 주문을 구현했습니다.
  • 환경변수 기반 인증키 로딩으로 코드에 키를 직접 넣지 않는 방향을 적용했습니다.
  • 상태 조회, 전략 판단, 주문 실행, 반복 스케줄을 포함한 자동매매 기본 구조입니다.
PythonpyupbitUpbit APIRule-based Trading

Django 기반으로 상품, 이미지, 상세페이지, 결제, 배송, 리뷰, 사용자, 관리자 기능을 구현한 탈모 관련 상품 쇼핑몰 프로젝트입니다.

상품 카테고리와 상세 스펙, 이미지/상세페이지 이미지, 문의, 단일 결제와 묶음 결제, PostgreSQL, IAMPORT, Gmail SMTP, S3 를 포함한 Django 커머스 프로젝트입니다.

상세 분석

Django로 구현한 탈모 관련 상품 쇼핑몰 프로젝트입니다. 상품, 사용자, 결제, 리뷰, 배송, 관리자 기능을 앱 단위로 분리하고, 상품 도메인은 샴푸, 흑채, 가발, 헤어빔처럼 실제 판매 카테고리에 맞춰 상세 스펙과 이미지를 관리하도록 설계했습니다. 결제 영역에서는 merchant_uid와 imp_uid를 함께 저장해 내부 주문과 외부 PG 결제 결과를 연결하고, 단일 상품 결제와 묶음 결제를 구분했습니다. 최신 구조의 프로젝트는 아니지만, Django MVT 기반으로 상품 관리, 상세페이지 이미지, 문의, 주문/결제, 이메일, PostgreSQL, S3, Sentry 같은 커머스 운영 요소를 한 서비스 안에서 다룬 풀스택 프로젝트입니다.

기술 스펙

  • Backend: Django(Python)
  • Database: PostgreSQL, psycopg2-binary
  • Storage: AWS S3
  • Payment: 포트원
  • Auth: Django custom user model
  • Frontend: Django templates, HTML, CSS

구현된 특징 기능

  • 상품 카테고리: 샴푸, 흑채, 가발, 헤어빔
  • 상품 가격, 배송비, 결제 수, 평점, 상품 상세 스펙 관리
  • 상품 이미지와 상세페이지 이미지 별도 모델
  • 상품별 사용자 문의 관리
  • 단일 상품 결제와 장바구니/묶음 결제 모델
  • merchant_uid/imp_uid 기반 결제 식별자 저장
  • 수령자, 주소, 전화번호, 이메일, 요청사항, 결제 상태 관리
  • SMTP 이메일, CORS/CSRF 운영 도메인, AWS S3, Sentry 설정 구조

장점

  • Django 앱 분리와 MVT 패턴으로 커머스 도메인을 구현했습니다.
  • 상품, 이미지, 문의, 결제, 묶음 결제, 배송, 리뷰 기능을 하나의 서비스로 묶었습니다.
  • PostgreSQL, 결제 API, 이메일, S3, Sentry 등 운영형 웹서비스 설정을 다뤘습니다.
  • 초기 풀스택 커머스 개발 경험을 보여주는 프로젝트입니다.
PythonDjangoPostgreSQLIAMPORT(현 포트원)AWS S3

탈탈부동산 웹 장부를 현장에서도 조회·수정할 수 있도록 옮긴 Expo/React Native 모바일 앱입니다.

중개사가 외부 미팅이나 매물 확인 중에도 매물, 고객, 계약, 관리 업무를 바로 확인하고 수정하는 사용 시나리오에 맞춰 구성했습니다.

상세 분석

탈탈부동산의 매물 장부, 고객, 계약, 관리 업무를 모바일 화면 구조로 옮긴 React Native 앱입니다. 부동산 업무는 거래/임대 구분, 물건 유형, 고객 유형에 따라 화면이 많아지기 때문에 각 도메인을 목록, 상세, 생성, 수정, 검색 흐름으로 나누고 React Navigation stack에 명시적으로 구성했습니다. API 호출은 Axios wrapper로 모아 JWT/CSRF 처리를 공통화했고, Redux Toolkit과 redux-persist, AsyncStorage로 로그인 상태와 앱 상태를 유지하도록 만들었습니다.

기술 스펙

  • Mobile: React Native 0.68, Expo 45
  • Language: JavaScript
  • Navigation: React Navigation Stack/Bottom Tabs
  • State: Redux Toolkit, React Redux, redux-persist
  • API: Axios, JWT Authorization, CSRF token header
  • Storage: AsyncStorage

구현된 특징 기능

  • Redux Provider와 PersistGate 기반 전역 상태 저장
  • 로그인, 회원가입, 프로필, 비밀번호 변경, 회원 탈퇴 API wrapper
  • 소셜 로그인/로그아웃 API wrapper
  • 매물 장부: 빌라/아파트/오피스텔/상가/건물 거래·임대 화면
  • 고객 도메인별 목록, 상세, 생성, 수정, 검색 화면
  • 계약 목록, 검색, 상세, 생성, 수정 화면
  • 관리 업무 목록, 검색, 상세, 생성, 수정 화면
  • JWT/CSRF header를 포함한 Axios 공통 호출 구조

이슈 해결

문제: 웹 장부 기능을 모바일로 옮기면 화면 수가 급격히 늘어남

원인: 부동산 업무는 매물 유형, 거래 유형, 고객 유형, 계약, 관리 업무가 세분화되어 하나의 generic 화면으로 처리하기 어렵습니다.

해결: 도메인별 화면을 명시적으로 분리하고 React Navigation stack에 등록했습니다.

결과: 기능이 많아도 사용자가 업무 유형에 따라 명확한 화면으로 이동할 수 있는 구조가 되었습니다.

문제: 모바일 앱에서 인증 상태와 사용자 상태를 유지해야 함

원인: 앱을 닫았다 열 때마다 로그인 상태나 선택 상태가 사라지면 업무 사용성이 떨어집니다.

해결: Redux Toolkit, redux-persist, AsyncStorage를 조합해 전역 상태를 유지하도록 구성했습니다.

결과: 모바일 앱에서 로그인/상태 정보를 지속적으로 활용할 수 있는 기반을 만들었습니다.

장점

  • 웹 기반 부동산 서비스를 모바일 앱으로 확장한 경험을 보여줍니다.
  • 도메인별 화면 수가 많은 앱을 React Navigation stack으로 명시적으로 구성했습니다.
  • 백엔드 API가 많은 환경에서 API wrapper로 호출 구조를 정리했습니다.

최근 커밋

  • 2022-08-15 Merge branch 'master' of https://github.com/Junanjunan/taltalrealty_native

패키지 하이라이트

  • @react-navigation/native
  • @reduxjs/toolkit
  • redux-persist
  • axios
  • expo
  • @react-native-async-storage/async-storage
React NativeExpoJavaScriptReduxReact NavigationAxios

CMES 물류 자동화 메인 프로젝트. 10인 팀에서 백엔드 단독 담당, AI·로봇 모듈 허브 서버 구현.

ZeroMQ로 Vision AI·Decision AI·Fanuc 로봇 모듈을 연동하고, State Machine+WebSocket+FastAPI로 공정 흐름을 통합 제어. 핵심 이슈였던 Linux/Windows(Fork/Spawn) 멀티프로세싱 차이로 인한 DB commit 장애를 원인 분석 후 NullPool 적용(1차) + DB commit 전용 프로세스 분리(2차)로 해결.

상세 분석

팔레타이징 로봇 시스템은 CMES 재직 중 수행한 박스 Pick & Place 물류 자동화 프로젝트입니다. Vision/Decision AI가 컨베이어 박스를 분석해 적재 순서와 위치를 판단하고, Fanuc 로봇 모듈이 실제 적재를 수행하는 흐름에서 백엔드는 공정 상태와 모듈 간 통신을 조율하는 허브 역할을 맡습니다. FastAPI, WebSocket, State Machine, ZeroMQ 기반으로 촬영, 판단, 로봇 이동, 적재 완료 단계를 이벤트 중심으로 연결하고, 클라이언트에는 진행 단계와 성공 여부를 실시간으로 전달합니다. 현장 온프레미스 환경에서 AI, 로봇, 프론트엔드가 함께 움직이도록 구성한 물류 자동화 프로젝트입니다.

기술 스펙

  • Backend: Python, FastAPI, WebSocket
  • Messaging: ZeroMQ/pyzmq
  • Database: PostgreSQL, SQLAlchemy
  • Frontend: Next.js(TypeScript,)

구현된 특징 기능

  • AI·로봇 모듈 사이의 ZeroMQ 메시징 허브
  • 촬영→판단→Pick & Place→적재 완료 단계 전이 관리
  • WebSocket 기반 공정 진행 상태 실시간 송신
  • FastAPI REST API 기반 운영 제어 요청 처리
  • 여러 프로세스가 동시에 동작하는 비동기/병렬 처리 구조
  • 온프레미스 Windows/Linux 환경을 고려한 실행 구조

장점

  • 산업 현장의 AI/로봇/웹 모듈을 하나의 백엔드 흐름으로 묶었습니다.
  • State Machine과 메시징을 적용해 공정 단계를 명시적으로 통제했습니다.
  • 실시간 WebSocket과 현장 제어 API를 함께 다룬 백엔드를 다루었습니다.
PythonFastAPISQLAlchemyPostgreSQL

SIR소프트에서 참여한 FastAPI 기반 Python CMS 백엔드입니다.

설치 마법사, 관리자/BBS 라우터, 템플릿 렌더링, 플러그인, REST API v1을 한 앱에서 운영하며 게시판·회원·댓글·파일·쪽지·포인트·검색·FAQ·QA 같은 커뮤니티 기능을 FastAPI/SQLAlchemy 구조로 구현·개선했습니다.

상세 분석

FastAPI 라우터로 관리자(admin), 사용자 게시판, 설치 화면, REST API v1을 함께 제공하고, SQLAlchemy 모델/세션, Jinja2 템플릿, 정적 파일, 플러그인 로딩, 세션 미들웨어를 묶어 Python 기반 CMS로 동작합니다. REST API 영역은 JWT access/refresh token 인증, 게시판 글·댓글·파일, 회원, 쪽지, 스크랩, 포인트, 검색, FAQ, QA, 현재 접속자 기능을 /api/v1 하위 라우터로 분리해 외부 클라이언트가 그누보드 데이터를 사용할 수 있게 구성했습니다.

기술 스펙

  • Backend: FastAPI(Python)
  • Database: MySQL, PostgreSQL, SQLite
  • Template: Jinja2 templates
  • Auth/API: JWT access/refresh token,
  • Background: APScheduler
  • email: SMTP

구현된 특징 기능

  • 설치 화면에서 MySQL/PostgreSQL/SQLite 선택 및 테이블 prefix 설정
  • 테마 정적 파일, /static, /data 파일 서빙 구성
  • 플러그인 상태 파일 기반 동적 라우터/관리자 메뉴 등록
  • JWT access/refresh token 발급과 refresh token DB 저장/갱신
  • 게시판 목록/상세/작성/수정/삭제, 비밀글, 댓글, 추천/비추천 API
  • 파일 업로드/다운로드와 비회원 비밀번호 검증 로직
  • 회원가입, 이메일 인증, 프로필, 회원 이미지, 탈퇴, 비밀번호 재설정 API
  • CORS 설정 환경변수화와 API 사용 여부/템플릿 사용 여부 설정
  • SlowAPI 기반 글쓰기·댓글 작성 간격 검증
  • 인기 검색어/최신글/현재 접속자/방문자 등 커뮤니티 부가 기능

이슈 해결

문제: Locust 부하 테스트 중 DB connection이 계속 증가해 MySQL max connection에 도달하고 서비스가 다운됨

원인: FastAPI 비동기 엔드포인트에서 의존성 주입 대상이 비동기 메서드가 아니라 동기 메서드로 선언되어, 요청마다 DB 세션/connection 정리가 의도대로 이뤄지지 않고 connection이 누적됐습니다.

해결: 문제가 되는 함수/클래스 의존성 경로를 추적해 동기 Depends 주입을 비동기 메서드 기반 주입으로 바꾸고, 서비스 인스턴스 생성과 DB 세션 사용 흐름을 비동기 엔드포인트에 맞게 재구성했습니다.

결과: 부하 상황에서도 connection 수가 워커 수 수준으로 안정화되어 DB 다운 현상이 해소됐습니다.

장점

  • 그누보드6 본체의 템플릿 기반 CMS와 REST API를 같은 FastAPI 앱 안에서 함께 다룬 프로젝트입니다.
  • 게시판·회원·파일·포인트·검색처럼 커뮤니티 CMS의 핵심 도메인을 실제 서비스 코드 기준으로 구현·보완했습니다.
  • 플러그인, 테마, 설치, 멀티 DB 호환성처럼 제품형 오픈소스 CMS 운영에 필요한 구조를 다뤘습니다.
FastAPIPythonSQLAlchemyJinja2MySQLPostgreSQLSQLiteJWTSlowAPIAPScheduler

SIR소프트 메인 프로젝트(2024.07.23~2024.11.25). 단독 개발한 그누보드5 Open API 기반 모바일 앱, Android Google Play 배포.

FCM 댓글 알림, JWT 인증, Axios interceptor single-flight(토큰 갱신 중복 방지), 카카오·네이버·구글 소셜 로그인, 비밀글/비밀댓글/파일 업로드 게시판, CKEditor, 병렬 API 요청 최적화, 다크모드/권한 설정까지 단독 구현. 특히 만료 토큰 상태 동시 요청 레이스 이슈를 single-flight로 해결. iOS는 완료했지만 내부 사정으로 미배포.

상세 분석

그누보드 Open API와 연동되는 React Native 기반 모바일 앱입니다. Expo가 아니라 React Native CLI를 선택해 Android native 기능과 확장성을 확보했고, 게시판, 회원, 프로필, 설정, 파일/이미지, 우편번호, WebView 등 커뮤니티 앱에 필요한 화면을 직접 구성했습니다. 앱 상태는 Context Provider 계층으로 관리하고, 서버 통신은 Axios 기반 API 계층으로 분리했습니다. Android 개발 환경 구성부터 앱 화면, 인증, 게시글/댓글, 파일 처리, 배포까지 단독으로 진행한 제품형 모바일 프로젝트입니다.

기술 스펙

  • Mobile: React Native
  • Navigation: React Navigation Stack/Drawer/Bottom Tabs
  • State: Context API
  • API: Axios, JWT

구현된 특징 기능

  • 회원가입/로그인 및 소셜 로그인 연동
  • JWT 인증과 token 갱신 처리
  • 게시판 목록/상세/작성/수정 화면
  • 비밀글/비밀댓글/파일 업로드/다운로드 흐름
  • 프로필 조회/수정 및 설정 화면
  • Daum 우편번호 검색 연동
  • WebView와 CKEditor 연동
  • FCM 기반 알림 구조
  • Android Google Play 배포

장점

  • React Native CLI 기반으로 native 확장성을 고려한 앱을 만들었습니다.
  • 커뮤니티 앱의 인증, 게시판, 파일, 프로필, 알림 흐름을 단독 구현했습니다.
  • Android 환경 구성과 배포까지 포함한 제품형 모바일 개발 경험입니다.
React NativeJavaScriptAxiosContext APIJWTFirebase Cloud MessagingCKEditor

SIR소프트 AI Hub 메인 프로젝트(2025.02.10~2025.04.18). 3인 팀에서 약 3,000개 AI 서비스 데이터 관리 파트 단독 담당.

Selenium(반응형 크롤링) → ChatGPT API 데이터 정제 → MySQL 저장 파이프라인 구축. 서비스명/카테고리 표기 불일치와 중복 처리 문제를 정규화 로직으로 정리하고, PyWinAuto GUI 자동화까지 적용해 대규모 데이터 입력·정제 프로세스를 운영 가능한 형태로 완성.

상세 분석

Crawl AI는 SIR소프트 AI Hub 프로젝트에서 약 3,000개 AI 서비스 소개 데이터를 구축하기 위해 만든 데이터 수집·정제 파이프라인입니다. 단순 크롤러가 아니라 Selenium/BeautifulSoup으로 외부 서비스 페이지를 수집하고, OpenAI/Gemini API로 description, content, features, categories, tags를 정해진 한국어 JSON 구조로 정제한 뒤 MySQL에 저장하는 흐름을 담당했습니다. 서비스 카테고리는 DB의 활성 카테고리 목록을 읽어 프롬프트에 반영해, LLM이 임의 카테고리를 만들지 않도록 제한했습니다. 사람이 일일이 서비스 설명을 읽고 분류하던 작업을 크롤링, LLM 정제, DB 저장으로 연결해 AI 서비스 추천 플랫폼의 초기 데이터 기반을 만든 프로젝트입니다.

기술 스펙

  • 역할: 데이터 수집/정제 파이프라인 전담
  • Language: Python
  • Crawling: Selenium, BeautifulSoup4, lxml, requests
  • LLM API: OpenAI, Google Gemini
  • Database: MySQL

구현된 특징 기능

  • AI 서비스 페이지 크롤링 및 본문 텍스트 추출
  • ChatGPT API 기반 서비스 설명/기능/카테고리/태그 JSON 정제
  • DB의 활성 카테고리 목록을 프롬프트에 주입해 분류 기준 고정
  • ChromeDriver 기반 웹드라이버 실행 구조
  • cron script를 통한 반복 실행 기반 마련

장점

  • 대규모 AI 서비스 소개 데이터를 수작업이 아닌 파이프라인으로 구축했습니다.
  • 크롤링과 LLM 정제를 결합해 비정형 웹 콘텐츠를 서비스 DB 포맷으로 변환했습니다.
  • 카테고리 제약을 프롬프트에 주입해 데이터 품질과 운영 기준을 함께 관리했습니다.
PythonSeleniumBeautifulSoupOpenAI APIGemini APIMySQL

리눅스긱 메인 프로젝트(2023.03.13~2023.11.16). 3인 팀 온라인 리눅스 강의 플랫폼.

FFmpeg 분할+OpenSSL 난수키 기반 동영상 보호로 무단 공유 리스크를 낮추고, 대용량 분할 업로드/병렬 처리 구조를 구현. PortOne 결제·쿠폰 흐름에서는 중복/비정상 결제 검증 로직을 추가해 취소 처리까지 자동화. 600명 SMTP 대량 메일, 수료증 PDF 발급, Pandas 관리자 리포트까지 구현.

상세 분석

RealLinux는 리눅스 강의를 판매·수강·관리하기 위한 Django 기반 온라인 학습 플랫폼입니다. 강의 목록/상세, 수강생 관리, 결제, 쿠폰, 블로그, 리뷰, 관리자 대시보드, 수료증 발급 등 교육 서비스 운영에 필요한 흐름을 하나의 서비스로 구성했습니다. 특히 동영상 강의 보호, 대용량 파일 처리, 대량 이메일 발송, 결제 예외 처리, Pandas 기반 운영 데이터 파일화처럼 실제 운영에서 필요한 기능들이 포함되어 있습니다. 단순 강의 소개 페이지가 아니라 결제와 수강 관리, 관리자 운영까지 다룬 제품형 Django 프로젝트입니다.

기술 스펙

  • Backend: Django
  • Database: PostgreSQL
  • Frontend: Django templates, SCSS, JavaScript
  • Editor: django-ckeditor
  • Runtime: Docker, Gunicorn

구현된 특징 기능

  • 강의 목록/상세/검색 및 강의 CRUD
  • 학생/결제/쿠폰 관리자 화면
  • PortOne 결제 및 쿠폰 기능
  • 수료증 이미지 생성 및 PDF 다운로드 흐름
  • 대량 이메일 발송 업무 지원
  • Pandas/openpyxl 기반 회원/운영 데이터 파일화
  • 블로그/리뷰/FAQ/회사 소개 페이지
  • Google login UI assets 및 정적 리소스 관리
  • 강의 동영상/이미지 정적 자산 운영

장점

  • 교육 플랫폼의 판매, 수강, 운영 관리 흐름을 Django로 구현했습니다.
  • 결제·쿠폰·수료증·대량 이메일처럼 실제 운영에서 필요한 기능을 다뤘습니다.
  • 관리자용 화면과 데이터 추출 기능으로 비개발자 운영 업무까지 고려했습니다.
DjangoPythonPostgreSQLFFmpegCKEditor

리눅스긱 재직 프로젝트(2022.08.29~2023.11.15). 3인 팀 GitHub 프로그래머 분석 서비스.

Join·Eager Loading 중심 ORM 최적화로 응답 4~5초 → 100~300ms 개선. GitHub API 요청 제한 이슈는 GraphQL 질의로 필요한 필드를 묶어 호출하는 방식으로 완화. 외부 임베딩용 SVG 렌더링 페이지와 i18n(한/영) 지원까지 구현.

상세 분석

Git Rainbow는 GitHub 활동 데이터를 분석해 개발자의 기술 스택 캘린더, 랭킹, README/Notion 임베딩용 SVG를 제공하는 Django 기반 서비스입니다. 사용자가 GitHub ID를 입력하면 저장소와 언어/기술 사용 정보를 수집하고, 이를 달력·랭킹·그룹 화면으로 시각화합니다. 운영 과정에서는 GitHub API rate limit, 통계 화면의 ORM 병목, 외부 사이트에 붙일 SVG 렌더링 같은 실제 서비스 이슈가 중요했습니다. 쿼리 최적화, GraphQL 활용, SVG 전용 페이지, 이미지 base64 변환, i18n 등을 적용해 단순 포트폴리오 페이지가 아니라 외부에서 임베딩 가능한 GitHub 분석 서비스로 완성한 프로젝트입니다.

기술 스펙

  • Framework: Django
  • Database: PostgreSQL
  • Frontend: Django templates, JavaScript, HTML, CSS
  • Infra: Docker, Gunicorn
  • External API: GitHub REST/GraphQL

구현된 특징 기능

  • GitHub ID 기반 기술 스택 캘린더 생성
  • README/Notion 임베딩용 SVG 렌더링
  • 기술 스택별 ranking 페이지
  • 그룹 생성/목록/그룹 랭킹 기능
  • GitHub API token 잔여량 확인 및 token 선택
  • 동적 통계 화면과 차트 렌더링
  • GitHub 소셜 로그인 및 다국어 처리
  • 이미지 base64 변환 기반 SVG 출력

이슈 해결

문제: 통계 화면 응답이 느려 사용자 경험이 떨어짐

원인: 관계 데이터 조회가 많고 ORM 쿼리가 반복되면서 화면 응답이 수 초까지 늘어났습니다.

해결: Join과 집계 함수 등 Django ORM 개선을 통해 필요한 데이터를 한 번에 가져오도록 개선했습니다.

결과: 핵심 화면 응답 속도를 실사용 가능한 수준으로 줄였습니다.

장점

  • GitHub 데이터를 서비스 화면과 외부 임베딩 산출물로 동시에 가공했습니다.
  • ORM 최적화와 API 제한 대응처럼 운영 중 발생하는 병목을 직접 해결했습니다.
  • Django 템플릿 기반 서비스에서 다국어, 랭킹, 그룹, SVG 제공까지 폭넓게 구현했습니다.
PythonDjangoPostgreSQLCeleryRedis

개발자 구인구직 및 기술 스택 매칭 마켓플레이스

Django 기반 개발자 채용 플랫폼. 회사·개발자·그룹 관리, 기술 스택 태그 시스템, 구직자-채용 매칭. BeautifulSoup 기반 기업 정보 스크래핑, Pillow 이미지 처리. PostgreSQL 백엔드.

상세 분석

Whatsgog는 개발자와 회사를 연결하는 Django 기반 구인구직 플랫폼입니다. 사용자 프로필, 회사 정보, 그룹, 기술 스택, GitHub 분석 화면, 정적 퍼블리싱 자산을 포함해 채용 서비스에 필요한 기본 도메인을 구성했습니다. Django 앱은 backend, developer, company, group, tech_stack 등으로 나뉘며, URL/view/template 구조를 통해 개발자·회사·그룹별 화면을 제공합니다. GitHub/기술스택 시각화 자산과 회사/프로필 UI가 포함되어 있어, 단순 게시판이 아니라 개발자 중심 채용·프로필 플랫폼을 목표로 한 프로젝트입니다.

기술 스펙

  • Framework: Django
  • Database: PostgreSQL
  • Frontend: Django templates, JavaScript, CSS
  • Crawling/Parsing: requests, BeautifulSoup
  • Infra: Docker, Gunicorn

구현된 특징 기능

  • 개발자 프로필 도메인
  • 회사 정보 도메인
  • 그룹 도메인
  • 기술 스택 도메인과 아이콘 자산
  • Django URL/view/template 기반 화면 구성
  • 프로필 캘린더/차트 JavaScript 자산
  • 회사/프로필/기술스택 정적 UI
  • Dockerfile 기반 실행 구성
  • PostgreSQL 연동 설정

장점

  • Django 앱 분리로 구인구직 플랫폼의 개발자·회사·그룹·기술스택 도메인을 구성했습니다.
  • HTML/CSS/JavaScript 정적 자산까지 포함해 서비스 화면을 직접 구현했습니다.
  • GitHub/기술스택 기반 개발자 프로필이라는 채용 서비스 특화 기능을 다뤘습니다.
PythonDjangoPostgreSQLBeautifulSoup

oss.kr 오픈소스 기사 정기 스크래핑. 업무 시간 30~60분 → 5~10분으로 단축 (7개월간). 리눅스긱 (2022.08~2023.11)

정부 보조금 관련 정기 업무로 수행하던 기사 스크랩 작업을 BeautifulSoup으로 자동화. 반복 수작업(문제)을 스크립트 기반 검색·정리 흐름으로 전환(해결)해 7개월 동안 일일 소요 시간을 30~60분에서 5~10분 수준으로 단축.

상세 분석

OSS Crawl은 리눅스긱 재직 중 정부 보조금 관련 정기 업무로 수행하던 오픈소스/IT 기사 스크랩을 자동화한 Python 크롤링 스크립트입니다. CIO Korea, ITWorld, ZDNet 같은 사이트에서 오픈소스, 플랫폼, SW, 보안, GPU, AI, 데이터, 네트워크, 리눅스 키워드로 검색하고, 전날 발행된 기사만 골라 제목과 링크를 텍스트 파일로 정리합니다. 기존에는 사람이 검색, 날짜 확인, 링크 복사, 문서 정리를 매일 반복해야 했지만, 스크립트로 업무 절차를 고정해 시간과 누락을 줄였습니다. 작은 자동화지만 실제 조직 업무에서 매일 30~60분 걸리던 작업을 5~10분 수준으로 줄인 실무 개선 사례입니다.

기술 스펙

  • Language: Python
  • Crawling: requests, BeautifulSoup

구현된 특징 기능

  • 오픈소스/플랫폼/SW/GPU/AI/데이터/네트워크/리눅스 키워드 검색 URL 구성
  • 사이트별 HTML 구조 파싱
  • 기사 날짜 파싱 및 전일 기사 필터링
  • 기사 제목과 링크 텍스트 파일 저장
  • CIO Korea, ITWorld, ZDNet별 별도 스크립트 구성
  • 저작권 동의 사이트와 참고 사이트 목록 문서화

장점

  • 반복 수작업을 스스로 문제 정의하고 자동화했습니다.
  • 현업에서 바로 쓰이는 간단한 스크립트로 시간 절감 효과를 만들었습니다.
  • 사이트별 HTML 구조 차이를 파악해 각각의 파서를 구성했습니다.
PythonrequestsBeautifulSoup

기술 스택

Backend

  • FastAPI
  • Python
  • PostgreSQL
  • SQLAlchemy

Frontend

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS

DevOps

  • Docker
  • Nginx
  • Linux

Mobile

  • React Native
  • Expo
  • Redux

Cloud

  • AWS EC2

Embedded

  • ESP32-S3
  • FreeRTOS
  • C/C++
  • KiCad

Tools

  • Git
  • GitHub/GitLab
  • VS Code
  • Postman

연락처

새로운 프로젝트나 협업에 관심 있으시면 연락해주세요.