
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
다이어리·기념일·루틴·목표를 한 곳에서 정리하고, 매일의 운세까지 함께 받아보는 한국어 일상 관리 서비스. 모바일 우선.
초보 개발자와 비개발자를 위한 개발 입문 블로그이자, 제가 만든 서비스를 소개하는 포트폴리오예요.
WebRTC는 Java API가 미디어를 전달하지 않아도 브라우저 간 연결·NAT·릴레이 설정이 필요하다. 그래서 예시 서비스는 텍스트 방을 원본으로 유지하고, 음성 리뷰는 opt-in 가능한 P2P 보조 경로로만 구현한다.
Java API와 Python 음성 엔진은 서로 다른 프로세스이므로, 문자열 기반 내부 호출보다 protobuf 계약이 변경과 장애를 더 분명하게 만든다. voice/v1/voice.proto는 음성 합성·voice catalog·capability를 하나의 버전 경계로 묶고, Java client는 요청 deadlin…
스케줄러 작업이 예외를 던지지 않았다는 사실은 성공을 뜻하지 않는다. 내부에서 오류를 잡고 None, error, 처리 수, partial을 반환하는 작업이 섞이면 관제는 정상·빈 결과·부분 실패를 구분하지 못한다.
HTTP 요청은 응답을 돌려주고 끝나지만 Kafka 작업은 나중에 처리됩니다. 이 둘을 같은 업무 payload로 억지로 묶지 않고, 별도의 correlation header를 전달하면 JSON 계약을 보존하면서 한 요청의 흐름을 따라갈 수 있습니다.
horoscopes는 날짜·종류·sign 하나가 아니라 한 날짜와 종류의 기대 sign 집합이 제품 결과다. 한 sign만 존재한다고 전체가 준비된 것은 아니다.
콘텐츠 검색은 제목·설명·slug·lesson 본문에서 ILIKE '%검색어%'를 사용한다. 검색어를 escape하고 길이를 제한하는 것은 안전성 계약이고, wildcard 앞뒤 때문에 일반 B-tree 인덱스는 이 쿼리를 충분히 돕지 못한다.
요구사항을 검증 증거로 바꾸고 HTTP·DB·외부 연동·파일·AI·실시간 미디어·배포·관측까지 하나의 운영 가능한 계약으로 연결해요.
컴퓨터를 켜는 순간부터 첫 코드를 실행하기까지. 비개발자·입문자가 한 칸씩 따라하면 끝.
프론트엔드의 시작부터 콘텐츠 연속성 UX까지를 한 흐름으로 잇는 11단계 강좌.
Next.js 16 App Router 로 DB 연결까지 4단계. PostgreSQL + Drizzle ORM 까지 연결하는 실전.
진짜 백엔드를 처음 만나는 7단계. 첫 줄부터 인증, 테스트, 배포까지.
Python 한 가지로 API 서버부터 스케줄링·외부데이터 수집·관측·실무 패턴까지 잇는 8단계.
실용적인 도구와 공공데이터 기반 서비스를 만드는 개발자예요. 모바일(Tauri/Flutter), 웹(Next.js), 백엔드(FastAPI/Spring) 풀스택으로 작업하며 AI/LLM 통합에 관심이 많아요.