
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
다이어리·기념일·루틴·목표를 한 곳에서 정리하고, 매일의 운세까지 함께 받아보는 한국어 일상 관리 서비스. 모바일 우선.
초보 개발자와 비개발자를 위한 개발 입문 블로그이자, 제가 만든 서비스를 소개하는 포트폴리오예요.
관측성은 데이터를 많이 쌓는 일이 아니라 장애 질문에 답하는 일입니다. Rate·Errors·Duration을 route template로 수집하고 request context로 로그·비동기 작업과 연결합니다.
Tauri의 output: export 빌드는 Next.js 서버 route와 redirect를 포함하지 않는다. 웹과 같은 코드를 공유한다는 사실이 같은 실행 능력을 보장하지 않는다.
Java API와 Python 음성 엔진은 서로 다른 프로세스이므로, 문자열 기반 내부 호출보다 protobuf 계약이 변경과 장애를 더 분명하게 만든다. voice/v1/voice.proto는 음성 합성·voice catalog·capability를 하나의 버전 경계로 묶고, Java client는 요청 deadlin…
HTTP 요청은 응답을 돌려주고 끝나지만 Kafka 작업은 나중에 처리됩니다. 이 둘을 같은 업무 payload로 억지로 묶지 않고, 별도의 correlation header를 전달하면 JSON 계약을 보존하면서 한 요청의 흐름을 따라갈 수 있습니다.
콘텐츠 검색은 제목·설명·slug·lesson 본문에서 ILIKE '%검색어%'를 사용한다. 검색어를 escape하고 길이를 제한하는 것은 안전성 계약이고, wildcard 앞뒤 때문에 일반 B-tree 인덱스는 이 쿼리를 충분히 돕지 못한다.
묶음 결과는 행 하나가 아니라 같은 batch key에 속한 기대 멤버 전체로 판정해야 합니다. 일부 행만 존재하는 상태를 완료로 오인하지 않는 읽기·쓰기 계약을 설명합니다.
요구사항을 검증 증거로 바꾸고 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 통합에 관심이 많아요.