1인 프리랜서 견적·계약·입금 관리미리보기
견적서 보내고, 고객이 링크로 승인하고, 입금 확인까지 한 화면에서.
1인 프리랜서 견적·계약·입금 관리
PRD
문제
- 1인 프리랜서(디자이너, 개발자)는 견적서, 승인, 계약, 입금 확인이 엑셀·이메일·메신저·전자계약 서비스·은행 앱에 흩어져 있다.
- 클라이언트 승인을 메신저·이메일로 주고받아 확인이 느리고 상태를 놓친다.
- 입금 여부를 은행 앱에서 일일이 확인하고 직접 독촉해야 해서 미수금 관리가 어렵다.
- 프로젝트가 어느 단계까지 진행됐는지 한눈에 보기 어렵다.
목표
- 견적 → 승인 → 계약 → 입금을 프로젝트 하나의 한 줄 파이프라인으로 통합한다.
- 클라이언트는 회원가입 없이 링크만으로 견적 확인·전자서명을 하게 해 승인 장벽을 낮춘다.
- 입금 확인 체크와 미입금 알림으로 미수금 리스크를 낮춘다.
- 검증 지표(수치 목표는 확정 필요, 재는 방법만 정의): 견적서 발송 건수(주간 집계), 승인 링크 열람·서명 전환율(발송 대비 열람·서명 수), 미입금 알림 후 입금 완료까지 소요 일수, 베타 유저 주간 활성 비율(주간 로그인 또는 견적서 작성 기준).
출시 범위
- 포함: 회원가입·로그인(프리랜서용), 프로젝트 생성·진행 단계 보드, 견적서 템플릿(항목·수량·단가·부가세 자동 계산), 고객용 승인 링크(비회원 열람·전자서명), 간단 계약서 생성, 입금 요청·계좌 안내, 입금 수동 확인 체크와 미입금 알림, 무료+유료 티어 구독(가정: 세부 가격·티어 구성 확정 필요).
- 제외(범위 밖·다음 단계): 자동 입금 대사(계좌 연동), 세금·회계 관리 기능, 결제 대행을 통한 온라인 결제, 팀/멀티유저 협업 기능.
역할과 권한
- 프리랜서(회원): 프로젝트·견적서·계약서·입금 요청 생성 및 관리, 자신의 데이터만 접근.
- 클라이언트(비회원): 승인 링크로 견적서 열람, 전자서명, 입금 계좌 안내 확인만 가능. 다른 문서 접근 불가.
- 운영자(관리자): 회원 관리(목록·상세·탈퇴 처리), 구독·티어 관리, 공지·FAQ 콘텐츠 관리, 서비스 이용 통계 확인.
- 관리자 화면 짝: 회원가입·로그인 ↔ 회원 관리 화면, 구독 ↔ 구독·결제 내역 관리 화면, 공지·FAQ ↔ 콘텐츠 관리 화면. 클라이언트 승인 링크는 비회원 단발성 흐름이라 별도 관리 화면 없이 프리랜서 화면에서 상태 확인.
사용자 시나리오
- 김서연(디자이너)은 새 프로젝트를 생성하고 견적서 템플릿으로 항목·수량·단가를 입력해 부가세가 자동 계산된 견적서를 만든 뒤 승인 링크를 클라이언트에게 보낸다.
- 클라이언트는 회원가입 없이 링크에서 견적서를 확인하고 전자서명으로 승인한다. 김서연은 보드에서 단계가 '승인 완료'로 바뀐 것을 확인한다.
- 승인 후 간단 계약서를 생성하고, 입금 요청에 계좌 정보를 담아 클라이언트에게 안내한다.
- 기한 내 입금이 확인되지 않으면 미입금 알림이 발송되고, 김서연은 입금 확인 체크로 상태를 갱신한다.
핵심 기능
- 프로젝트 보드: 프로젝트별 견적 → 승인 → 계약 → 입금 단계 상태를 한 화면에서 표시하고 단계 전이를 기록한다.
- 견적서 작성: 항목·수량·단가 입력 시 소계·부가세·합계 자동 계산, 템플릿 저장·재사용.
- 승인 링크: 토큰 기반 비회원 열람 URL 발급, 클라이언트 전자서명(이름 입력 + 서명 저장), 열람·서명 이벤트 기록.
- 계약서·입금 관리: 승인된 견적 기반 간단 계약서 생성, 입금 요청(계좌 안내 포함) 발송, 입금 수동 확인 체크, 미입금 시 알림(이메일) 발송.
- 구독 관리: 무료 티어(기본 견적서·승인 링크 등 제한 기능), 유료 티어(프로젝트 수 제한 해제, 계약서·미입금 알림 등 전체 기능) — 가정: 티어별 기능 구성·가격 확정 필요.
기술 스택과 아키텍처
- 백엔드: PHP 8(프레임워크 없이), 프론트: HTML/CSS/바닐라 JS, DB: MySQL/MariaDB(utf8mb4, mysqli·prepared statement), 웹서버: Apache.
- 배포: 카페24 VPS(또는 카페24 웹호스팅), 플랜디 완성 사이트 소스와 같은 구조.
- 구조: 공통 설정/DB 접속 모듈, 페이지별 PHP 파일, 레이아웃 인클루드 방식. 이메일 발송은 PHP mail 또는 SMTP 연동(가정: SMTP 제공자 확정 필요).
전체 IA와 화면 흐름
- 사용자 화면: 랜딩(서비스 소개·가입 유도) → 회원가입/로그인 → 대시보드(프로젝트 보드) → 프로젝트 상세(견적서 작성/발송 → 승인 상태 → 계약서 생성 → 입금 요청/확인) → 구독 관리 → 공지·FAQ.
- 클라이언트 화면(비회원): 승인 링크 열람(견적서 확인) → 전자서명 → 완료 화면 → 입금 계좌 안내 확인.
- 관리자 화면: 로그인 → 회원 관리(목록·상세·탈퇴 처리) → 구독·결제 내역 관리 → 공지·FAQ 관리(등록·수정·삭제) → 서비스 통계(가입 수, 견적 발송 수 등).
- 흐름 규칙: 견적서 미승인 상태에서는 계약서 생성 버튼 비활성, 입금 요청은 계약서 생성 후 활성화(파이프라인 순서 강제).
데이터 모델
- users: id, email, password_hash, name, tier(free/paid), created_at, deleted_at.
- projects: id, user_id, title, client_name, stage(quote/approved/contract/deposit/done), created_at.
- quotes: id, project_id, token(승인 링크용), status(draft/sent/viewed/signed), total, vat, viewed_at, signed_at, signer_name, signature_data.
- quote_items: id, quote_id, name, qty, unit_price, amount.
- contracts: id, project_id, quote_id, content, created_at.
- deposits: id, project_id, bank_info, requested_at, due_date, confirmed_at, reminder_sent_at.
- subscriptions / notices / faqs: 구독 상태·결제 내역, 공지·FAQ 본문 관리용 테이블.
API와 외부 연동
- 내부 처리 방식: PHP 페이지 기반 POST 처리(프레임워크 없이), 주요 액션 — 회원 가입/로그인/탈퇴, 프로젝트 CRUD, 견적서 저장·발송, 서명 제출(토큰 검증), 계약서 생성, 입금 요청·확인, 미입금 알림 발송, 구독 변경, 공지·FAQ 관리.
- 모든 DB 접근은 mysqli prepared statement로 처리, 승인 링크 토큰은 추측 불가능한 난수로 검증.
- 외부 연동: 이메일 발송 SMTP(승인 링크·입금 요청·미입금 알림 발송용) — 가정: 제공자 확정 필요. 결제 대행 연동은 이번 출시 제외(구독 결제 처리 방식 확정 필요).
UI·UX 요구사항
- 대시보드 보드형 UI: 프로젝트별 현재 단계가 색상·라벨로 즉시 식별 가능해야 한다.
- 모바일에서 클라이언트 승인 링크 페이지가 가독성 있게 표시된다(반응형).
- 견적서 작성 시 항목 추가·삭제와 합계가 실시간 갱신된다.
- 파이프라인 순서(견적 → 승인 → 계약 → 입금)가 화면에서 시각적으로 안내되고, 다음 단계로 넘어가는 버튼이 상태에 따라 활성/비활성된다.
- 주요 알림(승인 완료, 미입금)은 대시보드 배지와 이메일로 이중 전달된다.
보안과 개인정보
- 비밀번호는 password_hash로 저장, 세션 기반 인증, 관리자 화면은 별도 권한 확인.
- 승인 링크 토큰은 충분히 긴 난수 사용, 서명 데이터는 위변조 방지를 위해 서명 시각·IP 기록(가정: 법적 전자서명 효력 범위 검토 확정 필요).
- 회원가입 시 개인정보 수집·이용 동의 필수, 마케팅 수신은 선택 동의 + 수신거부 방법 제공, 개인정보 보관·파기 방침 고지.
- 모든 입력값 서버 측 검증 + prepared statement로 SQL 인젝션 차단, XSS 방지 출력 이스케이프.
비기능 요구사항
- 가용성: 카페24 호스팅 환경에서 정기 백업(DB 덤프) 주기 운영(가정: 주기 확정 필요).
- 성능: 견적서·보드 화면 로딩이 일반 웹호스팅 환경에서 체감 지연 없이 동작하는 수준 유지.
- 이메일 알림은 발송 실패 시 재시도 또는 실패 기록.
- 브라우저: 최신 Chrome, Safari, 모바일 브라우저 지원.
구현 계획
- 1단계: 기반 구축 — 회원가입·로그인, DB 스키마, 공통 레이아웃, 관리자 로그인.
- 2단계: 핵심 파이프라인 — 프로젝트 보드, 견적서 작성·템플릿, 승인 링크·전자서명.
- 3단계: 계약·입금 — 계약서 생성, 입금 요청·계좌 안내, 입금 확인 체크, 미입금 알림.
- 4단계: 운영 준비 — 구독 티어, 관리자 화면(회원·구독·공지·FAQ 관리), 랜딩 페이지, 베타 유저 온보딩(가정: 베타 모집 채널 확정 필요).
수용 기준과 QA
- 프리랜서가 회원가입 후 프로젝트 생성 → 견적서 작성(부가세 자동 계산 검증) → 승인 링크 발송까지 10분 이내 완료 가능.
- 비회원 클라이언트가 링크에서 로그인 없이 견적서를 열람하고 서명하면 프리랜서 보드에 '승인 완료'가 즉시 반영된다.
- 입금 요청 후 기한 경과 시 미입금 알림 이메일이 발송되고, 입금 확인 체크 시 상태가 '입금 완료'로 갱신된다.
- 무료 티어 제한(프로젝트 수 등) 초과 시 유료 안내가 표시된다(가정: 제한 수치 확정 필요).
- QA 항목: prepared statement 적용 전수 점검, 승인 링크 토큰 추측 불가 검증, 모바일 승인 페이지 반응형 테스트, 이메일 발송 실패 시나리오 테스트.
배포와 운영
- 카페24 VPS(또는 웹호스팅)에 Apache + PHP 8 + MySQL 환경 배포, 도메인 연결(가정: 도메인 확정 필요 — 서비스명 Quotto 상표·도메인 검색 별도 진행).
- 배포 절차: 로컬 검증 → FTP/SFTP 또는 Git 기반 업로드 → DB 마이그레이션 스크립트 실행 → 스모크 테스트.
- 운영: DB 정기 백업, 에러 로그 확인, 회원·구독·알림 발송 현황 주간 점검, 공지·FAQ 운영자 직접 관리.
- 베타 운영: 소수 베타 유저 대상 피드백 수집 후 핵심 지표(견적 발송 건수, 승인 전환율, 미입금 알림 후 입금 소요 일수, 주간 활성 비율)를 측정해 확장 여부 판단.