Labs
앱을 만드는 동안 시도한 실험과 시행착오를 기록합니다.무엇을 해봤고 어떤 결과를 얻었는지, 아직 확인하지 못한 부분은 무엇인지 남깁니다.
- 마무리2026-09
프로젝트별 경로와 실행 명령을 에이전트 설정으로 분리하기프로젝트마다 다른 값을 profile.json에 모았다. 자동으로 확인할 항목과 사용자에게 물어야 할 항목을 나눴다.curvezbootstrap에이전트 - 마무리2026-09
에이전트가 따를 DDD 구조와 의존성 규칙 정하기DDD라는 이름만으로 전달되지 않는 폴더 구조와 금지 import를 문서로 정했다. 프리셋 선택부터 규칙 검증까지의 절차를 기록했다.curvezarchitectureddd - 마무리2026-09
에이전트에게 UI 구현을 맡기기 전 디자인 값 정하기색상·간격·글꼴을 토큰으로 확정하고 라이트·다크 테마를 함께 정의했다. 화면 상태와 접근성 조건도 구현 전에 문서에 남겼다.curvezdesign-tokenswireframe - 마무리2026-09
익숙하지 않은 스택의 설계 순서와 통과 조건 정하기백엔드도 프론트도 손에 익은 상태가 아니었다. 설계에서 순서와 통과 조건만 직접 정하고 구현은 에이전트에게 넘겼다. 아홉 단계와 배포된 게시판 하나가 나왔다.axarchitecture검증 - 마무리2026-09
에이전트의 작업 완료 기준과 인수인계 형식 정하기설계·구현·테스트 에이전트가 주고받는 JSON 형식을 정했다. 완료 상태와 산출물, 검증 결과를 구분해 전달한다.curvezagent-skillshandoff - 마무리2026-09
Next.js 서버·클라이언트 코드 경계를 린트로 검사하기컴포넌트 실행 위치와 데이터 처리 방식을 정하고 import 규칙으로 검사한다. 위반이 없는 경우와 검사 자체가 실패한 경우를 구분했다.curveznextjsapp-router - 마무리2026-09
UI 애니메이션의 시간과 움직임을 토큰으로 통일하기애니메이션의 필요성을 먼저 판단하고 이징과 지속 시간을 토큰으로 정했다. 중단 가능성과 접근성 검토를 절차에 포함한 과정을 기록했다.curvez애니메이션디자인토큰 - 마무리2026-09
에이전트의 조사 내용을 원문 출처와 대조하기공식 문서와 원본 코드를 기준으로 주장과 버전을 확인하는 절차를 만들었다. 출처가 충돌하거나 답을 찾지 못했을 때의 처리도 정했다.curvezresearch에이전트 - 마무리2026-09
테스트가 실행되지 않은 검증을 통과 처리하지 않기종료 코드가 0이어도 테스트가 실제로 실행됐는지 확인한다. 프로젝트별 검사 명령과 결과 기록 형식을 정했다.curvez품질검증테스트 - 마무리2026-09
순환 의존 검사에서 경로 별칭 누락 확인하기구조 검사 명령을 실제 프로젝트에 실행해 검출 범위를 확인했다. 순환 의존과 경계 위반, 중복 코드의 수정 우선순위도 정리했다.curvezrefactoring아키텍처 - 마무리2026-09
에이전트의 다음 작업에 회고 결과 반영하기핸드오프 기록에서 반복된 문제를 찾고 규칙을 수정할 위치를 정한다. 회고를 실행 가능한 액션 아이템으로 남기는 방법을 정리했다.curvezagent-skillsretrospective - 마무리2026-09
여러 에이전트의 파일 수정 충돌 줄이기담당 경로의 겹침을 확인하고 병렬 실행 여부를 결정했다. 팀 구성부터 결과 수합까지 필요한 절차와 추가 비용을 정리했다.curvezagent-skillsorchestration - 마무리2026-09
[로그인인증] 시리즈 안내 (00)FE·BE 가 분리된 앱에 로그인 인증을 직접 만든다. 액세스·리프레시 토큰 발급과 회전, 재사용 탐지, CSRF 공격과 방어, Swagger 로 FE 와 협업하는 법까지 19편의 구성과 실습 환경을 안내한다.로그인인증authnestjs - 마무리2026-09
[로그인인증] 인증은 무엇을 기억하는 일인가 (01)세션과 토큰 방식의 차이, 쿠키의 모든 속성, 출처(origin)와 사이트(site)를 구분해 설명할 수 있다.로그인인증authcookie - 마무리2026-09
[로그인인증] 토큰을 설계하다 (02)JWT 를 손으로 해부하고, 액세스·리프레시 토큰을 나누는 이유와 이 시리즈의 설계 표를 이해한다.로그인인증authjwt - 마무리2026-09
[로그인인증] 실습 환경을 세우다 (03)DB·NestJS·Swagger 를 띄우고, 환경변수를 검증하는 설정 계층을 만든다.로그인인증nestjspostgresql - 마무리2026-09
[로그인인증] 가입 — 비밀번호를 저장하는 법 (04)argon2id 로 비밀번호를 해싱하고, 에러 응답 형식과 Swagger 문서화 규칙을 정한다.로그인인증argon2nestjs - 마무리2026-09
[로그인인증] 로그인과 액세스 토큰 (05)JWT 를 발급·검증하고, 가드로 API 를 보호하고, 로그인 시도를 제한한다.로그인인증jwtnestjs - 마무리2026-09
[로그인인증] 리프레시 토큰을 발급하다 (06)불투명 리프레시 토큰을 해시로 저장하고, 쿠키 속성을 하나하나 정해 내려보낸다.로그인인증refresh-tokencookie - 마무리2026-09
[로그인인증] 회전과 재사용 탐지 (07)트랜잭션으로 리프레시 토큰을 회전하고, 탈취를 탐지하고, 세션을 관리한다.로그인인증refresh-tokenpostgresql - 마무리2026-09
[로그인인증] CSRF 공격을 직접 해 보기 (08)공격 페이지를 만들어 다른 사람의 닉네임을 바꾸는 CSRF 공격에 성공해 본다.로그인인증csrfsecurity - 마무리2026-09
[로그인인증] 방어를 한 겹씩 (09)SameSite·Origin 검사·서명된 CSRF 토큰을 하나씩 켜며 같은 공격이 실패하는 것을 확인한다.로그인인증csrfsamesite - 마무리2026-09
[로그인인증] Swagger 로 협업하기 (10)BE 가 OpenAPI 계약 파일을 내보내고, FE 가 그 파일에서 타입과 클라이언트를 만든다.로그인인증openapiswagger - 마무리2026-09
[로그인인증] 로그인 화면과 세션 상태 (11)액세스 토큰을 메모리에 두고, 새로고침 뒤에도 로그인을 되살린다.로그인인증reactauth - 마무리2026-09
[로그인인증] 끊기지 않는 세션 (12)401 자동 재시도, single-flight, 탭 간 잠금, 로그아웃 동기화를 만든다.로그인인증reactweb-locks - 마무리2026-09
[로그인인증] 시나리오로 증명하기 (13)22개 시나리오를 e2e 테스트와 curl 스크립트로 돌려 설계를 증명한다. 실제 실행 결과를 싣는다.로그인인증e2evitest - 마무리2026-09
[로그인인증] 운영으로 가져가기 (14)도메인 구성, 비밀 관리, 키 교체, 모니터링 체크리스트를 채운다.로그인인증securitydeployment - 마무리2026-09
[로그인인증] 쿠키·헤더 레퍼런스 (A)쿠키 속성, SameSite 동작, CORS 헤더, 보안 헤더, JWT 클레임, 이 시리즈의 에러 코드를 한곳에 모은 레퍼런스.로그인인증cookiereference - 마무리2026-09
[로그인인증] 문제 해결 (B)쿠키가 안 실린다, CORS 에러, refresh 가 계속 401 같은 증상별로 원인·확인 방법·해결을 정리했다.로그인인증troubleshooting - 마무리2026-09
[로그인인증] 완성 코드 (C)시리즈를 끝까지 따라왔을 때의 NestJS 백엔드·React 프론트엔드·공격 페이지 코드 전체.로그인인증nestjsreact - 마무리2026-09
[로그인인증] 네트워크 탭 확인 (D)개발자 도구 Network 탭에서 인증 흐름을 읽는 확인표와, 같은 내용을 화면 하단에 찍는 교육용 네트워크 콘솔.로그인인증devtoolsnetwork - 진행 중2026-09실제 화면의 반복 패턴으로 UI 컴포넌트 고르기기존 코드에서 반복되는 스타일을 세어 공용 컴포넌트를 정했다. 토큰 적용과 검사 도구, 개발 서버에서 겪은 오류도 기록했다.design-systemstorybooktokens
- 마무리2026-09
반복되는 지시를 스킬로 옮기고 검사 패턴 붙이기게시판 API 를 만드는 동안 스킬 여섯과 서브에이전트 하나가 나왔다. 언제 옮기는지, 경계를 어떻게 나누는지, 그리고 규칙만 적어 두면 왜 다시 새는지 정리했다.agent-skillsskillssubagent - 마무리2026-09
[타임시트] 스택과 구조 안내 (00)알바 출퇴근·급여 앱 타임시트를 만든 스택을 한 편씩 나눠 적는 시리즈의 안내다. 스택 표와 요청이 흘러가는 구조, 01~08편의 목차를 담았다.타임시트next-jsexpress - 마무리2026-09
[타임시트] Next.js 16 App Router — 같은 출처 쿠키와 정적 화면 (01)타임시트의 웹은 Next.js 16 App Router 로 만들었지만 서버 렌더는 거의 쓰지 않는다. rewrites 로 API 를 같은 출처 뒤에 두고, 화면은 미리 렌더된 정적 HTML 위에서 클라이언트가 세션을 부팅한다. 그 구조를 고른 이유와 배포에서 막힌 곳, 치른 비용을 정리했다.타임시트nextjsapp-router - 마무리2026-09
[타임시트] Express 5 API — 라우터와 오류, Vercel 진입점 (02)타임시트의 API 는 Express 5 앱 하나다. 로컬에서는 listen 하는 서버로, Vercel 에서는 함수로 돈다. 라우터 다섯 개와 전역 CSRF, AppError 로 모은 오류 응답을 어떻게 짰는지, 그리고 로컬에서 다 통과한 앱이 Vercel 에서 네 번 실패한 이유를 적었다.타임시트expresshelmet - 마무리2026-09
[타임시트] zod 계약 하나로 검증·문서·FE 타입 (03)타임시트는 server/src/contract.ts 의 zod 스키마 하나에서 요청 검증, OpenAPI 문서, FE 타입을 모두 뽑는다. 계약을 바꾸면 타입 검사가 깨지는 곳이 곧 FE 가 고칠 곳이 된다. 그 흐름과 생성기에서 막힌 곳, 이 방식이 치르는 비용을 적었다.타임시트zodopenapi - 마무리2026-09
[타임시트] Prisma 7 과 Neon — 스키마, 마이그레이션, 운영 DB (04)타임시트의 데이터는 Prisma 7 로 다루고 운영에서는 Neon Postgres 에 둔다. 연결 주소를 prisma.config.ts 로 옮긴 것, 부분 유니크 인덱스, 컬럼과 테이블을 추가하기만 한 마이그레이션 다섯 개, 운영 적용 절차와 막힌 곳을 정리했다. DB 가 미국 동부에 있어 요청 시간이 어떻게 됐는지도 함께 적었다.타임시트prismaneon - 마무리2026-09
[타임시트] 로그인 인증 — JWT, argon2, 쿠키 세션, CSRF (05)타임시트의 로그인은 외부 인증 서비스 없이 Express 에 직접 만들었다. 전역 web-auth 스킬의 설계(JWT 10분, argon2id, 리프레시 토큰 회전과 재사용 탐지)를 가져온 뒤 액세스 토큰까지 HttpOnly 쿠키에 담는 30일 슬라이딩 세션으로 바꿨다. 모든 변경 요청에 건 CSRF 검사, FE 의 갱신 흐름, e2e 시나리오와 운영에서만 드러난 일까지 정리했다.타임시트authjwt - 마무리2026-09
[타임시트] UI — Tailwind 4 토큰, shadcn 원본, 스켈레톤 (06)색 토큰 일곱 개를 globals.css 한 파일에 두고, shadcn 컴포넌트는 사용자가 지목한 네 개만 원본 그대로 들였다. 버튼 모양이 하루에 세 번 바뀌어도 한 파일만 고쳤고, 불러오는 중 화면을 불러온 뒤와 같은 크기로 맞춰 측정한 5개 화면의 CLS 가 0 이 됐다.타임시트tailwindshadcn - 마무리2026-09
[타임시트] Vercel 배포 — 웹과 API 를 따로 올리고 리전을 재다 (07)Next.js 웹과 Express API 를 Vercel 프로젝트 두 개로 나눠, 웹은 로컬에서 빌드해 올리고 API 는 Vercel 에서 빌드했다. 하루 동안 난 배포 실패를 순서대로 적고, 요청마다 약 210ms 가 서울과 미국 동부 사이 거리에서 나온다는 측정값까지 정리했다.타임시트verceldeployment - 마무리2026-09
[타임시트] 테스트와 검증 — 로직 단위 테스트부터 운영 측정까지 (08)급여·지오펜스·달력 계산은 node --test 단위 테스트 54개로, 로그인·매장·요청 API 는 실행 중인 서버에 대고 도는 e2e 17개로 확인했다. 로그인 화면을 자동화로 볼 수 없어 공개 가이드 예시를 390·320px iframe 에 띄워 쟀고, 운영 응답 시간과 CLS 는 스크립트와 Resource Timing 으로 쟀다. 검증하지 못한 것은 표로 남겼다.타임시트testingnode-test