Full-stack Developer

DB 설계부터 화면까지,
서비스를 끝까지 만드는 개발자 길동현입니다.

Java(JSP/Servlet, JavaFX)와 PHP로 회원·인증, 데이터 수집, 관리자 화면까지 갖춘 팀 프로젝트 4개를 만들었습니다. 비밀번호 해시를 Argon2id로 바꾸고 기존 사용자를 로그인 때 자동으로 옮기는 것처럼, 실제로 운영할 때 생기는 문제를 먼저 챙깁니다.

한눈에 보기

눌러서 각 프로젝트로 바로 이동합니다.

기술 스택

언어

  • Java 17/21
  • PHP
  • SQL
  • JavaScript
  • TypeScript

백엔드

  • JSP / Servlet (Jakarta)
  • Tomcat 10.1·11
  • PDO / mysqli
  • Java Socket (TCP/UDP)
  • Node.js

프론트엔드

  • HTML / CSS
  • JavaFX
  • React
  • Google Charts·Maps
  • Kakao 지도 API

데이터베이스

  • MySQL 8
  • MariaDB
  • HikariCP
  • 정규화 스키마 설계

보안·인증

  • Argon2id
  • bcrypt
  • Prepared Statement
  • 세션 관리

도구·배포

  • Git / GitHub (PR 리뷰)
  • GitHub Actions
  • Maven
  • Docker
  • Cloudflare Pages
  • LLM API

프로젝트

모두 팀 프로젝트입니다. 카드마다 제가 맡은 부분과 해결한 문제를 따로 적었습니다.

스펙 오디세이 대시보드
대시보드 · 테스트 계정 시뮬레이션으로 72일치 사용 기록을 쌓은 화면

스펙 오디세이

2026.09 ~ 2026.10 · 4주 · 팀 프로젝트

취업 준비생의 스펙을 진단하고 목표 직무까지의 로드맵과 매일 할 일을 제시하는 웹 서비스

문제비밀번호 해시 방식을 바꾸면 기존 회원의 해시는 검증할 수 없게 됨
해결예전 PBKDF2 해시도 검증되게 두고, 로그인에 성공하면 그 자리에서 Argon2id로 다시 저장
결과기존 회원이 비밀번호를 바꾸지 않아도 새 방식으로 옮겨짐
  • Java 17
  • JSP/Servlet
  • MySQL
  • HikariCP
  • LLM API
  • GitHub Actions
6.4s → 1.1s대시보드 응답 (팀 성과)
40% → 100%기술명 매칭 정확도 (팀 성과)

내 역할

  • 자소서·이력서 첨삭 AI: LLM 프롬프트를 설계하고 STAR 기법 기준으로 "추가하면 좋을 내용"을 안내하도록 개선
  • 비밀번호 해시 전환: PBKDF2 → Argon2id로 교체. 예전 해시도 검증되게 두고, 로그인할 때 자동으로 새 해시로 다시 저장해 기존 회원이 비밀번호를 바꾸지 않아도 옮겨지게 함
  • 테스트 계정 시뮬레이션: 목표 점수까지 하루치 활동을 몇 분 안에 진행·일시정지·초기화 — 장기 사용 흐름을 시연·검증할 수 있게 함
  • 스펙 아카이브 게시판: 사진이 다른 팀원 서버에서도 보이도록 파일을 DB에 저장하는 방식으로 수정
  • 데스크톱 캐릭터 앱: 하루 요약·트렌드·자동 실행·설치 파일·사이트 내 업데이트 확인까지 구현
Dragon Fruits 원자재 대시보드
2024년 12월 실제 실행 화면 (최종 보고서 캡처 중 시세·차트 부분)

Dragon Fruits — 원자재 가격 대시보드

2024.12 · 팀 프로젝트 (팀 내 최다 커밋)

금·구리·알루미늄·천연가스·국제유가 5대 원자재의 가격 추이, 시세, 관련 뉴스와 기업 통계를 한 화면에 모은 웹 대시보드

문제원자재 가격·시세·뉴스 정보가 여러 곳에 흩어져 있음
해결FRED·Polygon.io·NewsAPI 데이터를 수집해 MySQL에 저장하고 PHP로 조회
결과5대 원자재 정보를 한 화면에서 보는 대시보드 완성 · 팀 내 최다 커밋
  • PHP
  • MySQL
  • FRED API
  • Polygon.io
  • NewsAPI
  • Google Charts·Maps

내 역할

  • 외부 API 3종 연동: FRED(과거 가격), Polygon.io(ETF 시세), NewsAPI(뉴스)에서 받은 데이터를 MySQL 4개 DB에 저장하고 PHP로 조회
  • 대시보드 위젯: 실시간 시세 바, 가격 추이 그래프, 기업·수출국 통계 차트, Google Maps 지도 위젯 구현 및 화면 디자인 통일
  • 보안 정리: 하드코딩된 API 키를 걷어내고 .env + 자체 로더로 설정 분리
부산 민원 관리자 화면
관리자 화면 · 예시 데이터

부산 지하철 민원 신고 시스템

2025.11 ~ 2025.12 · 팀 프로젝트

지하철 승객이 열차 번호·호선을 골라 민원을 접수하고, 관리자가 처리 상태와 통계를 관리하는 웹 서비스

문제웹 신고 말고 문자로 오는 민원도 받아야 하는데, KT 회선 문자는 IMAP 방식으로 받아지지 않음
해결문자를 메일함으로 받아 DB에 자동 접수하고, 수신 방식을 POP3로 바꿈
결과통신사와 상관없이 문자 민원이 관리자 화면에 같이 쌓임
  • PHP
  • MySQL(MariaDB)
  • PDO
  • bcrypt
  • IMAP/POP3

내 역할

  • 문자 민원 수신: 문자로 들어온 신고를 메일함(Gmail)으로 받아 DB에 넣는 기능을 구현. IMAP에서 POP3로 바꿔 KT 회선 문자도 받을 수 있게 수정하고, 처리한 메시지는 삭제 대신 읽음 표시
  • 관리자 대시보드: 신고 처리 상태 일괄 변경, 통계 화면 추가
  • 입력 UX 개선: 열차 번호·호선 선택을 다이얼 방식으로 바꿔 잘못된 입력을 줄임
SafeFood 알레르기 온보딩 화면
직접 만든 온보딩 2단계 · 알레르기와 심각도 선택

SafeFood — 알레르기 안전 음식 추천

2026.08 · 3인 팀 프로젝트

취향·알레르기·기분·위치를 바탕으로 메뉴와 맛집을 추천하고, 여러 명이 함께 먹을 때 모두가 먹을 수 있는 메뉴를 찾아주는 데스크톱 앱

문제Controller가 DAO를 직접 부르고 화면이 임시 데모 데이터에 묶여 있음
해결서비스 계층을 두어 접근 경로를 정리하고 데모 데이터를 걷어내 DB와 연결
결과가입 → 온보딩 → 프로필 수정이 실제 DB로 동작
  • Java 21
  • JavaFX
  • MySQL (테이블 22개)
  • JDBC
  • TCP 소켓
  • Kakao 지도

내 역할 — 계정·온보딩·기록·지도

  • 회원가입·로그인·온보딩: 가입 직후 취향·알레르기·가격·거리·맵기를 받아 DB에 저장하고 프로필에서 수정
  • 계층 분리: Controller가 DAO에 직접 접근하지 않도록 서비스 계층을 두고, 임시 데모 데이터를 걷어내 DB와 연결
  • 게스트 참여·같이 먹기 활성화, 식사 기록(차단한 메뉴는 추천에서 제외), 지도 보기·찜하기

알고리즘 — 백준 문제 풀이 기록 · BeakJoon-ascode

사이드 프로젝트

혼자 기획해서 직접 공개한 프로젝트입니다.

숫자 퍼즐 대전 4인 대전 화면▶ 플레이
4인 대전 화면 · 누르면 바로 플레이

숫자 퍼즐 대전 — 실시간 멀티플레이 웹게임

2026.09 ~ 10 · 1인 개발 · 배포 중

합이 10이 되게 숫자를 지우고, 지운 만큼 상대 판에 방해 블록을 보내는 4~8인 실시간 대전 게임. PC·모바일, 한국어·영어·일본어 지원

문제실시간 대전에서는 클라이언트가 점수·공격량을 조작할 수 있음
해결판정·점수·공격을 모두 서버에서 계산하고, 규칙 코드는 프론트·서버가 같은 패키지를 공유
결과자동 테스트 96개로 규칙·공격·방 시나리오를 검증하고 실제 배포
  • TypeScript
  • React 19
  • Node.js
  • Colyseus (WebSocket)
  • Vitest
  • Cloudflare Pages
96개자동 테스트 (규칙·공격·방 시나리오)
3개 언어한국어 · 영어 · 일본어

설계와 해결한 문제

  • 서버 권위 구조: 판정·점수·공격량을 모두 서버에서 계산하고 클라이언트는 입력만 보내 점수 조작을 막음
  • 규칙 코드 공유: 판 생성·합 판정·공격 계산을 shared 패키지로 분리해 프론트와 서버가 같은 코드를 사용. 시드값으로 모든 참가자에게 같은 판을 생성
  • 멀티플레이 기능: 방 코드·링크·QR 초대, 빈 방 자동 배정(랜덤 매칭), 서바이벌 모드, 상대 판 미니맵, 공격 대상 지정과 공격 상쇄
  • 운영 대비: 닉네임 금칙어 필터, 경기 기록 보기, 1분 튜토리얼, 마우스·터치 통합 입력
GroveMoss 섬 전체 화면▶ 둘러보기
섬 전체 보기 · 누르면 바로 둘러보기

GroveMoss — 픽셀아트 힐링 웹게임

2026.11 ~ · 1인 기획 · 개발 중

계절·날씨·바람이 살아 움직이는 섬을 걸어 다니는 힐링 웹게임. 나무·물·절벽·잔디를 이미지 파일 대신 코드로 생성하고, 모바일 브라우저에서도 부드럽게 돌아가도록 최적화

문제효과가 많은 픽셀아트 화면은 모바일 브라우저 메모리에 부담이 됨
해결기기 메모리·코어 수로 그래픽 품질을 자동 선택하고, 안 쓰는 그림·캔버스를 해제
결과저사양 기기에서도 같은 화면을 절약 모드로 실행
  • JavaScript
  • Canvas 2D
  • 절차적 생성
  • Cloudflare
  • Claude Code

코드는 Claude Code(AI 코딩 도구)로 작성했습니다. 기획, 기능·우선순위 결정, 캐릭터 그림, 결과 검토는 직접 했습니다.

성능 최적화

  • 메모리 절감: 멀리 있는 나무는 흔들림 프레임 첫 장만 사용, 현재 계절이 아닌 그림은 해제, 빛 버퍼를 Uint8 배열로, 쓰지 않는 캔버스는 버림
  • 기기별 그래픽 품질: 기기 메모리·CPU 코어 수를 읽어 자동으로 높음/절약 모드를 고르고, 사용자가 직접 바꿀 수도 있게 함
  • 연산 줄이기: 물 영역 계산은 경계 상자(bbox) 밖을 건너뛰고, 나무 흔들림은 바람 세기 3단계를 미리 그려 두고 바꿔 끼움
  • 그 밖에: 클릭·터치 이동용 A* 길찾기, 월드 편집기(되돌리기 지원), main/test 브랜치별 분리 배포

Stardew Valley 한/영 전환 버그 해결 도구

2025.06 · 1인 개발

게임 채팅에서 한글 입력 중 한/영 키를 누르면 입력이 꼬이는 문제를, 채팅을 열고 닫는 키(T·Enter)에 맞춰 입력기를 자동 전환하는 방식으로 우회한 AutoHotkey 프로그램. 실행 파일(.exe)로 배포

  • AutoHotkey
  • Windows

프로젝트 타임라인

  1. 2026.11 –
    GroveMoss 1인 기획·개발 중 (Canvas·Claude Code)
  2. 2026.09 – 10
    숫자 퍼즐 대전 1인 개발·배포 (TypeScript·Colyseus)
  3. 2026.09 – 10
    스펙 오디세이 팀 개발 (JSP/Servlet·MySQL)
  4. 2026.08
    SafeFood 팀 개발 (JavaFX·MySQL·소켓)
  5. 2025.11 – 12
    부산 지하철 민원 신고 시스템 팀 개발 (PHP·MySQL)
  6. 2024.12
    Dragon Fruits 원자재 대시보드 팀 개발 (PHP·MySQL)