안녕하세요. 동방건우입니다.

만든 서비스를 배포하고 계속 고치는 개발자

기능을 로컬에서 끝내지 않고, 배포된 화면에서 다시 확인하며 고치는 과정을 중요하게 생각합니다. 최근에는 공공데이터를 GitHub Actions로 수집해 정적 JSON으로 만들고, React 화면에서 바로 볼 수 있도록 정리했습니다. 기존 팀 프로젝트는 1월부터 다시 보며 UI, 오류 처리, 배포 설정을 꾸준히 손보고 있습니다.

5배포 프로젝트
3데이터 자동화 프로젝트
2리디자인 진행 프로젝트
CI/CD배포 자동화 경험
React
Spring
JSP
Oracle
PostgreSQL
Actions
📁 프로젝트마다 배포 링크와 작업 기록 정리
📝 왜 만들었는지, 막혔던 부분, 수정 내용을 함께 기록
🔗 KAMIS · OpenDART · Opinet · TMDB · EmailJS · imgBB 연동
GitHub Actions, Vercel, Render, Cloudflare Pages 배포 경험

프로젝트 모음

배포 중인 프로젝트

상세 기록 보기 →
팜프라이스 노트 미리보기
배포 중2026.03.02 기획 시작

팜프라이스 노트

농산물 가격을 매번 검색하지 않아도 흐름을 볼 수 있게 만든 개인 프로젝트입니다.

ReactViteKAMIS API
GitHub Actions · GitHub Pages · 정적 JSON
상장노트 미리보기
배포 중2026.03.02 기획 시작

상장노트

공모와 상장 일정을 보기 쉽게 정리해 두려고 만든 데이터 정리 프로젝트입니다.

ReactViteOpenDART API
ZIP 처리 · 인코딩 변환 · GitHub Actions
리터세이브 미리보기
배포 중2026.03.02 기획 시작

리터세이브

주유 전 가격을 빠르게 비교할 수 있도록 데이터와 화면을 같이 정리한 프로젝트입니다.

ReactViteOpinet API
Static JSON · 가격 비교 · GitHub Pages
Review Tag 미리보기
리디자인 진행2026.01 ~ 현재 수정 중

Review Tag

영화·애니 리뷰 커뮤니티에 퀴즈와 포인트 보상 기능을 함께 넣은 서비스입니다.

ReactSpring BootPostgreSQL
TMDB · JWT · 포인트 시스템 · Vercel
PETIQUE 미리보기
리디자인 진행2026.01 ~ 현재 수정 중

PETIQUE

반려동물 분양 신청, 후기, 커뮤니티가 이어지도록 다시 다듬고 있는 서비스입니다.

JSPjQueryPostgreSQL
Spring MVC · Render · Supabase · EmailJS · imgBB

자동화 / 배포

CI/CD · 배포 경험

GitHub Actions외부 API 수집, JSON 생성, 빌드, 정적 배포 흐름을 자동화했습니다.
GitHub Pages팜프라이스 노트, 상장노트, 리터세이브를 정적 사이트로 배포했습니다.
VercelReview Tag 프론트엔드를 배포하고 수정 사항을 빠르게 확인했습니다.
RenderPETIQUE 서버 배포, 환경변수, 무료 티어 제약을 같이 점검했습니다.
Cloudflare Pages이 포트폴리오를 정적 사이트로 배포할 수 있게 구성했습니다.

데이터 처리

데이터 파이프라인 처리 경험

1API 수집
2값 정리
3JSON 생성
4화면 연결
5배포 반영

공공 API를 화면에서 바로 호출하면 키 노출과 응답 지연 문제가 생길 수 있어, GitHub Actions에서 먼저 데이터를 받아 필요한 형태로 바꾼 뒤 정적 JSON으로 저장했습니다. 화면에서는 이미 정리된 데이터를 읽기만 하도록 만들어 배포 후에도 관리하기 쉽게 구성했습니다.

개발 기록

프로젝트별 개발 이유와 트러블슈팅

개인 프로젝트 · 데이터 자동화

팜프라이스 노트

2026.03.02 기획 시작 · 현재 배포 중

배포 보기

만든 이유

농산물 가격은 매일 달라지는데, 실제로 비교하려고 하면 여러 페이지를 다시 찾아봐야 했습니다. 그래서 자주 보는 품목의 가격 흐름만 따로 모아두고, 전날과 비교했을 때 어떤 변화가 있는지 바로 확인하는 화면을 만들었습니다.

담당 작업

  • KAMIS 데이터 수집 구조 확인
  • 품목별 가격 데이터 정리와 화면 카드 구성
  • 정적 JSON 생성 후 React 화면에서 조회
  • GitHub Actions로 데이터 갱신과 배포 흐름 연결

개발일지

  1. 2026.03.02농산물 가격 정보를 모아 보여주는 방향으로 기획을 시작했습니다. 처음에는 품목 수를 많이 넣기보다, 가격 변화를 읽기 쉬운 화면을 만드는 쪽에 집중했습니다.
  2. 3월 초KAMIS 응답값을 확인하면서 화면에 바로 쓰기 어려운 항목을 걸러냈습니다. 날짜, 품목명, 가격처럼 꼭 필요한 값만 먼저 정리했습니다.
  3. 3월 중순가격 카드, 비교 문구, 그래프 영역을 만들었습니다. 숫자만 나열하면 보기 어려워서 상승·하락 여부가 먼저 보이도록 배치를 바꿨습니다.
  4. 3월 말GitHub Actions에서 데이터를 받아 JSON으로 저장하고, 빌드 후 GitHub Pages에 반영되는 흐름을 정리했습니다.
  5. 4월 이후화면 문구, 빈 데이터 처리, 모바일 간격을 보완하면서 포트폴리오에서도 설명하기 좋은 구조로 정리하고 있습니다.

트러블슈팅

  • 응답값이 일정하지 않음: 특정 품목에서 필요한 값이 비어 있어 화면이 깨졌습니다. 수집 단계에서 기본값을 넣고, 화면에서는 빈 데이터 안내 문구를 보여주도록 바꿨습니다.
  • API Key 노출 문제: 브라우저에서 직접 호출하지 않고 GitHub Actions에서 데이터를 먼저 받아오도록 바꿨습니다. 배포된 화면은 정적 JSON만 읽습니다.
  • 숫자 가독성 문제: 가격과 등락폭이 붙어 보이는 문제가 있어 카드 구조를 나누고, 강조해야 할 값만 진하게 보이도록 수정했습니다.

개인 프로젝트 · 공시 데이터 정리

상장노트

2026.03.02 기획 시작 · 현재 배포 중

배포 보기

만든 이유

상장 일정과 공시 정보를 확인할 때 필요한 정보가 흩어져 있어 다시 찾아보는 시간이 많았습니다. 일정, 기업명, 상태를 한 화면에서 확인할 수 있게 정리해두면 나중에 다시 보기 편하겠다고 생각했습니다.

담당 작업

  • OpenDART 데이터 수집 방식 확인
  • ZIP 파일 추출과 문자 인코딩 처리
  • 기업/일정/상태 중심의 데이터 형태로 재정리
  • 검색과 필터가 가능한 React 화면 구성

개발일지

  1. 2026.03.02상장 관련 데이터를 모아서 보는 서비스를 기획했습니다. 처음에는 화면보다 데이터가 어떤 식으로 들어오는지 파악하는 데 시간을 썼습니다.
  2. 3월 초OpenDART 데이터 구조를 확인하고, 압축 파일을 풀어 필요한 값만 남기는 스크립트 방향을 잡았습니다.
  3. 3월 중순한글 인코딩이 깨지는 문제를 처리했습니다. 파일을 추출한 뒤 바로 쓰지 않고 변환 과정을 거쳐 JSON으로 만들었습니다.
  4. 3월 말기업명 검색, 일정 표시, 상태 구분을 화면에 반영했습니다. 사용자가 처음 들어와도 어떤 일정인지 알 수 있게 문구를 다듬었습니다.
  5. 4월 이후데이터 갱신 흐름과 카드 UI를 보완하면서 배포 후에도 다시 확인하기 편한 형태로 정리하고 있습니다.

트러블슈팅

  • 한글 깨짐: 압축을 푼 뒤 기업명과 공시명이 깨져 보여 인코딩 변환을 추가했습니다. 이후 JSON으로 저장해 화면에서는 깨진 값을 다시 처리하지 않도록 했습니다.
  • 필요한 값만 고르기 어려움: 원본 데이터가 화면에 그대로 쓰기에는 복잡했습니다. 일정과 검색에 필요한 값만 별도 구조로 정리했습니다.
  • 자동 갱신 관리: 수동으로 파일을 바꾸는 방식은 오래 유지하기 어렵다고 판단해 GitHub Actions 흐름으로 바꿨습니다.

개인 프로젝트 · 가격 비교

리터세이브

2026.03.02 기획 시작 · 현재 배포 중

배포 보기

만든 이유

주유소 가격은 한 번에 비교해서 보고 싶은 정보인데, 실제로는 지역과 유종을 바꿔가며 찾아야 했습니다. 그래서 필요한 조건을 고르면 가격 차이를 바로 볼 수 있는 화면을 목표로 만들었습니다.

담당 작업

  • Opinet 가격 데이터 수집 구조 확인
  • 지역, 유종, 가격 기준 정렬 로직 구성
  • 정적 JSON 분리와 화면 조회 구조 정리
  • GitHub Pages 배포와 데이터 갱신 흐름 연결

개발일지

  1. 2026.03.02주유소 가격 비교 서비스를 기획했습니다. 처음에는 지도보다 가격 비교 자체가 잘 읽히는 화면을 우선으로 잡았습니다.
  2. 3월 초Opinet 응답값을 확인하고, 지역 코드와 유종 정보가 화면 필터와 어떻게 연결될지 정리했습니다.
  3. 3월 중순최저가 정렬, 지역별 비교, 가격 카드 UI를 만들었습니다. 데이터가 비어 있을 때 화면이 어색하지 않도록 안내 문구도 넣었습니다.
  4. 3월 말JSON 파일을 나누고 배포 구조를 정리했습니다. 데이터가 많아져도 첫 화면이 너무 무겁지 않도록 수정했습니다.
  5. 4월 이후모바일 화면, 가격 표시 형식, 필터 동작을 계속 손보며 실제로 보기 편한 서비스 형태로 다듬고 있습니다.

트러블슈팅

  • 빈 응답 처리: 특정 지역이나 유종에서 데이터가 비어 오는 경우가 있었습니다. 이때 화면이 멈추지 않도록 빈 목록 안내와 기본 상태 처리를 추가했습니다.
  • 파일이 무거워지는 문제: 한 파일에 모든 데이터를 넣으면 로딩이 길어질 수 있어 정적 JSON을 나누고 필요한 데이터만 읽도록 정리했습니다.
  • 비교 기준이 헷갈림: 가격순, 지역순, 유종별 기준이 섞여 보이지 않도록 화면 문구와 정렬 기준을 다시 잡았습니다.

팀 프로젝트 리디자인 · 기능 보완

Review Tag

2026.01 ~ 현재 수정 중 · 현재 배포 중

배포 보기

만든 이유

Review Tag는 이름 그대로 태그 정리 서비스가 아니라, 영화·애니 리뷰 커뮤니티를 기준으로 만든 브랜드명입니다. 기존 프로젝트를 다시 보면서 리뷰, 게시판, 퀴즈, 포인트 보상 기능이 따로 보이지 않고 하나의 서비스처럼 이어지도록 리디자인하고 있습니다.

담당 작업

  • React 화면 구조와 CSS 충돌 구간 정리
  • TMDB 기반 영화·애니 콘텐츠 화면 보완
  • 출석, 퀘스트, 룰렛, 상점, 인벤토리 흐름 정리
  • Spring Boot API, JWT, PostgreSQL 연동 화면 점검

개발일지

  1. 2026.01기존 프로젝트를 다시 열어 보면서 메인 화면, 메뉴, 로그인 후 이동 흐름을 정리했습니다. 우선 “영화·애니 리뷰 커뮤니티”라는 방향이 보이게 만드는 데 집중했습니다.
  2. 2026.02포인트 관련 기능을 다시 확인했습니다. 출석, 퀘스트, 룰렛, 상점, 인벤토리, 포인트 이력이 따로 놀지 않도록 화면 연결을 정리했습니다.
  3. 2026.03리뷰 목록, 게시판, 프로필, 관리자 화면에서 깨지는 UI를 수정했습니다. 긴 제목, 닉네임, 카드 높이처럼 실제 화면에서 보이는 문제를 많이 잡았습니다.
  4. 2026.04비회원 접근, 401/403/404 화면, 관리자 권한, 신고·관리 화면을 점검했습니다. 배포 화면에서 확인되는 오류를 기준으로 수정했습니다.
  5. 현재브랜드 느낌을 유지하면서도 화면이 과하지 않게 보이도록 계속 리디자인 중입니다. 기능 추가보다 기존 기능을 덜 헷갈리게 만드는 쪽에 초점을 두고 있습니다.

트러블슈팅

  • 포인트 흐름이 분산됨: 포인트 적립, 사용, 이력, 인벤토리가 서로 다른 화면에 흩어져 있어 사용자가 흐름을 이해하기 어려웠습니다. 메뉴와 화면 배치를 다시 잡고, 포인트 관련 화면을 한 흐름으로 정리했습니다.
  • CSS 충돌: 여러 페이지에서 같은 이름의 클래스가 겹쳐 예상하지 않은 스타일이 적용됐습니다. 공통 레이아웃과 페이지별 스타일을 나누고, 깨지는 카드 영역부터 수정했습니다.
  • 권한별 화면 처리: 비회원, 로그인 회원, 관리자에게 보여야 하는 버튼이 달라서 헷갈리는 부분이 있었습니다. 프론트 가드와 API 응답 상태를 함께 보며 노출 조건을 점검했습니다.

팀 프로젝트 리디자인 · 배포 구조 보완

PETIQUE

2026.01 ~ 현재 수정 중 · 현재 배포 중

배포 보기

만든 이유

반려동물 분양 서비스는 게시글만 보여주면 흐름이 끊깁니다. 신청, 예약, 완료, 후기까지 연결되어야 실제 서비스처럼 보인다고 생각했습니다. 그래서 기존 프로젝트를 1월부터 다시 보면서 분양 상태와 커뮤니티 흐름을 계속 수정하고 있습니다.

담당 작업

  • JSP와 jQuery 기반 화면 흐름, Spring MVC 컨트롤러 구조 정리
  • 분양 신청, 승인, 완료, 후기 연결 로직 보완
  • PostgreSQL/Supabase 배포 구조와 SQL 정리
  • Render, imgBB, EmailJS 환경 설정과 QA 문서화

개발일지

  1. 2026.01기존 PETIQUE 프로젝트를 다시 정리하기 시작했습니다. 먼저 분양 게시글과 신청 흐름이 어디서 끊기는지 확인했습니다.
  2. 2026.02신청, 승인, 거절, 완료 상태를 더 명확하게 나눴습니다. 화면 버튼만 바꾸는 것이 아니라 서버에서도 상태를 다시 확인하도록 정리했습니다.
  3. 2026.03Render 배포를 준비하면서 이미지 업로드와 메일 인증 흐름을 붙였습니다. JSP 화면에서는 jQuery로 필요한 동작을 보완했고, 로컬과 배포 환경에서 달라지는 부분을 하나씩 확인했습니다.
  4. 2026.04PostgreSQL/Supabase 기준으로 SQL과 환경변수를 정리했습니다. 무료 티어에서 너무 무겁지 않게 DB pool과 서버 설정도 조정했습니다.
  5. 현재반려동물 분양, 후기, 커뮤니티가 한 서비스처럼 보이도록 메인 화면과 상세 화면을 계속 리디자인하고 있습니다.

트러블슈팅

  • 분양 상태가 꼬이는 문제: 신청자와 작성자, 관리자 권한에 따라 가능한 동작이 달랐습니다. 상태별로 가능한 버튼과 서버 검증을 다시 나눠 처리했습니다.
  • 배포 환경 제약: Render 무료 티어에서는 메모리와 요청 처리량을 신경 써야 했습니다. DB pool, Tomcat thread, 정적 리소스 캐시 설정을 가볍게 조정했습니다.
  • 이미지와 메일 연동: 서버에 파일을 오래 보관하기 어렵기 때문에 imgBB 원격 업로드를 붙이고, 회원 인증은 EmailJS 기반으로 처리하도록 정리했습니다.

기술 스택

사용해 본 기술

Frontend

ReactViteJavaScriptjQueryHTML5CSS3AxiosJotaiBootstrap

Backend & View

Java 21Spring BootSpring MVCSpring SecurityJWTJSPJSTLJdbcTemplateMyBatis

Database

PostgreSQLSupabaseOracleSQLCRUDSchema DesignTransaction

Data & API

KAMIS APIOpenDART APIOpinet APITMDB APIEmailJSimgBBJSONXMLNode.js Script

Deploy & CI/CD

GitHub ActionsGitHub PagesVercelRenderCloudflare PagesGitHub Secrets

연락처

배포된 화면을 기준으로 계속 고치고 있습니다.

이 포트폴리오는 프로젝트 링크만 모아둔 페이지가 아니라, 기획한 이유와 고친 기록까지 같이 남기기 위해 만들었습니다. 화면, 서버, 데이터, 배포 설정을 따로 보지 않고 하나의 흐름으로 정리하는 개발자가 되는 것이 목표입니다.