</>동방건우 GitHub

Java · Spring · SQL · GitHub Actions

상태 로직을 구현하고,
데이터 수집을
자동화합니다

Spring 기반 팀 프로젝트에서는 분양·포인트 상태 로직을 구현했고, 개인 프로젝트에서는 외부 API 수집을 GitHub Actions와 정적 JSON 구조로 분리했습니다.

Portfolio Points 주요 구현 흐름
  1. PETIQUE신청·승인·완료로 이어지는 분양 상태 흐름 구현과 배포 환경 점검
  2. Review Tag출석·퀘스트·상점·관리자 지급에서 발생하는 포인트 변경을 공통 기준으로 처리
  3. Data ProjectsAPI 키가 브라우저에 노출되지 않도록 Actions 수집과 JSON 조회를 분리
ClientReact / JSP
BackendSpring / Node Script
DataSQL / JSON
DeployRender / Pages
2Spring 기반 서비스
3외부 API 수집 자동화
5공개 프로젝트
CI/CDActions 기반 수집·배포

Backend Focus

서비스 로직과 데이터 자동화를 배포 흐름까지 연결합니다

기능 구현에서 멈추지 않고, 상태 로직·데이터 수집·배포 설정이 하나의 흐름으로 이어지도록 구성했습니다.

01

상태 전이와 서비스 로직

분양 신청→승인→완료, 출석→포인트→상점처럼 사용자 행동에 따라 이어지는 상태 전이를 서버 로직으로 구현했습니다.

PETIQUE · Review Tag
02

DB 문법과 실행 환경

원본 팀 프로젝트는 Oracle/JSP 기반 구현 범위를 확인할 수 있도록 연결했고, PostgreSQL/Supabase/Render 관련 별도 점검 항목은 기술 노트로 분리했습니다.

SQL patch · HikariCP · JVM/Tomcat
03

API 수집 자동화

외부 API 호출을 브라우저에서 분리하고, GitHub Actions가 데이터를 수집·검증·JSON화하도록 구성했습니다.

KAMIS · OpenDART · Opinet

대표 사례

PETIQUE: 분양 상태 로직과 배포 환경 점검

기존 JSP/Spring MVC 팀 프로젝트에서는 분양 기능을 맡았습니다. 이후 별도로 점검한 SQL 문법, 이미지 업로드, 실행 설정 항목은 기술 노트에 정리했습니다. 팀 프로젝트 GitHub는 원본 구현 범위 확인용으로 연결했습니다.

PETIQUE 서비스 화면

시연 페이지는 포트폴리오용 데이터로 구성했으며, 배포 환경 점검 내용은 기술 노트에 별도로 요약했습니다.

Before

기존 팀 프로젝트

  • Oracle 기반 JSP/Spring MVC 구조
  • 분양 신청·승인·거절·완료 기능 구현
  • 상태별 버튼과 권한 분기 처리
Note

별도 점검 항목

  • PostgreSQL/Supabase 기준 SQL 차이 점검
  • Render 환경 기준 pool/thread/JVM 설정 점검
  • 이미지 업로드, CSRF, BCrypt, 입력값 정제 점검
담당 역할분양 리스트·상세·신청자 관리 화면, 신청/승인/완료 상태 흐름 구현
중점 구현상태 전이, 권한 검증, 소유자 변경, 후기 연결을 서버 로직 기준으로 구현
점검 포인트DB 문법 차이, 원격 이미지 업로드, 제한된 배포 리소스에 맞춘 실행 설정 점검
범위 구분 팀 프로젝트 GitHub는 원본 구현 범위를, 기술 노트는 별도로 점검한 PostgreSQL/Supabase/Render 항목을 설명합니다.

Projects

프로젝트 목록

Spring 기반 서비스 프로젝트와 신규 데이터 자동화 프로젝트를 구분해 보여줍니다.

최종 점검 · 2026.05

Spring 서비스 프로젝트

팀 프로젝트에서 맡은 서버 로직과, 기술 노트로 정리한 실행 환경 점검 내용을 구분해 보여줍니다.

JSP / Spring MVCPETIQUE 화면

PETIQUE

5인 팀 프로젝트 · 분양 기능 담당

반려동물 분양 게시판의 신청, 승인, 거절, 완료, 후기 연결 흐름을 담당했습니다. 배포 환경 점검 항목은 팀 프로젝트 GitHub와 분리해 기술 노트로 요약했습니다.

역할
분양 상태 전이, 권한별 버튼, 신청자 관리, 완료 후 소유자 변경
백엔드 포인트
서버 단 검증, 분양 상태 전이, Render 실행 설정 점검, 원격 이미지 업로드 점검
JavaSpring MVCJSPOracleSQL 점검Render 점검
Spring Boot / ReactReview Tag 대시보드

Review Tag

파이널 프로젝트 · 포인트/상점 흐름 담당

출석, 퀘스트, 상점, 관리자 지급에서 발생하는 포인트 변경을 공통 서비스 기준으로 처리하고, 잔액 검증과 이력 저장을 함께 구현했습니다.

역할
출석·퀘스트·상점·관리자 지급에 따른 포인트 적립/차감 처리
백엔드 포인트
JWT 인증, MyBatis, 공통 포인트 처리, Oracle 기반 이력 관리
Java 21Spring BootMyBatisOracleJWT

Data Automation

신규 프로젝트 3개의 공통 연동 구조

외부 API 호출을 프론트에서 분리하고, GitHub Actions가 수집한 데이터를 정적 JSON으로 생성하도록 구성했습니다.

  1. External API
  2. GitHub Actions
  3. Node Script
  4. Validate / Normalize
  5. Static JSON
  6. React UI

신규 데이터 프로젝트

KAMIS, OpenDART, Opinet 데이터를 수집·정규화하고 정적 JSON으로 제공한 개인 프로젝트입니다.

팜프라이스 노트 화면
KAMIS API

팜프라이스 노트

농산물 가격 추이를 수집하고, 날짜·가격을 정규화해 React 대시보드에서 조회합니다.

  • Actions 수집 후 JSON 생성
  • 품목/품종 코드 fallback
  • 가격 데이터 검증
ReactViteGitHub Actions
상장노트 화면
OpenDART API

상장노트

OpenDART 공시 데이터를 정리해 상장·공모청약 일정을 조회하는 학습용 데모입니다. 투자 판단이나 청약 권유가 아닌 데이터 처리 경험을 보여주는 프로젝트입니다.

  • ZIP/XML 문서 처리
  • CP949/EUC-KR 인코딩 대응
  • 공시 문맥 기반 일정 추출
ReactAdmZipiconv-lite
리터세이브 화면
Opinet API

리터세이브

지역별 주유소 가격 데이터를 정리하고, 좌표 변환과 가격 이력 JSON을 분리해 제공합니다.

  • 인증 파라미터 fallback
  • KATEC → WGS84 변환
  • 현재 데이터와 이력 분리
Reactproj4Static JSON

Troubleshooting

문제 상황과 해결 과정

프로젝트에서 마주친 문제를 문제·조치·결과 순서로 정리했습니다.

01

DB 문법 차이 점검

문제 Oracle 기준 SQL과 실행 방식은 PostgreSQL/Supabase 환경에서 그대로 맞지 않을 수 있습니다.

조치 시퀀스, boolean, limit, cast, index, view 기준의 차이를 확인하고 기술 노트로 정리했습니다.

결과 원본 구현 범위와 기술 노트를 분리해 설명 범위를 명확히 했습니다.

02

저사양 배포 환경 대응

문제 제한된 서버 환경에서는 커넥션과 스레드 수가 과하면 안정성이 떨어질 수 있습니다.

조치 HikariCP pool, Tomcat thread, JVM 옵션을 제한된 리소스 기준으로 점검했습니다.

결과 과한 커넥션·스레드 사용을 피하는 실행 설정 항목을 정리했습니다.

03

포인트 로직 분산

문제 적립·차감·환불·구매 흐름이 화면 기능별로 흩어지면 이력 관리가 어려워집니다.

조치 포인트 공통 처리 기준을 두고 잔액 검증과 이력 저장을 같은 흐름에서 처리했습니다.

결과 각 기능에서 발생한 포인트 변화가 같은 기준의 이력으로 남도록 구성했습니다.

04

API Key 노출 위험

문제 React가 외부 API를 직접 호출하면 키가 브라우저에 노출될 수 있습니다.

조치 GitHub Actions에서 데이터를 수집하고 정적 JSON만 공개하도록 분리했습니다.

결과 화면은 JSON 조회만 담당하고, 수집 책임은 Actions 파이프라인으로 분리했습니다.

05

OpenDART 문서 처리

문제 공시 원문은 ZIP/XML 구조와 한글 인코딩 문제가 함께 발생할 수 있습니다.

조치 AdmZip, iconv-lite로 압축과 인코딩을 처리하고 문맥 기반 추출을 구성했습니다.

결과 원문 문서 기반으로 일정 정보를 정리하는 흐름을 구성했습니다.

06

좌표·인증 파라미터 예외

문제 Opinet 응답은 인증 파라미터와 좌표 체계 처리가 필요했습니다.

조치 code/certkey/both fallback과 KATEC → WGS84 변환을 적용했습니다.

결과 지도 이동과 가격 조회에 필요한 좌표 데이터를 화면에서 활용할 수 있게 했습니다.

Development Records

프로젝트별 개발 기록

프로젝트별 기술 스택, 주요 기능, 문제 해결 과정을 한 번에 확인할 수 있도록 구성했습니다.

PETIQUE분양 흐름 담당 + 배포 환경 점검

기술 스택

Java, Spring MVC, JSP, JSTL, JdbcTemplate, Oracle, SQL 점검, Render 환경 점검, ImgBB, BCrypt, CSRF

주요 기능

분양글 작성/조회, 신청, 승인, 거절, 완료, 취소, 후기 연결, 권한별 버튼, 신청자 관리, 알림·마이페이지 연계

트러블슈팅

팀 프로젝트 GitHub는 원본 구현 범위 확인용으로 두고, PostgreSQL/Supabase/Render 관련 별도 점검 항목은 기술 노트로 분리했습니다.

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

JavaSpring BootSpring MVCSpring SecurityJSPJSTLMyBatis

PETIQUE, Review Tag의 서비스 로직과 API 구현에 사용했습니다.

Database

PostgreSQLSupabaseOracleSQLIndexDB ViewSQL Patch

PETIQUE는 원본 팀 프로젝트의 Oracle 기반 구현 범위와 PostgreSQL/Supabase 기술 노트를 구분했고, Review Tag는 Oracle 기반으로 구현했습니다.

Frontend

ReactViteJavaScriptjQueryHTMLCSS

데이터 조회 화면과 JSP 기반 화면 흐름 구현에 사용했습니다.

Data & API

KAMIS APIOpenDART APIOpinet APITMDB APIGemini APIJSONXML

외부 데이터 수집, 정규화, 정적 JSON 생성에 사용했습니다.

Deploy & Automation

GitHub ActionsGitHub PagesVercelRenderCloudflare Pages

정적 데이터 생성, 서비스 배포, 포트폴리오 배포에 사용했습니다.

Security & Quality

BCryptCSRF입력값 정제CORS환경변수 관리

인증, 입력값 처리, 배포 연결 과정에서 기본 보안 항목을 점검했습니다.

Contact

기능 구현을 실제 서비스 흐름으로 연결합니다

데모는 포트폴리오 시연용 데이터로 구성했으며, 외부 API 키와 환경변수는 공개하지 않았습니다.