mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-30 14:58:08 +00:00
93 lines
5.8 KiB
TypeScript
93 lines
5.8 KiB
TypeScript
'use client'
|
|
|
|
import { Book, Building2, Code, ExternalLink, Eye, FileText, Fingerprint, Globe, Layers, Mail, PenLine, Shield, Users, Webhook } from "lucide-react"
|
|
import { Github } from "@/components/brand"
|
|
import Pricing from "@/components/sign/Pricing"
|
|
import { Cards } from "@/components/product/ProductLanding"
|
|
import { Text } from "@hanzo/ui"
|
|
import { Aside, LINK } from "@/components/products/Aside"
|
|
import { Lede } from "@/components/products/Lede"
|
|
import { ProductFooter } from "@/components/products/ProductFooter"
|
|
import { Start } from "@/components/products/Start"
|
|
|
|
const DOCS = "https://docs.hanzo.ai/docs/projects/hanzoai/esign"
|
|
const REPO = "https://github.com/hanzoai/esign"
|
|
|
|
export default function SignClient() {
|
|
return (
|
|
<>
|
|
<Lede
|
|
badge="Document signing"
|
|
badgeIcon={PenLine}
|
|
title="Hanzo Sign"
|
|
actions={[
|
|
{ label: 'Try Hanzo', href: '/login', icon: ExternalLink },
|
|
{ label: 'Documentation', href: DOCS },
|
|
]}
|
|
>
|
|
Upload a PDF, drop the fields where people need to sign, and send it. Each signer gets a link, signs in
|
|
their browser, and the finished document comes back with a record of who signed it, when, and from
|
|
where. Nobody installs anything and nobody prints anything.
|
|
</Lede>
|
|
|
|
<Cards
|
|
grid={{
|
|
title: 'What is in it',
|
|
sub: 'The parts of signing that are actually work: placing the fields, chasing the signers, and proving afterwards that it happened.',
|
|
items: [
|
|
{ icon: PenLine, title: 'Signatures', body: 'Fields for a signature, initials, a date, a name, a checkbox or free text, placed where you want them on the page. The completed document carries a certificate recording each signer, the time, and the address they signed from.' },
|
|
{ icon: FileText, title: 'Templates', body: 'The contract you send fifty times a month gets its fields placed once. After that, sending it is choosing a recipient.' },
|
|
{ icon: Users, title: 'Teams', body: 'Documents belong to a team rather than to whoever uploaded them, so a person leaving does not take the paperwork with them. Roles decide who can send, who can only see.' },
|
|
{ icon: Webhook, title: 'Webhooks and an API', body: 'Your system creates the document, adds the recipients and sends it. A webhook fires when somebody opens, signs or declines, so your side of the workflow moves without anybody watching an inbox.' },
|
|
{ icon: Shield, title: 'Security & Compliance', body: 'End-to-end encryption, a signed trail on every document, and data that stays in the region you choose.' },
|
|
{ icon: Layers, title: 'Your name on it', body: 'The signing page carries your logo and your colours on your own domain, so the person signing sees the company they are doing business with rather than the company we are.' },
|
|
{ icon: Mail, title: 'The chasing, done for you', body: 'The invitation, the reminder for the one person who has not got to it yet, and the copy of the finished document to everybody who signed.' },
|
|
{ icon: Fingerprint, title: 'Signing in', body: 'A passkey, or a password kept as a bcrypt digest. A document can also demand that a recipient authenticate before it will open, so the link alone is not enough to read it.' },
|
|
{ icon: Eye, title: 'Where it is right now', body: 'Sent, opened, signed, declined — per recipient, as it happens. You know which of five people is holding up a deal without asking any of them.' },
|
|
{ icon: Globe, title: 'Twelve languages', body: 'German, English, Spanish, French, Italian, Japanese, Korean, Dutch, Polish, Brazilian Portuguese, Albanian and Chinese. The signer reads the page in theirs, not yours.' },
|
|
],
|
|
}}
|
|
/>
|
|
|
|
<Pricing />
|
|
|
|
<Aside
|
|
title="Built on Open Source"
|
|
links={[
|
|
{ label: 'hanzoai/esign', href: REPO, icon: Github },
|
|
{ label: 'Upstream: documenso/documenso', href: 'https://github.com/documenso/documenso', icon: ExternalLink },
|
|
]}
|
|
>
|
|
Hanzo Sign is built on{' '}
|
|
<Text render="a" {...{ href: 'https://documenso.com', target: '_blank', rel: 'noopener noreferrer' }} color={LINK.color}>
|
|
Documenso
|
|
</Text>
|
|
, an open-source document signing platform, under the AGPL. The upstream project is named here and in the
|
|
licence, because naming what you forked is required and is a different act from branding yourself with
|
|
it. Run our build, or run your own — the whole thing is a TypeScript application over Postgres, and you
|
|
can read every line that touches a document before you trust it with one.
|
|
</Aside>
|
|
|
|
<Cards
|
|
grid={{
|
|
title: 'Send the first one',
|
|
sub: 'Upload a PDF and place a signature field. You will know inside five minutes whether this fits.',
|
|
items: [
|
|
{ icon: PenLine, title: 'Start signing', body: 'Open the hosted app and send a document', link: { label: 'Try Hanzo', href: '/login' } },
|
|
{ icon: Book, title: 'Documentation', body: 'Setup, self-hosting, and the API reference', link: { label: 'View Docs', href: DOCS } },
|
|
{ icon: Code, title: 'The source', body: 'Read it before you trust a contract to it', link: { label: 'View on GitHub', href: REPO } },
|
|
],
|
|
}}
|
|
/>
|
|
|
|
<Aside title="Something more specific" links={[{ label: 'Contact Sales', href: '/contact-sales', icon: Building2 }]}>
|
|
Signing inside your own product, a flow with approvals before the send, or running it on your
|
|
infrastructure. Tell us the shape and we will tell you whether it fits.
|
|
</Aside>
|
|
|
|
<Start title="Get started with Sign" docs={DOCS} repo={REPO} />
|
|
<ProductFooter slug="sign" name="Sign" />
|
|
</>
|
|
)
|
|
}
|