| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 상태관리
- Kotlin
- React
- REST API
- contextBridge
- 보안
- Vite
- 크롤링
- 도메인설계
- javascript
- php
- 온디바이스AI
- 배포
- github actions
- 메일자동화
- Android
- JWT
- 프론트엔드
- 인증
- sqlite
- 소셜로그인
- typescript
- 아키텍처
- electron
- playwright
- next.js
- 마이그레이션
- FastAPI
- 백엔드
- python
- Today
- Total
목록typescript (33)
HM소프트
공간 대여 매칭 플랫폼 MVP를 위치 기반 검색부터 만든 기록. PostGIS geography와 GiST 인덱스로 반경 검색을 풀며 ST_DWithin은 필터, ST_Distance는 표시로 나누고, 좌표 순서 함정과 모바일 JWT 토큰 갱신을 인터셉터 한 곳에 가둔 과정을 담았다.세 종류의 사용자를 잇는다는 문제유휴 공간을 가진 사람, 그 공간에 둘 제품을 가진 사람, 그리고 그걸 팔아줄 사람. 한 공간 대여 매칭 플랫폼의 MVP를 만들면서 가장 먼저 부딪힌 건 "이건 흔한 양방향 매칭이 아니다"라는 사실이었다. 보통의 마켓플레이스는 공급자와 수요자, 두 역할만 있으면 된다. 그런데 이 서비스는 공간 제공자 · 제품 제공자 · 판매자라는 세 종류의 사용자가 서로를 향해 요청을 날린다. 공간 주인이 "..
Next.js 14 App Router와 TypeScript로 전력 엔지니어링 기업 홈페이지 시안을 만든 기록. 다국어는 URL 라우팅 대신 Context 토글로 단순화하고, GitHub Actions로 정적 배포하며, as const가 만든 리터럴 유니온 타입 충돌을 정적 빌드에서 잡아 푼 과정을 담았다.하룻밤 만에 "이런 톤으로 갑니다"를 만들어야 했다한 전력 설비 분야 엔지니어링 기업의 공식 홈페이지 프로토타입 시안을 만들었다. 본 구축 계약 전에 "이런 구조와 이런 분위기로 갑니다"를 의사결정자에게 보여주는 단계라, 완성도보다 속도와 첫인상이 중요했다. 회사명·연락처 같은 실제 정보는 이 글에서 전부 일반화했지만, 작업 자체는 운영을 전제로 한 진짜 코드였다.이 글의 재미있는 점은 커밋 로그가 곧..
Next.js 14 App Router와 TypeScript로 전력 엔지니어링 기업 홈페이지 시안을 만든 기록. 다국어는 URL 라우팅 대신 Context 토글로 단순화하고, GitHub Actions로 정적 배포하며, as const가 만든 리터럴 유니온 타입 충돌을 정적 빌드에서 잡아 푼 과정을 담았다.하룻밤 만에 "이런 톤으로 갑니다"를 만들어야 했다한 전력 설비 분야 엔지니어링 기업의 공식 홈페이지 프로토타입 시안을 만들었다. 본 구축 계약 전에 "이런 구조와 이런 분위기로 갑니다"를 의사결정자에게 보여주는 단계라, 완성도보다 속도와 첫인상이 중요했다. 회사명·연락처 같은 실제 정보는 이 글에서 전부 일반화했지만, 작업 자체는 운영을 전제로 한 진짜 코드였다.이 글의 재미있는 점은 커밋 로그가 곧..
4대보험·소득세 계산 엔진을 React에서 떼어 순수 함수로 짜고, 근로시간부터 통상시급·수당·과세급여·보험·세금까지 6단계 직선 파이프라인으로 순서를 못 박는다. 7가지 근로 유형 분기, 5인 미만 가산 비대칭, 항목별 절사 규칙, 국민연금 상한하한과 두루누리 감면, 간이세액표 lookup, 네트 역산출을 이분법으로 푸는 과정을 다룬다.매달 반복되는 계산을 코드로 박제하기매달 급여명세서를 만들 때마다 같은 계산을 반복했다. 기본급에서 4대보험을 빼고, 간이세액표를 뒤져 소득세를 떼고, 지방소득세를 붙이고, 실수령액을 맞춘다. 엑셀로 하다 보면 요율이 바뀐 해에 수식 하나를 놓쳐 전 직원 명세서를 다시 뽑는 일이 생긴다. 게다가 우리가 쓰는 인력 구성은 평범하지 않았다. 주 5일 정규직만 있는 게 아니라..
예약된 슬롯은 보존하고 미예약분만 갈아끼우는 시간표 무중단 전환을 이중 안전장치로 구현하고, 날짜·시간 범위 슬롯 일괄 차단을 AVAILABLE만 골라 처리한다. 요금 단가는 환경변수로 빼고, SPA의 빈 초기 HTML에 JSON-LD 구조화 데이터로 SEO를 박는다. 정책을 박제하는 Jest 단위 테스트와 Playwright E2E까지 시리즈를 마무리한다.3편: 운영하고, 노출하고, 검증하다1편에서 예약 도메인을, 2편에서 알림·실시간 연동을 다뤘다. 마지막 편은 시스템을 실제로 굴러가게 만드는 세 가지다. 운영자가 매일 쓰는 관리자 도구(특히 까다로웠던 시간표 무중단 전환과 슬롯 일괄 차단), 검색에 노출시키는 SEO, 그리고 이 모든 정책이 무너지지 않게 지키는 테스트.시간표 무중단 전환 — 예약을..
알림톡 1차 발송과 SMS 자동 대체를 대행사 failover 파라미터로 위임하고, 발송 실패는 예약과 분리한다. SMS 길이는 글자 수가 아니라 EUC-KR 바이트로 재서 LMS로 분기하고, 슬롯 잠금은 메모리 Map과 타임아웃으로 다룬다. POS 연동을 폴링에서 푸시로 바꿔 Socket.IO와 plain WebSocket을 공존시키고 좀비 연결을 heartbeat로 솎는다.2편: 예약을 통지하고, 현장과 잇다1편에서 예약 도메인을 다뤘다. 슬롯·정책·동시성·락커까지. 하지만 예약은 "DB에 레코드가 생겼다"로 끝나는 게 아니다. 사용자에게 닿아야 하고(알림), 현장 결제 단말과 실시간으로 이어져야 한다(POS). 이번 편은 그 두 개의 연결선이다.두 연결은 성격이 정반대다. 알림은 외부 발송 대행사로..