서버 관리할 사람이 없는 단 한 사람의 경우.
이것이 무료 AI 이력서 빌더인 ResumeOrbitz에 사용된 모든 도구들입니다. 그리고 오늘 다시 시작한다면 제가 바꿀 하나의 선택지입니다.
여기가 처음인가요? 배경 이야기부터 시작해 보세요: 인도에서 솔로 창업가로서 AI 이력서 빌더를 만든 방법.
제약 조건이 모든 것을 결정했다
저는 유일한 엔지니어, 디자이너, 마케터입니다. 따라서 모든 도구는 세 가지 테스트를 통과해야 했습니다:
- 빠른 출시 (Ship fast): 몇 달이 아닌 몇 주 안에 안정적인 버전으로 출시 가능할 것
- 낮은 예산 (Low budget): 먼저 무료 티어를 사용하고, 실질적인 시간을 절약할 때만 유료로 전환할 수 있을 것
- 운영 불필요 (No ops): 제가 패치해야 하는 서버가 필요하다면 제외
아래의 모든 선택지는 이 세 가지 규칙을 따릅니다.
스택 한눈에 보기
| 레이어 | 도구 | 이유 | 월 비용 |
|---|
| 프론트엔드 | React + TypeScript + Vite | 상태를 유지하는 에디터, 빠른 빌드 | 무료 |
| ... | | | |
const { error } = await supabase
.from("resumes")
.upsert({
...
The 안전성을 확보하는 부분은 행 레벨 보안 정책(row-level security policy) 덕분이라, 사용자는 자신의 이력서에만 접근할 수 있습니다:
create policy "Users manage their own resumes"
on resumes for all
using (auth.uid() = user_id);
...
이 정책이 적용되면, 프론트엔드에서 버그가 발생하더라도 한 사용자의 이력서를 다른 사용자에게 넘겨줄 수 없습니다.
호스팅: Netlify
Git push만 하면 라이브가 됩니다. 모든 브랜치에 미리보기 URL(preview URL)이 생성되어, 템플릿을 배포하기 전에 테스트할 때 유용합니다.
Netlify에서 싱글 페이지 애플리케이션(SPA)이 필요한 단 하나의 파일은 public/_redirects입니다:
이것 없이는 홈 페이지를 제외한 다른 페이지를 새로고침할 때 404 에러가 반환됩니다.
싱글 페이지 애플리케이션의 SEO
Google Analytics는 SPA에서 첫 번째 페이지 로드만 계산합니다. 이 작은 훅(hook)은 모든 라우트 변경을 페이지 보기로 기록합니다:
import { useEffect } from "react";
import { useLocation } from "react-router-dom";
...
여기에 더해:
App.tsx에 연결된 JsonLd.tsx 컴포넌트는 각 페이지에 JSON-LD 스키마(FAQPage 포함)를 추가합니다.
- Open Graph 태그를 사용하여 공유 링크가 적절한 미리보기를 보여줍니다.
- AI 어시스턴트에게 사이트의 기능을 알려주는
llms.txt 파일
- 초기부터 Google Search Console을 사용했습니다.
AI: Groq
Groq는 ATS(Applicant Tracking System) 점수 산정, 키워드 갭 분석 및 커버레터 작성에 필요한 AI를 구동합니다. 제가 Groq를 선택한 이유는 두 가지입니다. 응답 속도가 에디터 내에서 즉각적이라고 느낄 만큼 빠르고, 무료 등급(free tier)이 현재 솔로 제품이 필요로 하는 것을 커버해주기 때문입니다.
단점은 무료 등급의 호출 제한(rate limits)입니다. 이는 좋은 문제이며, 사용량이 강제할 때 해결할 문제입니다.
제가 바꿀 것
저는 프리렌더링(pre-rendering) 또는 서버 사이드 렌더링(SSR)으로 시작할 것입니다. SPA는 JavaScript가 실행될 때까지 검색 엔진에 거의 빈 HTML 껍데기만 전달합니다. 오가닉 검색에 의존하는 제품이라면, 지금까지의 모든 SEO 개선 사항(JSON-LD, 페이지 보기 훅, llms.txt)은 이 초기 선택의 일종의 우회책이었습니다.
오늘 시작한다면, 랜딩 페이지는 첫날부터 실제 HTML로 배포될 것입니다.
월별 비용
운영 비용 0루피. Supabase, Netlify, Groq, GA4 및 Search Console 모두 무료 티어(free tiers)를 사용합니다. 유료 도구는 제가 사용하는 Claude Pro 구독이며, 이는 운영용이 아닌 구축용입니다.
여러분의 차례
솔로 프로젝트에 어떤 스택을 사용하시고, 무엇을 교체하고 싶으신가요? 모든 댓글을 읽습니다.
면책 조항: 저는 이 게시물의 주제인 ResumeOrbitz의 설립자입니다.