노션으로 작성한 견적서를 전용 링크로 확인하고 PDF로 저장합니다.
Translation pending
BusinessGitHub @yujiseonOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗노션에 작성한 견적서를 클라이언트가 전용 링크로 웹에서 확인하고 PDF로 저장할 수 있는 견적서 웹 뷰어(MVP)입니다.
/quote/[token] 링크로 노션 DB의 견적서와 품목을 서버에서 조회 (비로그인)window.print() + @media print)자세한 내용은 docs/PRD.md를 참고하세요.
Next.js 15.5.3 (App Router, Turbopack) · React 19 · TypeScript 5 · TailwindCSS v4 · shadcn/ui · Zod 4 · Notion API (@notionhq/client v5)
npm install
cp .env.example .env.local # 노션 키 입력
npm run dev # http://localhost:3000
| 환경변수 | 설명 |
|---|---|
NOTION_API_KEY | 노션 Integration Token (읽기 권한) |
NOTION_QUOTES_DATA_SOURCE_ID | 견적서 DB data source ID |
NOTION_ITEMS_DATA_SOURCE_ID | 견적 품목 DB data source ID |
상세 구조와 오류 처리는 docs/guides/notion-api-database.md를 참고하세요.
NOTION_API_KEY에 저장항목과 품목의 Invoices는 양방향 relation토큰 속성은 text(rich_text) 타입 유지 (select 등으로 바꾸면 오류)토큰은 32자 무작위 문자열(허용 문자 A-Za-z0-9_-, 16~128자)이며 견적서마다 달라야 합니다. 대소문자를 구분합니다.
# PowerShell
[Convert]::ToBase64String((1..24 | ForEach-Object { Get-Random -Maximum 256 } | ForEach-Object { [byte]$_ })).Replace('+','-').Replace('/','_')
# Node.js
node -e "console.log(require('crypto').randomBytes(24).toString('base64url'))"
토큰에 붙여 넣고, 링크는 https://<배포 도메인>/quote/<토큰> 입니다토큰 값을 새 값으로 덮어쓰면 이전 링크는 즉시 404, 새 링크는 정상 표시됩니다브라우저 인쇄 대화상자의 "머리글 및 바닥글" 옵션이 켜져 있으면 PDF에 URL(토큰 포함)이 찍힙니다. PDF를 타인에게 전달하기 전에 이 옵션을 끄세요.
총 금액은 직접 입력하는 값이며 품목 합과 달라도 총 금액을 표시합니다(서버 로그에 경고)TEMP- 견적서를 만들었다가 삭제합니다npm run dev # 개발 서버
npm run build # 프로덕션 빌드
npm run check-all # typecheck + lint + format:check