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

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

나만의 맛 기록장
오늘 먹은 음식을 '맛있어 / 또다시 / 별로야 / 모르겠' 네 가지 반응으로 가볍게 기록하는 앱. 출처·날짜로 다시 찾기 쉬워요.
가격·의료·장기요양 공공데이터 플랫폼
warragon.duckdns.org
가격 공유부터 구매희망·가계부·재구매까지 한 흐름. 연봉·의료비·요양시설 같은 공공데이터를 한곳에서 비교·검색할 수 있어요.
내 문서로 답하는 채팅
dmddksl.duckdns.org
내 문서·이미지에서 글자를 읽어 들이고, 그 안에서만 답을 찾아주는 채팅 서비스. 외부에 자료를 보내지 않고도 정확한 인용으로 답해줘요.
마음의 정원 다이어리
warragon.duckdns.org
다이어리·기념일·루틴·목표를 한 곳에서 정리하고, 매일의 운세까지 함께 받아보는 한국어 일상 관리 서비스. 모바일 우선.
초보 개발자와 비개발자를 위한 개발 입문 블로그이자, 제가 만든 서비스를 소개하는 포트폴리오예요.
파일 업로드와 검색 가능은 같은 상태가 아닙니다. 파싱·임베딩·저장이 끝나고 processed = TRUE가 된 검색 사본만 사용자 답변의 근거가 될 수 있습니다.
컨테이너가 running이어도 DB 연결·필수 테이블·내부 의존성이 준비되지 않았을 수 있습니다. readiness는 사용자 요청을 받을 수 있는 상태를, liveness는 프로세스가 살아 있는지를 나타내야 합니다.
프로세스가 살아 있다는 사실, 핵심 검색 요청을 처리할 준비가 됐다는 사실, 선택 기능이 모두 정상이라는 사실은 서로 다릅니다. 하나의 ready 값에 전부 넣으면 선택 모델 장애가 전체 재시작으로 이어지고, 핵심 DB 장애를 liveness가 가립니다.
HTTP 요청은 응답을 돌려주고 끝나지만 Kafka 작업은 나중에 처리됩니다. 이 둘을 같은 업무 payload로 억지로 묶지 않고, 별도의 correlation header를 전달하면 JSON 계약을 보존하면서 한 요청의 흐름을 따라갈 수 있습니다.
WebRTC는 Java API가 미디어를 전달하지 않아도 브라우저 간 연결·NAT·릴레이 설정이 필요하다. 그래서 예시 서비스는 텍스트 방을 원본으로 유지하고, 음성 리뷰는 opt-in 가능한 P2P 보조 경로로만 구현한다.
콘텐츠 검색은 제목·설명·slug·lesson 본문에서 ILIKE '%검색어%'를 사용한다. 검색어를 escape하고 길이를 제한하는 것은 안전성 계약이고, wildcard 앞뒤 때문에 일반 B-tree 인덱스는 이 쿼리를 충분히 돕지 못한다.
요구사항을 검증 증거로 바꾸고 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 통합에 관심이 많아요.