왜 시작했나
솔직히 말하면 불안해서 시작했습니다.
직장인 개발자로 살면서 "나는 지금 성장하고 있는 건가?"라는 질문이 계속 머릿속을 맴돌았습니다. 회사 업무만으로는 새로운 기술을 시도하기 어렵고, 퇴근 후에는 피곤하다는 핑계로 유튜브만 보다 잠들기 일쑤였습니다.
그래서 자신에게 강제성을 부여하기로 했습니다. 매일 퇴근 후 23:00~02:00, 라이브 방송을 켜고 하루 1개의 서비스를 바이브코딩으로 만든다. 라이브를 켜면 최소한 카메라 앞에서 멍하니 앉아 있지는 않을 거라는 계산이었습니다.
세 가지 질문을 품고 출발했습니다.
- 100일 동안 매일 만들면, 사람들이 실제로 방문하는 서비스가 나올까?
- 100일 동안 만들면, 수익은 얼마나 만들 수 있을까?
- 하루 2~3시간, 꾸준히 투자하면 실력은 얼마나 오를까?
답은 모릅니다. 100일 뒤에 확인하려고 합니다.
0일차에 만든 것 — 랜딩페이지
첫날은 "뭘 만들까"보다 "뼈대부터 잡자"에 집중했습니다. 100일 동안 쌓일 프로젝트를 정리할 랜딩페이지를 먼저 만들었습니다.
고민했던 구조
처음에는 Notion 같은 외부 도구로 기록할까 생각했지만, 어차피 웹 서비스를 만드는 챌린지인데 기록 페이지도 직접 만들자고 결정했습니다. 기록 자체가 Day 0의 결과물이 되는 셈이니까요.
구조는 단순합니다. 날짜별로 프로젝트를 역순 나열하고, 각 프로젝트에 상태(완료/진행중)와 태그(Web, Desktop, Mobile, API)를 달았습니다.
interface DayEntry {
day: number;
date: string;
projects: Project[];
}역순 나열을 선택한 이유는, 방문자가 가장 최근 작업을 먼저 볼 수 있도록 하기 위해서입니다. 100일치가 쌓이면 아래로 스크롤하는 건 비현실적이니까요.
기술 선택
- Next.js 16 (App Router) — 서버 컴포넌트 기본, 빌드가 빠름
- Tailwind CSS 4 — 빠르게 반응형 UI를 잡기에 최적
- TypeScript — 타입 안정성
별도 CMS나 데이터베이스 없이, page.tsx 안에 데이터를 직접 넣는 방식입니다. 100개 정도의 프로젝트 데이터는 이걸로 충분합니다. 오버엔지니어링은 챌린지의 적입니다.
1시간 20분, 생각보다 짧았다
자정에 시작해서 01:20에 끝냈습니다. 1시간 20분. 솔직히 "이게 끝이야?" 싶었습니다.
하지만 이게 포인트입니다. 첫날부터 완벽한 결과물을 내려고 하면 다음 날 안 하게 됩니다. 뼈대만 잡고 끝. 다음 날 진짜 서비스를 만들면 됩니다.
시작이 반이라는 말, 처음으로 진심으로 믿게 된 날이었습니다.