Java · Spring · PostgreSQL · GitHub Actions
상태 로직을 구현하고,
데이터 수집을
자동화합니다
Spring 기반 팀 프로젝트에서는 분양·포인트 상태 로직을 구현했고, 개인 프로젝트에서는 외부 API 수집을 GitHub Actions와 정적 JSON 구조로 분리했습니다.
- PETIQUE신청·승인·완료로 이어지는 분양 상태 흐름 구현과 PostgreSQL/Supabase/Render 후속 개선
- Review Tag출석·퀘스트·상점·관리자 지급에서 발생하는 포인트 변경을 공통 기준으로 처리
- Data ProjectsAPI 키가 브라우저에 노출되지 않도록 Actions 수집과 JSON 조회를 분리
Backend Focus
서비스 로직과 데이터 자동화를 배포 흐름까지 연결합니다
기능 구현에서 멈추지 않고, 상태 로직·데이터 수집·배포 설정이 하나의 흐름으로 이어지도록 구성했습니다.
상태 전이와 서비스 로직
분양 신청→승인→완료, 출석→포인트→상점처럼 사용자 행동에 따라 이어지는 상태 전이를 서버 로직으로 구현했습니다.
PETIQUE · Review TagDB 전환과 실행 환경
PETIQUE 후속 버전을 PostgreSQL, Supabase, Render 환경에서 실행되도록 SQL 문법과 실행 설정을 보완했습니다.
SQL patch · HikariCP · JVM/TomcatAPI 수집 자동화
외부 API 호출을 브라우저에서 분리하고, GitHub Actions가 데이터를 수집·검증·JSON화하도록 구성했습니다.
KAMIS · OpenDART · Opinet대표 개선 사례
PETIQUE: 분양 상태 로직과 PostgreSQL 배포 환경을 보완한 사례
기존 JSP/Spring MVC 팀 프로젝트에서 분양 기능을 맡았고, 후속 버전에서는 PostgreSQL/Supabase/Render 환경에 맞춰 SQL, 이미지 업로드, 실행 설정을 보완했습니다. 신청·승인·완료로 이어지는 상태 전이가 배포 환경에서도 동작하도록 구성했습니다.
시연 페이지는 포트폴리오용 데이터로 구성했으며, 후속 개선 범위는 개선 메모에 별도로 기록했습니다.
기존 팀 프로젝트
- Oracle 기반 JSP/Spring MVC 구조
- 분양 신청·승인·거절·완료 기능 구현
- 상태별 버튼과 권한 분기 처리
후속 개선
- PostgreSQL/Supabase 기준 SQL 보완
- Render 환경에 맞춘 pool/thread/JVM 설정
- 이미지 업로드, CSRF, BCrypt, 입력값 정제 점검
Projects
프로젝트 목록
Spring 기반 서비스 프로젝트와 신규 데이터 자동화 프로젝트를 구분해 보여줍니다.
Spring 서비스 프로젝트
팀 프로젝트에서 맡은 서버 로직과, 이후 보완한 실행 환경·데이터 구조·배포 설정을 함께 정리했습니다.

PETIQUE
5인 팀 프로젝트 · 분양 기능 담당반려동물 분양 게시판의 신청, 승인, 거절, 완료, 후기 연결 흐름을 담당했고, 후속 버전에서 PostgreSQL·Supabase·Render 실행 환경을 보완했습니다.
- 역할
- 분양 상태 전이, 권한별 버튼, 신청자 관리, 완료 후 소유자 변경
- 백엔드 포인트
- 서버 단 검증, PostgreSQL SQL 보완, Render 실행 설정, 원격 이미지 업로드

Review Tag
파이널 프로젝트 · 포인트/상점 흐름 담당출석, 퀘스트, 상점, 관리자 지급에서 발생하는 포인트 변경을 공통 서비스 기준으로 처리하고, 잔액 검증과 이력 저장을 함께 구현했습니다.
- 역할
- 출석·퀘스트·상점·관리자 지급에 따른 포인트 적립/차감 처리
- 백엔드 포인트
- JWT 인증, MyBatis, 공통 포인트 처리, Oracle 기반 이력 관리
FE GitHub · github.com/gwcloud72/kh16final-reviewtag-fe
Data Automation
신규 프로젝트 3개의 공통 연동 구조
외부 API 호출을 프론트에서 분리하고, GitHub Actions가 수집한 데이터를 정적 JSON으로 생성하도록 구성했습니다.
- External API
- GitHub Actions
- Node Script
- Validate / Normalize
- Static JSON
- React UI
신규 데이터 프로젝트
KAMIS, OpenDART, Opinet 데이터를 수집·정규화하고 정적 JSON으로 제공한 개인 프로젝트입니다.
Troubleshooting
문제 상황과 해결 과정
프로젝트에서 마주친 문제를 문제·조치·결과 순서로 정리했습니다.
Oracle → PostgreSQL 전환
문제 Oracle 기준 SQL과 실행 방식이 PostgreSQL/Supabase 환경에 바로 맞지 않았습니다.
조치 시퀀스, boolean, limit, cast, index, view 패치를 PostgreSQL 기준으로 보완했습니다.
결과 Render/Supabase 배포 구조에서 동작 가능한 후속 버전을 구성했습니다.
저사양 배포 환경 대응
문제 제한된 서버 환경에서는 커넥션과 스레드 수가 과하면 안정성이 떨어질 수 있습니다.
조치 HikariCP pool, Tomcat thread, JVM 옵션을 제한된 리소스에 맞게 낮춰 잡았습니다.
결과 과한 커넥션·스레드 사용을 피하는 실행 설정으로 배포 환경을 구성했습니다.
포인트 로직 분산
문제 적립·차감·환불·구매 흐름이 화면 기능별로 흩어지면 이력 관리가 어려워집니다.
조치 포인트 공통 처리 기준을 두고 잔액 검증과 이력 저장을 같은 흐름에서 처리했습니다.
결과 각 기능에서 발생한 포인트 변화가 같은 기준의 이력으로 남도록 구성했습니다.
API Key 노출 위험
문제 React가 외부 API를 직접 호출하면 키가 브라우저에 노출될 수 있습니다.
조치 GitHub Actions에서 데이터를 수집하고 정적 JSON만 공개하도록 분리했습니다.
결과 화면은 JSON 조회만 담당하고, 수집 책임은 Actions 파이프라인으로 분리했습니다.
OpenDART 문서 처리
문제 공시 원문은 ZIP/XML 구조와 한글 인코딩 문제가 함께 발생할 수 있습니다.
조치 AdmZip, iconv-lite로 압축과 인코딩을 처리하고 문맥 기반 추출을 구성했습니다.
결과 원문 문서 기반으로 일정 정보를 정리하는 흐름을 구성했습니다.
좌표·인증 파라미터 예외
문제 Opinet 응답은 인증 파라미터와 좌표 체계 처리가 필요했습니다.
조치 code/certkey/both fallback과 KATEC → WGS84 변환을 적용했습니다.
결과 지도 이동과 가격 조회에 필요한 좌표 데이터를 화면에서 활용할 수 있게 했습니다.
Development Records
프로젝트별 개발 기록
프로젝트별 기술 스택, 주요 기능, 문제 해결 과정을 한 번에 확인할 수 있도록 구성했습니다.
PETIQUE분양 흐름 담당 + PostgreSQL/Supabase/Render 후속 개선
기술 스택
Java, Spring MVC, JSP, JSTL, JdbcTemplate, PostgreSQL, Supabase, Render, Docker, ImgBB, BCrypt, CSRF
주요 기능
분양글 작성/조회, 신청, 승인, 거절, 완료, 취소, 후기 연결, 권한별 버튼, 신청자 관리, 알림·마이페이지 연계
트러블슈팅
기존 PETIQUE 프로젝트를 PostgreSQL 실행 환경에 맞춰 SQL과 설정을 보완하고, Render 환경에 맞춰 DB pool, thread, JVM 옵션을 조정했습니다.
Review Tag포인트/출석/상점 기능과 이력 관리
기술 스택
Java 21, Spring Boot, MyBatis, Oracle, Spring Security, JWT, React, Vite, Axios, Vercel
주요 기능
콘텐츠 탐색, 리뷰 작성, 퀴즈, 출석, 일일 퀘스트, 포인트 적립·차감, 상점, 인벤토리, 관리자 기능
트러블슈팅
포인트 변경을 공통 처리 기준으로 모아 잔액 검증과 이력 저장을 함께 처리하고, 출석·상점·관리자 지급 흐름이 같은 이력 기준으로 남도록 구현했습니다.
팜프라이스 노트KAMIS 가격 데이터 + 정적 JSON 배포
기술 스택
React, Vite, JavaScript, Node.js, KAMIS API, Gemini API, GitHub Actions, GitHub Pages
주요 기능
농산물 가격 추이, 기간별 그래프, 현재가·평균가·최고가·최저가, 관심 품목, AI 리포트
트러블슈팅
API Key가 브라우저에 노출되지 않도록 Actions에서 실데이터를 수집하고, 날짜·가격 정규화와 품종 코드 fallback을 구현했습니다.
상장노트OpenDART 공시 기반 일정 조회 데모
기술 스택
React, Vite, JavaScript, Node.js, OpenDART API, AdmZip, iconv-lite, GitHub Actions, GitHub Pages
주요 기능
회사명·공시명 검색, 진행 상태 필터, 일정 요약, 공시 원문 링크, 상세 모달, 다크모드
트러블슈팅
ZIP/XML 문서와 한글 인코딩을 처리하고, 공시 원문에서 청약·상장 관련 일정 정보를 문맥 기반으로 추출했습니다.
리터세이브Opinet 가격 데이터와 좌표 변환
기술 스택
React, Vite, JavaScript, Node.js, Opinet API, proj4, GitHub Actions, GitHub Pages
주요 기능
유종·지역별 최저가 주유소 조회, 가격 정렬, 페이지네이션, 카카오맵 길찾기, 가격 이력
트러블슈팅
인증 파라미터 fallback을 구성하고, KATEC 좌표를 WGS84로 변환해 지도 이동에 사용할 수 있도록 처리했습니다.
Tech Stack
프로젝트에서 실제 사용한 기술
사용 기술은 실제 프로젝트에 적용한 범위가 보이도록 그룹별로 구성했습니다.
Backend
PETIQUE, Review Tag의 서비스 로직과 API 구현에 사용했습니다.
Database
PETIQUE 후속 개선은 PostgreSQL/Supabase 기준으로 보완했고, Review Tag는 Oracle 기반으로 구현했습니다.
Frontend
데이터 조회 화면과 JSP 기반 화면 흐름 구현에 사용했습니다.
Data & API
외부 데이터 수집, 정규화, 정적 JSON 생성에 사용했습니다.
Deploy & Automation
정적 데이터 생성, 서비스 배포, 포트폴리오 배포에 사용했습니다.
Security & Quality
인증, 입력값 처리, 배포 연결 과정에서 기본 보안 항목을 점검했습니다.
Contact
기능 구현을 실제 서비스 흐름으로 연결합니다
데모는 포트폴리오 시연용 데이터로 구성했으며, 외부 API 키와 환경변수는 공개하지 않았습니다.