
ReadingBounce
모바일 앱스크린샷 한 장으로 한국어/영어 배우기
웹툰·SNS·뉴스 어떤 화면이든 캡처하면 글자를 알아보고, 듣기·따라읽기로 자연스럽게 연습할 수 있어요. 휴대폰과 PC 어디서든.
- Tauri 2
- Rust
- Next.js 16
- React 19
- TypeScript
- SQLite
직접 만들고 운영 중인 서비스 5종

스크린샷 한 장으로 한국어/영어 배우기
웹툰·SNS·뉴스 어떤 화면이든 캡처하면 글자를 알아보고, 듣기·따라읽기로 자연스럽게 연습할 수 있어요. 휴대폰과 PC 어디서든.

나만의 맛 기록장
오늘 먹은 음식을 '맛있어 / 또다시 / 별로야 / 모르겠' 네 가지 반응으로 가볍게 기록하는 앱. 출처·날짜로 다시 찾기 쉬워요.
가격·의료·장기요양 공공데이터 플랫폼
pryzeet.duckdns.org
가격 공유부터 구매희망·가계부·재구매까지 한 흐름. 연봉·의료비·요양시설 같은 공공데이터를 한곳에서 비교·검색할 수 있어요.
내 문서로 답하는 채팅
dmddksl.duckdns.org
내 문서·이미지에서 글자를 읽어 들이고, 그 안에서만 답을 찾아주는 채팅 서비스. 외부에 자료를 보내지 않고도 정확한 인용으로 답해줘요.
마음의 정원 다이어리
da2ari.duckdns.org
다이어리·기념일·루틴·목표를 한 곳에서 정리하고, 매일의 운세까지 함께 받아보는 한국어 일상 관리 서비스. 모바일 우선.
초보 개발자와 비개발자를 위한 개발 입문 블로그이자, 제가 만든 서비스를 소개하는 포트폴리오예요.
브라우저가 보내는 MIME과 확장자는 신뢰할 수 있는 파일 형식 증명이 아닙니다. 특히 공개 bind mount에 저장하는 CMS 이미지는 저장 전에 최소한의 실제 바이트 검사와 원자성 보장이 필요합니다.
통합 테스트가 스키마를 만들지 못했는데도 entity 테스트를 계속하면 실패가 지연되어 원인을 잃는다. 마이그레이션 디렉터리 누락, SQL 파일 0개, 파일 읽기 실패, 개별 SQL 오류는 모두 테스트 bootstrap 실패다.
Java API와 Python 음성 엔진은 서로 다른 프로세스이므로, 문자열 기반 내부 호출보다 protobuf 계약이 변경과 장애를 더 분명하게 만든다. voice/v1/voice.proto는 음성 합성·voice catalog·capability를 하나의 버전 경계로 묶고, Java client는 요청 deadlin…
이미지가 만들어졌다는 사실은 사용자가 정상 경로를 사용할 수 있다는 증거가 아닙니다. 검사한 commit과 실행 image를 묶고, health 뒤에 실제 DB를 읽는 smoke를 실행해야 합니다.
Tauri의 output: export 빌드는 Next.js 서버 route와 redirect를 포함하지 않는다. 웹과 같은 코드를 공유한다는 사실이 같은 실행 능력을 보장하지 않는다.
프로세스가 살아 있다는 사실, 핵심 검색 요청을 처리할 준비가 됐다는 사실, 선택 기능이 모두 정상이라는 사실은 서로 다릅니다. 하나의 ready 값에 전부 넣으면 선택 모델 장애가 전체 재시작으로 이어지고, 핵심 DB 장애를 liveness가 가립니다.
요구사항을 검증 증거로 바꾸고 HTTP·DB·외부 연동·파일·AI·실시간 미디어·배포·관측까지 하나의 운영 가능한 계약으로 연결해요.
컴퓨터를 켜는 순간부터 첫 코드를 실행하기까지. 비개발자·입문자가 한 칸씩 따라하면 끝.
프론트엔드의 시작부터 상태·오프라인 데이터 경계까지를 한 흐름으로 잇는 12단계 강좌.
Next.js 16 App Router 로 DB 연결까지 4단계. PostgreSQL + Drizzle ORM 까지 연결하는 실전.
진짜 백엔드를 처음 만나는 8단계. 첫 줄부터 인증, 테스트, 배포와 Spring MVC 실패 계약까지.
Python 한 가지로 API 서버부터 스케줄링·외부데이터 수집·관측·실무 패턴까지 잇는 8단계.
실용적인 도구와 공공데이터 기반 서비스를 만드는 개발자예요. 모바일(Tauri/Flutter), 웹(Next.js), 백엔드(FastAPI/Spring) 풀스택으로 작업하며 AI/LLM 통합에 관심이 많아요.