Hydrogen
당신과 코딩 에이전트를 위한 상거래 기본 요소. 기존 프레임워크에 장바구니·상품·결제·계정을 추가합니다
몇 분 안에 임대계약·구매계약·채무증서·위임장 등 계약서를 만들고 전체를 무료로 확인 후 문서당 한 번만 결제, 구독 없음
Lag husleiekontrakt, kjøpekontrakt, gjeldsbrev, fullmakt og andre avtaler på få minutter. Se hele dokumentet gratis, betal én gang per dokument. Ingen abonnement.
커머스TypeScript · CSSGitHub @quara0n온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Rettfram: legal documents at one honest price
A guided document builder for simple legal documents. Visitors answer one short question
at a time, watch the document write itself in a live preview, and pay once per document only
when they download the PDF. No subscription, no account.
The brand is Rettfram (rettframavtaler.no). NEXT_PUBLIC_SITE_NAME overrides it, for example for a US deployment.
One deployment sells to one market, chosen with NEXT_PUBLIC_MARKET at build time:README 전문 보기 ↗A guided document builder for simple legal documents. Visitors answer one short question at a time, watch the document write itself in a live preview, and pay once per document only when they download the PDF. No subscription, no account.
The brand is Rettfram (rettframavtaler.no). NEXT_PUBLIC_SITE_NAME overrides it, for example for a US deployment.
One deployment sells to one market, chosen with NEXT_PUBLIC_MARKET at build time:
no (default): Norwegian site, prices in NOK, A4 PDFs, Norwegian terms with angrerett.
Templates in src/content/nb-NO/: husleiekontrakt, fremleiekontrakt, kjøpekontrakt,
gjeldsbrev, fullmakt, oppdragsavtale and taushetserklæring.us: English site, prices in USD, US Letter PDFs. Templates in src/content/en-US/: NDA,
residential lease, bill of sale, service agreement, power of attorney, promissory note,
sublease and roommate agreement.Interface text lives in src/i18n/ (en.tsx, nb.tsx); the legal pages have a version per
market (src/app/terms/no.tsx and us.tsx, and so on). The other market's templates stay in the
code and in the tests, but are not published.
npm install
cp .env.example .env.local # optional: add a Stripe test key
npm run dev # http://localhost:3000
Without STRIPE_SECRET_KEY the app runs in demo mode: the pay button skips checkout and
goes straight to the download page, so every flow can be tried locally.
legal-docs GitHub repository, and keep the default
Next.js settings..env.example (at least NEXT_PUBLIC_SITE_URL,
NEXT_PUBLIC_SUPPORT_EMAIL, NEXT_PUBLIC_COMPANY_NAME, NEXT_PUBLIC_COMPANY_ADDRESS and
STRIPE_SECRET_KEY).NEXT_PUBLIC_SITE_URL to match.Every push to main redeploys automatically.
npm run lint && npm run typecheck # static checks
npm test # unit tests: every template, PDF output, payment checks
npm run build && npm run test:e2e # browser tests (desktop + mobile) against the production build
The template tests answer every question with every option and fail if any blank is left
in the document, if a template refers to a field that doesn't exist, or if the PDF breaks.
CI runs all of this on every push (.github/workflows/ci.yml).
Set NEXT_PUBLIC_PLAUSIBLE_DOMAIN to turn on cookie-free Plausible analytics. The app sends
these events (never any document answers): Document started, Step completed, Checkout
started, Purchase completed, PDF downloaded. Add them as goals in Plausible to get a funnel.
.env.local as STRIPE_SECRET_KEY.4242 4242 4242 4242, any future date, any CVC.NEXT_PUBLIC_SITE_URL.Checkout is a one-time Stripe Checkout session built from the template's price (no Stripe products to set up). The download API re-checks the session with Stripe (paid, right document, within the 30-day free-edit window) before it generates a PDF.
| Path | What it is |
|---|---|
src/content/en-US/*.ts | The templates: questions (steps and fields), SEO copy, and a render() that turns answers into document blocks |
src/content/index.ts | Template registry per locale (currency, regions, templates) |
src/lib/doc.ts | Shared types and helpers. Answers are wrapped in tokens so the preview can highlight them |
src/lib/pdf.ts | Renders the same blocks to a US Letter PDF with pdf-lib (page numbers, signature lines, notary block) |
src/components/Wizard.tsx | The one-question-at-a-time editor with live preview, autosave, review and checkout |
src/app/api/checkout | Creates the Stripe Checkout session (or a demo session) |
src/app/api/download | Verifies the purchase and returns the PDF |
src/app/documents/[slug] | SEO landing page per template, with FAQ and Product structured data |
Answers live only in the visitor's browser (localStorage). They are sent to the server once, at download, to build the PDF, and are not stored.
Copy one of the files in src/content/en-US/, change the steps and render(), and add it to
src/content/index.ts. Field types: text, textarea, date, choice (cards), select, multi
(checkboxes), money, number, region, email. Steps and fields can be conditional with showIf.
To preview every template as a PDF with sample answers: npx tsx scripts/sample-pdfs.ts
(writes to ./out).
Create src/content/nb-NO/ with its own templates (for example a husleiekontrakt), register
the locale in src/content/index.ts with currency: "nok" and the list of fylker as
regions. The page routes currently serve the default locale; add a [locale] segment or a
separate domain when the second locale is ready.
See LAUNCH.md.