기술 스택 목록이 길수록 더 빨리 출시할 수 있나요?
목록에 빠진 것이 무엇인지에 따라 다릅니다. 스택 목록은 도구 이름을 나열할 뿐 그 경계 — 검증된 웹훅, 테넌트 범위 지정, 릴리스 서명 — 를 설치해주지 않으며, 프로젝트는 바로 그 이음새에서 멈춥니다. 베낀 목록은 통합 없이 도구만 복제합니다. 목록은 조사할 항목의 메뉴로는 유용하지만, 출시 가능한 제품으로 가는 길은 어떻게 얻든 검증된 배관입니다. 정직하게 물어야 할 것은 당신의 저녁 시간이 얼마짜리인가입니다.
북마크의 함정
며칠 전 X의 스레드에 실제로 쓰는 스택(제 “2026년 인디 개발 스택”, 하나의 답글에 담은 12개의 도구)으로 답했습니다. 그 답글은 100개가 넘는 북마크를 모았고 이 사이트로 100번이 넘는 클릭을 유도했습니다.
애널리틱스는 그리 좋지 않았습니다: 대부분의 방문자는 페이지를 훑어보고 떠났습니다. 스택 목록은 완성된 계획처럼 읽히지만 복사한 목록은 아무것도 출시하지 않습니다. 모든 도구는 여전히 설치하고 이웃과 배선하고 테스트해야 합니다 — 그 사이의 접합부에서 몇 주가 들어갑니다.
이것이 북마크가 찾던 글입니다: 어떤 도구를 돌리는지가 아니라 어떤 배선이 이미 하중을 지고 있었는지 — 그리고 그것이 48시간 만에 무엇을 출시하게 해줬는지입니다.
프로젝트가 실제로 죽는 곳
대부분의 인디 프로젝트는 핵심 기능에서 죽지 않습니다. 아이디어와 아무 관련 없는 인프라에서, 첫째 주에 죽습니다. 동기의 반감기는 약 48시간입니다 — 제품에서 떨어져 보내는 한 시간마다 솔로 빌드가 가진 가장 희소한 자원을 태웁니다.
그 일주일의 형태는 놀라울 만큼 일관됩니다:
- 첫째 날: 모노레포 레이아웃, ESLint,
tsconfig경로, 데이터베이스 마이그레이션. - 셋째 날: 아직도 결제 제공업체 문서 속에서, 웹훅 멱등성을 올바르게 만들고 있습니다.
- 다섯째 날: 데스크톱이나 모바일 컴패니언 — 새 빌드 파이프라인, 새 인증 표면, 처음부터 만드는 자동 업데이트.
48시간 빌드, 처음부터 끝까지
지난주 Windows 네이티브 데스크톱 유틸리티 SpinShare를 출시했습니다: Explorer에서 파일을 드래그하고 Shift를 누르면 커서 아래에 래디얼 메뉴가 열리고, 놓으면 로컬 변환이나 작업이 실행됩니다. 팝업은 없고, 업로드되는 것도 없으며, 파일은 기기를 떠나지 않습니다.
살펴볼 만한 것은 타임라인입니다: 새 리포지토리, Rust 코어 로직, 기존 결제 레일 위의 오프라인 라이선스 플로, 그리고 Microsoft Store 제출 — 에이전트와 페어 코딩으로, 프롬프트 튜닝은 거의 없이 핵심 개발 48시간이었습니다. 에이전트가 탈선하지 않은 이유는 화려하지 않습니다: 환각을 일으키는 아키텍처 경계가 이미 제 킷인 supastack 안에 봉인되어 있었기 때문입니다.
이어지는 것은 그 정산입니다: 그 이틀 동안 만들지 않아도 됐던 배선의 내역입니다.
설정과 가드레일
pnpm setup은 부트스트랩을 하나의 명령으로 압축합니다: 사전 점검, 환경 변수 정렬, 의존성 설치, 데이터베이스 마이그레이션. 작동하는 환경을 조립하느라 보내는 첫날 밤은 없습니다 — 리포지토리는 자체 체크리스트를 통과하든가 무엇이 빠졌는지 정확히 알려줍니다.
.ai/ 미러 문서, AGENTS.md, .agents/skills/는 사람이 아니라 에이전트를 위해 쓰인 계약입니다 — 각 패키지의 책임 경계, 테스트 규칙, 넘어서는 안 되는 선(데스크톱 앱은 제품 UI를 포크하지 않는 단일 웹뷰 셸입니다)을 담습니다. 에이전트가 읽는 레이아웃은 프로젝트 구조 가이드가 보여주고, 작업 리듬은 에이전트 워크플로 글이 다룹니다.
적혀 있는 경계는 에이전트가 헤매며 넘을 수 없는 경계입니다.
완성된 채로 제공되는 결제와 릴리스
8개의 결제 어댑터가 하나의 계약 뒤에 있습니다 — Stripe, Creem, Polar, Dodo, Lemon Squeezy, Paddle, Whop, PayPal — webhook_event 원장은 모든 정산이 라이선스나 이메일이 되기 전에 서명 검증과 멱등성을 갖추게 합니다. 제 작업은 그 하류에서 시작됐습니다: 주문 수로 전환되는 Early-Bird 티어와 Ed25519 서명 오프라인 라이선스 키 — 데스크톱 도구는 네트워크 호출 없이 활성화되어야 하니까요. 제가 확장한 플로는 결제 모듈 가이드에 문서화되어 있습니다.
릴리스 쪽도 똑같이 심심했고, 그게 요점입니다. Tauri 2 파이프라인 — desktop-release.yml — 은 서명된 번들을 빌드하고 Windows(NSIS와 msi), macOS(dmg), Linux(AppImage)에서 stable 및 beta 채널용 latest.json을 minisign으로 생성합니다. 제가 직접 한 유일한 패키징은 Microsoft Store용 MSIX 빌드뿐이었고, 나머지는 데스크톱 퀵스타트가 다룹니다.
사용자가 실제로 느끼는 10%
스택 목록이 숨기는 산수는 이렇습니다. 제품이 필요로 하는 것의 대략 90%는 사용자가 결코 보지 않는 배선입니다. 보이지 않는 배선이야말로 기반이 떠맡아야 할 작업입니다 — 떠맡을 수 있는 부분이니까요. 나머지가 제품입니다.
제 경우에는 이미 하중을 지고 있었기에, 48시간의 거의 전부가 사용자가 느낄 수 있는 10%로 갔습니다 — 스택 댓글에 결코 들어맞지 않고, 한 주가 웹훅과 서명에 쓰이는 동안에는 결코 일어나지 않는 작업입니다:
- Rust로 작성한 Windows OLE 드래그 훅. 실제 파일 드래그가 Shift와 함께 유지되는 동안에만 메뉴가 활성화되고, 타이핑 중에는 결코 그러지 않습니다.
- 다중 창 트레이 플로. 작업 표시줄 창 없이도 도구가 항상 키 하나 거리에 있습니다.
- 래디얼 메뉴 애니메이션. 애니메이션이 아니라 즉각적으로 읽힐 때까지 조정했습니다.
- 30개가 넘는 로컬 포맷 변환기. 각각 자체 단위 테스트를 갖추고 있습니다.
실용적인 부분: 가격과 투명성
일리 있는 반론이 있습니다: “Cursor가 있는데 왜 스택 목록에 돈을 내야 하나요?” 자신의 시간에 가격이 매겨지기 전까지는 성립합니다. 웹훅 멱등성에 쓰는 이틀 저녁은 출시하지 못한 기능 하나의 비용입니다.
투명성에 관해서: 문서는 전체가 공개입니다 — 디렉터리 구조, 두 개의 웹 엔진, 크로스 플랫폼 동기화, 8개 결제 어댑터 전부, AI 라우팅. 회의적인 사람이 헤드라인만 보고 구매하기보다 처음부터 끝까지 읽고 돌아서는 편이 낫습니다. 스타터 키트 vs 처음부터가 그 결정의 정직한 버전입니다.
실무적인 참고 두 가지: 표시 가격에는 이미 출시 기념 할인 미화 100달러가 포함되어 있고, 체크아웃은 Alipay를 지원합니다. 그리고 50% 빌더 캐시백 — 60일 안에 실제 제품을 출시하고, 빌드 스토리를 공개적으로 공유하고(X, Reddit, YouTube 등에서 오가닉 조회수 5,000회 또는 오가닉 좋아요 50개), 링크를 이메일로 보내 주세요. 절반이 돌아오고 라이선스는 그대로 당신의 것입니다. 규칙은 출시 캐시백 약관에 있습니다.
스택 목록에 대해 자주 묻는 질문
킷이 화제가 될 때마다 같은 반론이 떠오릅니다. 그것들은 곧은 답을 받을 자격이 있습니다.
- 에이전트가 이 모든 걸 스캐폴딩해주지 않나요? — 그럴듯한 무언가를 만들 수는 있지만 접합부를 한 번에 검증할 수는 없습니다. 멱등 웹훅은 생성되는 것이 아니라 테스트되는 것입니다 — 스캐폴딩은 같은 목록을 다시 건네줄 뿐입니다.
- 보일러플레이트가 제품을 획일적으로 만들지 않나요? — 배선은 공유되지만 제품은 아닙니다. SpinShare의 드래그 훅, 트레이 동작, 변환기는 킷 어디에도 없습니다 — 고객이 보는 10%는 당신의 것으로 남습니다.
- 웹 앱만 필요하다면요? — 어느 쪽이든 구매하는 것은 킷입니다. 모바일과 데스크톱은 요구 사항이 아니라 채택하거나 무시할 수 있는 표면입니다. SpinShare가 존재하는 이유는 데스크톱 표면이 이미 만들어져 있었기 때문입니다.
- 데스크톱 유틸리티가 정말 구매자 이야기인가요? — 제가 가진 가장 짧고 정직한 예시입니다: 빈 리포지토리에서 스토어 제출까지 이틀. 같은 배선이 SaaS에도 쓰입니다 — 출시 체크리스트가 더 긴 버전입니다.
- 왜 스택 목록만 공개하지 않나요? — 이미 했습니다: 기술 스택 가이드가 모든 선택과 그 이유를 열거합니다. 목록은 메뉴이지 계획이 아닙니다 — 여기서의 논지는 이미 만들어진 계획을 사는 것입니다.