퍼블리셔에서,
백엔드 개발자로.

퍼블리셔 경험을 통해 UI/UX 관점에서 사용자가 체감하는 환경을 이해하고 백엔드 개발에 반영하며,
DevOps와 아키텍처 설계 영역까지 확장하여 시스템 전반의 품질을 높이는 백엔드 개발자로 성장하고자 합니다.

Project

Kotlin, React를 이용한 간단한 블로그

...
개요
Kotlin, React을 이용하여 게시판 기능을 중심으로 구현한 간단한 블로그 프로젝트
프로젝트 명: Simple Blog
개발 인원: 1명
개발 기간: 2025.06.20 ~ 2025.08.11
백엔드·프론트 분리 경험(Kotlin, React 사용)
[도입 배경]
기존에는 주로 Java(Spring) 기반 프로젝트를 진행했으나, 새로운 언어와 프레임워크를 활용해 개발 역량을 확장하고 싶었습니다.
특히 프론트엔드와 백엔드의 역할 구분을 명확히 이해하고, 현업 협업 환경에서의 개발 방식을 체감하기 위해 Kotlin과 React를 함께 도입하여 블로그 프로젝트를 진행하였습니다.

[사용 이유]
Kotlin은 Java와의 높은 호환성과 간결한 문법을 강점으로 하여, Java 경험을 기반으로 빠르게 학습하고 적용할 수 있었습니다.
React는 JSP, Thymeleaf 같은 서버사이드 렌더링(SSR)과 달리 클라이언트 사이드 렌더링(CSR)을 제공하여, 프론트엔드와 백엔드 간의 역할 분리 및 데이터 전달 구조를 명확히 이해할 기회라고 판단하였습니다.
Rest API 기반으로 데이터를 주고받으며, 서버는 데이터 제공, 클라이언트는 UI 렌더링에 집중하는 구조를 학습하는 것을 목표로 했습니다.

[성과]
동일한 게시판 목록 기능을 서로 다른 기술 스택으로 구현하면서 차이를 명확히 비교할 수 있었습니다.
* Java + Thymeleaf (페이징 처리) → 서버에서 전체 페이지 새로고침 방식, 구조 단순하지만 사용자 경험은 다소 불편.
* Java + Thymeleaf (무한 스크롤) → 초기 화면은 SSR, 추가 로드는 Ajax로 처리해 UX는 개선되었지만, 서버/클라이언트 로직이 혼재되어 관리가 복잡.
* Kotlin + React (페이징 처리) → @RestController 기반 API로 JSON 데이터만 전달, React에서 상태 관리로 렌더링 → UI와 데이터 완전 분리, 협업 구조 명확.
이를 통해 SSR은 초기 로딩이 빠르고 단순하지만 새로고침으로 인해 UX가 떨어지고, CSR은 초기 로딩은 무겁지만 이후에는 부드럽고 유연한 화면 전환과 명확한 역할 분리로 유지보수성과 협업 효율성이 높다는 차이를 직접 체감했습니다.
백엔드에서는 데이터를 API 형태로만 제공하고, 프론트는 해당 데이터를 활용해 화면을 구성하는 구조를 경험하며, 실제 협업 환경에서 발생할 수 있는 역할 충돌 문제(PHP 사용 시절 퍼블리셔와의 충돌)가 API 기반 구조에서는 해결될 수 있음을 확인하였습니다.
Kotlin을 활용하여 Java 대비 간결하고 생산적인 코드 작성 경험을 얻었으며, 새로운 언어와 프레임워크를 단기간 학습 후 프로젝트에 적용할 수 있었습니다.
REST API 기반 설계 및 구현
[도입 배경]
기존에는 서버사이드 렌더링(JSP, Thymeleaf) 방식으로 컨트롤러에서 View와 데이터를 함께 내려주는 구조를 사용했으나, 이는 프론트엔드와 백엔드 간의 역할 분리가 모호했다고 생각했습니다.
Simple Blog 프로젝트에서는 React를 프론트엔드로 도입하면서, 클라이언트와 서버 간의 통신을 효율적이고 표준화된 방식으로 관리할 필요성이 있었습니다.

[사용 이유]
REST API를 적용해 데이터는 JSON 형태로만 주고받고, 화면 렌더링은 프론트엔드(React)에서 담당하도록 구조를 분리하였습니다.
이를 통해 백엔드는 순수하게 비즈니스 로직과 데이터 제공에 집중할 수 있고, 프론트엔드는 API를 활용해 다양한 방식으로 데이터를 표현할 수 있어 재사용성과 확장성이 높아졌습니다.
예를 들어, 회원 관리, 게시판, 댓글 기능을 각각 독립적인 API로 설계하여 `/api/members`, `/api/posts`, `/api/comments` 등으로 구분함으로써 구조적 일관성을 확보했습니다.

[성과]
@RestController 기반으로 API를 설계하면서 뷰 템플릿에 종속되지 않는 독립적인 서버 로직을 구축할 수 있었습니다.
React와 연동해 클라이언트 사이드 렌더링(CSR) 방식을 적용하면서, SSR 대비 데이터만 갱신되는 부분 렌더링의 부드러운 UX와, 프론트·백엔드가 명확히 분리된 구조 덕분에 기능 추가·변경 시 유지보수가 용이함을 체감했습니다.
회원가입, 게시판, 댓글 등 기능을 REST API 단위로 명확히 분리하여, 웹뿐 아니라 모바일 앱·타 클라이언트에서도 동일 API를 활용할 수 있는 확장성을 확보했습니다.
JWT 토큰을 활용해 API 레벨 인증을 구현하면서, 세션 기반 인증보다 무상태(stateless) 서버 구조에 적합하고 표준화된 방식으로, 보안성과 확장성을 동시에 만족시켰습니다.
CSR 환경에서 발생한 CORS 이슈 대응 및 구조 개선
[도입 배경]
프로젝트에서 Kotlin(Spring Boot)을 백엔드, React를 프론트엔드로 분리해 개발했습니다.
이 과정에서 프론트엔드(3000포트)와 백엔드(8080포트)가 서로 다른 도메인에서 동작하여 브라우저 보안 정책(Same-Origin Policy)으로 인한 CORS 오류가 발생했습니다.
이는 CSR(Client Side Rendering) 환경에서 데이터를 주고받기 위해 반드시 해결해야 하는 문제였습니다.

[사용 이유]
CORS 설정을 통해 특정 Origin(출처)의 요청만 허용하거나, 필요에 따라 인증 정보를 포함한 요청을 제어할 수 있었습니다.
이를 통해 프론트엔드 개발 환경에서 원활하게 API를 호출할 수 있었고, 실제 서비스 운영 시에도 보안성을 유지하면서 필요한 요청만 허용하는 구조를 만들 수 있었습니다.

[성과]
Spring Boot의 `CorsConfigurationSource`와 Security 설정을 활용해, API 단위의 세밀한 CORS 허용 정책을 적용했습니다.
React 개발 서버와의 연동이 원활해져, 프론트엔드 개발 과정에서 실시간 API 테스트 및 화면 검증이 가능해졌습니다.
단순히 문제를 해결하는 데 그치지 않고, CORS를 보안적 관점에서 이해하고 환경별(개발·운영) 정책을 다르게 적용하는 방법을 습득했습니다.
이를 통해 CSR 아키텍처에서 프론트엔드·백엔드 분리 개발이 가져오는 이점과 함께 필연적으로 고려해야 할 보안 이슈를 직접 경험하고 해결할 수 있었습니다.
전역 예외 처리와 예외 클래스 계층화를 통한 안정성 확보
[도입 배경]
웹 서비스 개발 과정에서 회원가입 시 이메일·닉네임 중복, 게시글/댓글 조회 시 데이터 부재 등 다양한 예외 상황이 발생했습니다.
처음에는 개별 컨트롤러나 서비스에서 직접 예외를 처리했지만, 코드 중복이 늘어나고 관리가 어려워졌습니다.
이에 따라 프로젝트 전반에서 일관되게 예외를 처리할 수 있는 전역 예외 처리(Global Exception Handling) 구조가 필요했습니다.

[사용 이유]
`@RestControllerAdvice`와 `@ExceptionHandler`를 활용해 예외 발생 시 중앙에서 일괄 처리하도록 구현했습니다.
예외를 `BusinessException`, `EntityNotFoundException` 등으로 계층화해 예외 분류를 명확히 했습니다.
`ErrorResponse`와 `ErrorCode`를 조합해 모든 예외를 동일한 JSON 포맷으로 클라이언트에 전달했습니다.

[성과]
예외 처리 로직이 한 곳에 모여 유지보수성이 향상됐습니다.
클라이언트(React)에서 에러를 예측 가능한 형태로 처리할 수 있어 개발 효율성이 높아졌습니다.
커스텀 예외 클래스를 계층적으로 관리해 확장 가능성을 확보했습니다.
모든 예외를 공통적으로 기록해 장애 추적과 디버깅이 용이해졌습니다.
공통 API Response 설계를 통한 응답 표준화
[도입 배경]
API를 설계하면서 성공 응답과 에러 응답의 형식이 제각각이라면, 클라이언트 개발 시 혼란이 생기고 유지보수가 어려워질거라 생각했습니다.
특히 React와 같은 프론트엔드 프레임워크에서는 응답 구조가 일관되지 않으면 공통 처리 로직을 작성하기 힘들다고 판단했습니다.
이에 따라 모든 API의 응답 구조를 표준화하는 설계가 필요했습니다.

[사용 이유]
성공 응답은 `CmResDTO`를 도입해 `resultCode`, `resultMsg`, `data`를 공통 필드로 정의했습니다.
에러 응답은 `ErrorResponse`와 `ErrorCode`를 기반으로 에러 상황을 일관되게 표현했습니다.
전역 예외 처리는 `GlobalExceptionHandler`를 통해 입력값 검증 실패, 권한 문제, 비즈니스 로직 예외 등을 공통적으로 처리했습니다.
`BusinessException`을 상속 구조로 설계해 확장성과 관리 편의성을 높였습니다.

[성과]
모든 API가 동일한 형식을 따르므로, 프론트엔드에서 공통 응답 처리 로직을 재사용할 수 있었습니다.
클라이언트가 응답 코드·메시지를 통해 문제를 명확히 식별할 수 있어 UX 개선에 기여했습니다.
예외 처리 로직을 전역에서 공통화하여 불필요한 반복을 줄였습니다.
새로운 예외나 응답 패턴이 추가되더라도 기존 구조를 유지하면서 손쉽게 확장할 수 있었습니다.
JWT 저장 및 관리 전략 (Authorization Header + sessionStorage)
[도입 배경]
프로젝트 초기에 JWT 발급 후 클라이언트 저장 방식을 고민하였습니다.
처음에는 localStorage에 저장하는 방식을 사용했으나, 이 경우 스크립트로 접근 가능한 영역에 토큰이 저장되어 XSS 공격에 취약하다는 문제가 있었습니다.
또한 서버(Spring Security 기반 Kotlin 백엔드)에서는 JWT 인증을 위해 Authorization 헤더를 읽도록 커스텀 필터(CustomBasicAuthenticationFilter)를 구현하였기 때문에, 프론트엔드(React)와의 연동 방식을 명확히 정의할 필요가 있었습니다.

[사용 이유]
Authorization 헤더 활용을 한 이유는 백엔드에서 모든 인증이 Authorization: Bearer token 형태로 동작하도록 설계했고, 토큰을 요청 헤더에 포함시킴으로써 서버-클라이언트 간의 인증 흐름이 명확해지고, API 문서화 및 유지보수성이 높아졌습니다.
sessionStorage 선택한 이유는 localStorage는 브라우저가 닫혀도 유지되지만, XSS 공격에 의해 토큰이 유출될 가능성이 컸습니다.
반면 sessionStorage는 브라우저 세션 종료 시 자동으로 삭제되므로 보안성이 강화되며, 짧은 세션 기반 인증 전략과 잘 맞는다고 생각했습니다.
Refresh Token은 HttpOnly 쿠키에 저장하여 클라이언트에서 접근할 수 없게 함으로써 보안과 편의성을 동시에 확보했습니다.

[성과]
`localStorage` → `sessionStorage`로 전환하여 XSS 공격에 대한 노출을 줄였습니다.
Refresh Token은 쿠키에, Access Token은 sessionStorage에 분리 저장해 토큰 탈취 위험을 최소화했습니다.
백엔드에서는 모든 요청에서 Authorization 헤더를 기준으로 JWT를 검증하게 하여, React, Postman, 모바일 클라이언트 등 어떤 환경에서도 일관된 방식으로 인증할 수 있었습니다.

Yes or No 투표 플랫폼

...
개요
사용자가 다양한 고민을 쉽고 재미있게 해결할 수 있도록 돕는 투표형 게시판 플랫폼
프로젝트 명: This vs That(이거저거)
개발 인원: 6명
개발 기간: 2025.02.12 ~ 2024.03.12
담당 역할:
* 게시판 목록 무한 스크롤 기능 구현
* GitHub 협업 관리
모바일 사용자 경험을 고려한 무한 스크롤 구현
[도입 배경]
팀 프로젝트 This vs That에서는 서비스 특성상 게시글 소비가 모바일 환경에서 많이 이루어질 것이라 판단했습니다.
모바일 화면에서 페이지 버튼을 눌러 이동하는 방식보다, 스크롤을 내려가면서 자연스럽게 게시글이 이어지는 무한 스크롤 방식이 사용자 경험에 더 적합하다고 기획 단계에서 결정되었습니다.

[사용 이유]
무한 스크롤 초기 구현 과정에서 게시글을 3개씩 불러오도록 설정했지만, 화면의 세로 길이가 긴 경우 스크롤이 바닥에 닿지 않아 추가 게시글이 로드되지 않는 문제가 발생했습니다.
이를 해결하기 위해 초기 로딩 시 화면 크기를 계산하여 필요한 페이지 수만큼 데이터를 미리 불러오도록 로직을 개선하였습니다.
또한 게시글 상세 조회 후 뒤로 가기 시, 스크롤 위치가 맨 위로 초기화되는 문제가 있었는데, 이를 방지하기 위해 컨트롤러에서 초기 데이터를 내려주고, 추가 로딩은 Ajax를 통해 처리하여 스크롤 위치를 유지할 수 있도록 구현했습니다.

[성과]
모바일 환경에서 사용자들이 끊김 없이 게시글을 탐색할 수 있도록 하여 사용자 경험을 개선하였습니다.
단순히 클라이언트에서 스크롤 이벤트만 처리하는 수준이 아니라, 백엔드에서 화면 크기 및 로드 단위를 고려한 데이터 전달 로직을 구현함으로써 효율적인 데이터 로딩을 지원할 수 있었습니다.
Ajax 기반의 추가 로딩 방식을 적용하여, 서버 부하를 최소화하면서도 유연한 데이터 제공이 가능해졌습니다.
이를 통해 단순 기능 구현을 넘어, 사용자 경험과 서버 효율을 동시에 고려한 백엔드 설계 역량을 보여줄 수 있었습니다.
GitHub 기반 협업 관리 경험
[도입 배경]
개인 프로젝트를 진행할 때는 코드가 잘못되면 `ctrl + z`로 되돌리거나 되돌릴 수 없는 경우에는 직접 다시 작성해야 하는 불편함이 있었습니다.
이 과정을 반복하면서 코드 변경 사항을 안전하게 관리하고, 필요할 때 손쉽게 이전 버전으로 되돌릴 수 있는 도구의 필요성을 느꼈습니다.

[사용 이유]
GitHub를 통해 코드 변경 사항을 커밋 단위로 기록하면서 안정적으로 관리할 수 있었습니다.
개인 프로젝트에서도 유용했지만, 여러 명이 동시에 개발하는 팀 프로젝트에서는 특히 필수적이라고 판단했습니다.
팀원들이 작업을 마치고 `push`하면, 다른 팀원들이 반드시 `pull`하여 최신 상태를 반영한 후 작업을 이어가는 방식으로 협업의 일관성을 유지할 수 있었습니다.

[성과]
협업 과정에서 코드 충돌을 조율하고, Pull Request를 리뷰 후 병합하는 GitHub 병합 담당자로서의 역할을 수행했습니다.
단순히 기능 구현을 넘어, 코드 리뷰와 충돌 관리 과정을 직접 경험하며 협업 환경에서 중요한 책임을 맡아볼 수 있었습니다.
이를 통해 개인 프로젝트와 팀 프로젝트 모두에서 GitHub를 통한 버전 관리 및 협업의 중요성을 체득할 수 있었습니다.

동물 보호 플랫폼

...
개요
보호소(지도, 리스트) 위치 확인, 보호 동물 리스트, 보호 동물 관련 커뮤니케이션을 할 수 있는 플랫폼
프로젝트 명: Dreaming Animal
개발 인원: 1명
개발 기간: 2025.06.20 ~ 2025.08.11
Entity & JPA를 통한 안정적이고 확장 가능한 데이터 관리
[도입배경]
이전 Spring Framework 프로젝트에서 JPA를 사용하지 않고 개발 및 배포를 진행했을 때, 데이터베이스 테이블을 직접 생성해야 하는 번거로움이 발생했습니다.
또한 특정 DB에 종속적인 방식으로 개발하다 보니 배포 환경이 바뀔 경우 호환성 문제가 생기고, 유지보수에도 많은 시간이 소요되었습니다.
이러한 비효율성을 개선하기 위해 JPA 기반의 ORM(Object Relational Mapping)을 도입했습니다.

[사용 이유]
JPA를 사용하면 데이터베이스 설정만 변경해도 애플리케이션을 손쉽게 다른 환경에 배포할 수 있습니다.
ORM을 통해 객체와 테이블 간 매핑을 자동화하여 반복적인 SQL 작성과 수동 매핑 코드를 제거했습니다.
또한 메서드 네이밍 규칙만으로 복잡한 쿼리를 자동 생성할 수 있어, 코드 가독성과 생산성을 크게 높일 수 있었습니다.

[성과]
테이블 생성 및 매핑 과정의 수작업이 사라져 배포 과정이 간단해지고, 다양한 DB 환경에서도 안정적으로 동작할 수 있었습니다.
`findById(Long id)` 와 같은 직관적인 메서드 호출만으로 원하는 데이터를 조회할 수 있어 개발 속도가 향상되고 유지보수가 용이해졌습니다.
결과적으로 데이터 접근 계층의 복잡도가 낮아져 비즈니스 로직에 더 집중할 수 있었고, 프로젝트의 확장성과 안정성을 동시에 확보할 수 있었습니다.
동적 쿼리를 활용한 조건 기반 검색 최적화
[도입배경]
보호동물 리스트 조회 시 조건(보호동물 번호 `protectNum`, 품종 `kind`, 성별 `gender`, 날짜 `date` 등)이 다양하게 존재했습니다.
이 조건들에 맞는 메서드를 JPA 문법으로 각각 정의하려면, 값이 `null`일 때와 아닐 때를 모두 고려해야 했고, 모든 조건이 들어왔을 경우 메서드 이름이 지나치게 길어져 가독성이 크게 저하되었습니다.

[사용 이유]
메서드 이름 기반 쿼리의 한계를 극복하고, 조건을 유연하게 조합할 수 있는 방안이 필요했습니다.
동적 쿼리를 적용하면 다양한 검색 조건(예: 보호소 번호, 품종, 성별, 날짜 등)을 상황에 따라 선택적으로 사용할 수 있습니다.

[성과]
일부 검색 값이 누락되더라도 나머지 조건으로 정상적으로 필터링이 가능해졌습니다.
메서드 이름이 간결해지고, 코드 유지보수성이 크게 향상되었습니다.
외부 API 연동을 통한 사용자 편의성 강화
[도입 배경]
프로젝트에서 보호소 등록 시 보호소의 주소를 단순 텍스트로만 저장하고 출력하면 사용자가 위치를 직관적으로 파악하기 어렵다는 한계가 있었습니다.
특히 보호소 특성상 위치 정보가 중요한데, 단순 텍스트 기반 리스트로는 공간적 이해도가 떨어져 사용자 경험이 제한되었습니다.

[사용 이유]
보호소 등록 과정에서 입력된 주소를 기반으로 정확한 위도(latitude), 경도(longitude)를 받아와 지도에 표시할 필요가 있었습니다.
이를 위해 카카오 지도 API를 활용하여 보호소 위치를 지도 상에 시각화했고, 입력 주소의 정확성을 보장하기 위해 다음 주소 API를 함께 연동하여 주소 검색 및 자동완성을 지원했습니다.
두 API를 조합함으로써 백엔드에서 주소 데이터를 관리하고 프론트엔드에서 위치 정보를 직관적으로 제공할 수 있었습니다.

[성과]
보호소 위치를 지도와 텍스트 두 가지 방식으로 제공하여 사용자가 더 직관적으로 보호소를 탐색할 수 있게 되었습니다.
주소 입력 단계에서 다음 주소 API를 활용해 잘못된 데이터 입력을 최소화하여 데이터 무결성을 확보했습니다.
지도 API를 통한 시각적 제공으로 서비스의 사용자 경험(UX)이 개선되었고, 프로젝트의 완성도를 높일 수 있었습니다.
OAuth2.0 기반 소셜 로그인 연동
[도입 배경]
기존에는 단순한 회원가입 및 로그인 기능만 구현되어 있었지만, 실제 서비스 환경에서는 사용자들이 별도의 회원가입보다는 네이버, 구글, 카카오 등 소셜 계정을 활용해 간편하게 로그인하는 방식을 선호한다고 생각했습니다.
단순 회원가입 방식만 제공할 경우, 사용자가 번거롭게 이메일과 비밀번호를 입력해야 하고 이로 인해 서비스 진입 장벽이 높아질 수 있었습니다.
따라서 사용자 경험을 개선하고 실제 서비스에 가까운 인증 방식을 적용하기 위해 OAuth2.0 기반 소셜 로그인 기능을 도입했습니다.

[사용 이유]
Spring Security를 기반으로 인증 및 인가를 구현하여 기존 회원가입·로그인 로직과 소셜 로그인을 통합 관리할 수 있었습니다.
OAuth2.0 프로토콜을 활용해 구글, 네이버 계정 정보를 안전하게 가져와 회원 정보와 연동하고, 로그인 과정을 간소화했습니다.
이를 통해 일반 회원가입과 소셜 로그인을 모두 지원하여 사용자의 선택권을 보장하고, 실제 서비스 수준의 인증 환경을 구현할 수 있었습니다.

[성과]
사용자 입장에서는 이메일·비밀번호 입력 없이 보유한 소셜 계정을 통해 빠르게 로그인할 수 있어 편의성이 크게 향상되었습니다.
관리자는 Spring Security를 기반으로 통합된 인증 구조를 유지할 수 있어, 보안성과 확장성을 확보했습니다.
실제 서비스에서 널리 활용되는 인증 방식을 적용함으로써 프로젝트의 현실성과 완성도를 높였으며, 포트폴리오 측면에서도 경쟁력을 강화할 수 있었습니다.

Career

PHP 기반 SI 회사(2021.03-2024.11)

PHP 기반 CMS(그누보드·아미나빌더)를 활용하여 웹사이트 10건 이상 구축 및 커스터마이징했습니다.
HTML/CSS/JavaScript 기반 반응형 UI 구현으로 PC·모바일 사용자 경험을 개선했습니다.
MySQL 환경에서 데이터베이스 설계 및 운영을 지원했습니다.
서버 세팅(도메인 구입 및 DNS 설정을 통한 서비스 배포, SSL 인증서 등) 및 유지 보수를 하여 전 과정 수행을 수행했습니다.
프로젝트 매니저(PM)로 기획서/화면 설계서 작성 및 Notion기반 일정 관리 시스템을 도입하고 Jira를 활용해 유지 보수 프로세스를 체계화함으로써 협업 효율을 향상 시켰습니다.
디자인과 퍼블리싱 업무를 추가로 병행하며 개발자-퍼블리셔-디자이너 간 커뮤니케이션 병목 해소하였습니다.

Project Experience

운동센터 매칭·관리 앱
일반회원에게 운동 센터 정보를 안내해주며, 운동 센터 사용자가 일반 회원 맞춤 코멘트 관리해주는 앱
카카오 지도 API와 다음 주소 검색 API를 함께 활용하여 사용자의 위치 정보를 직관적이고 정확하게 확인할 수 있는 기능을 구현
기획서 및 화면 설계서 작성, 일정 관리 시스템 도입으로 프로젝트 기한 6개월에서 약 5개월로 약 15% 단축
대학생 커리어 관리 앱
학교별 커뮤니티 및 업적 달성형 ‘빵뱃지’ 시스템 설계로 사용자 참여도 향상
Jira를 활용해 유지보수 프로세스를 체계화, 버그 리포트부터 수정·코드 리뷰·배포·테스트까지 일관된 관리 체계 구축으로 서비스 안정성 향상
Notion을 활용한 작업 진행 공유로 팀 내 협업 효율성을 개선
웹소설 정보 제공 플랫폼
관리자용 콘텐츠 등록 시스템과 사용자 대상 웹소설 장르·정보 열람 UI 구현, AJAX로 UX 개선
AJAX를 적극 활용하여 페이지 새로고침 없이 데이터를 갱신, 사용자 경험(UX) 향상
비동기 처리 방식을 통해 응답 속도 개선 및 서버 부하를 감소
인테리어 견적 웹
사용자가 자재 선택 및 자동 견적 산출·문의 등록이 가능한 기능 구현
서버 세팅 및 DNS 연결 및 초기 서버 환경 구축 및 SSL 보안 설정으로 서비스 안정성을 확보했으며, 서비스 런칭 전 과정을 단독 수행
서비스 기획부터 개발, 배포까지 End-to-End 프로세스를 직접 수행

Supporting Materials

포트폴리오의 일부로 제작된 설명용 예시입니다.
Sample
기획
기획 이미지
디자인 산출물
디자인 산출물
작업현황
작업현황 이미지
검수 테스트
검수 테스트 이미지

Skill&Tool

Backend

Frontend

DB

ECT

Certificates

Contact

GitHub

프로젝트 코드 및 학습 기록을 관리한 GitHub 저장소입니다.

Blog

학습 → 적용 → 피드백 → 재학습 과정을 기록한 블로그로, 개발 지식과 프로젝트 경험을 정리하고 있습니다.

Ect

자바 보안 코딩 기반 스프링 웹 개발자 양성 과정 수료
(2019.12~2020.02)
Java 객체지향 프로그래밍 및 데이터베이스(SQL)를 활용하여 학습하였습니다.
HTML, CSS, JavaScript, JSP를 통한 웹 서비스 개발을 수행하였습니다.
Spring Framework를 기반으로 웹 애플리케이션을 구현하였습니다.
모바일 웹&앱 디자인 수료
(2016.06~2016.12)
Photoshop, Illustrator를 활용하여 UI/UX 디자인을 수행하였습니다.
HTML, CSS 기반으로 웹 퍼블리싱 및 반응형 레이아웃을 구현하였습니다.
모바일 환경에 최적화된 디자인 시안을 제작하였습니다.
팀 프로젝트를 통해 모바일 웹 서비스 시안을 기획하고 구현하였습니다.