Skip to main content
SpecZip LogoSpecZip
Document Signer — Self-Hosted Contract Signer

Document Signer — Self-Hosted Contract Signer

Self-hosted, privacy-first document signing. Sign, send, and manage contracts with a full audit trail — all on your own infrastructure.

SAby SpecZip Admin
Free seed library
v1.1.1
2 downloads0 views
File Integrity
sha256:08e8801a…· 106.7 KB

Requirements

API KeyPurposeFree Tier
SendGridSMTP Delivery** — Bring your own SMTP server (SendGrid, Mailgun, Postmark, or self-hosted).✓
PostmarkSMTP Delivery** — Bring your own SMTP server (SendGrid, Mailgun, Postmark, or self-hosted).✓
TwilioSMS OTP Verification** — Optional Twilio-based phone verification.✓
MailgunSMTP Delivery** — Bring your own SMTP server (SendGrid, Mailgun, Postmark, or self-hosted).✓
AWS S3Documents are stored in object storage (S3-compatible) with a unique key✓

External Services

  • PostgreSQLself-hostable
  • MySQLself-hostable
  • SQLiteself-hostable
  • MongoDBself-hostable
  • Redisself-hostable
  • Dockerself-hostable
  • MinIOself-hostable

Platform Notes

  • •Requires Docker and Docker Compose

Data Model

users

Application users — admins and members who create and manage envelopes.

idUUID
emailTEXT
nameTEXT
password_hashTEXT
roleTEXT
avatar_urlTEXT
email_verifiedBOOLEAN
sso_providerTEXT
sso_idTEXT
created_atTIMESTAMPTZ
updated_atTIMESTAMPTZ

envelopes

Document signing envelopes — the core entity that groups documents, recipients, and fields for a signing workflow.

idUUID
user_idUUID
template_idUUID
titleTEXT
messageTEXT
statusTEXT
routing_orderTEXT
expires_atTIMESTAMPTZ
reminder_interval_daysINTEGER
completed_atTIMESTAMPTZ
created_atTIMESTAMPTZ
updated_atTIMESTAMPTZ

documents

Documents attached to an envelope. Each document is a PDF (converted on upload) stored in S3-compatible storage.

idUUID
envelope_idUUID
original_filenameTEXT
storage_keyTEXT
file_size_bytesBIGINT
page_countINTEGER
sha256_hashTEXT
mime_typeTEXT
file_typeTEXT
created_atTIMESTAMPTZ

recipients

Signing recipients for an envelope. Each recipient has a signing order and authentication settings.

idUUID
envelope_idUUID
emailTEXT
nameTEXT
roleTEXT
routing_orderINTEGER
statusTEXT
auth_methodTEXT
auth_valueTEXT
signed_atTIMESTAMPTZ
delivered_atTIMESTAMPTZ
declined_reasonTEXT
embedded_tokenTEXT
created_atTIMESTAMPTZ
updated_atTIMESTAMPTZ

fields

Signature and data fields placed on document pages for recipients to fill.

idUUID
document_idUUID
recipient_idUUID
typeTEXT
page_numberINTEGER
xREAL
yREAL
widthREAL
heightREAL
labelTEXT
requiredBOOLEAN
readonlyBOOLEAN
formulaTEXT
optionsJSONB
conditional_jsonJSONB
valueJSONB
font_sizeINTEGER
validationTEXT
created_atTIMESTAMPTZ
updated_atTIMESTAMPTZ

audit_events

Immutable audit log of every action in the envelope lifecycle. Used for Certificate of Completion generation.

idBIGSERIAL
envelope_idUUID
recipient_idUUID
actionTEXT
ip_addressINET
user_agentTEXT
locationJSONB
detailsJSONB
document_sha256TEXT
timestampTIMESTAMPTZ

templates

Reusable document templates with pre-placed fields. Templates can be cloned into new envelopes.

idUUID
user_idUUID
nameTEXT
descriptionTEXT
document_storage_keyTEXT
page_countINTEGER
placeholder_recipientsJSONB
placeholder_fieldsJSONB
created_atTIMESTAMPTZ
updated_atTIMESTAMPTZ

webhooks

Webhook endpoints that receive real-time envelope event notifications.

idUUID
user_idUUID
urlTEXT
secretTEXT
eventsJSONB
enabledBOOLEAN
last_sent_atTIMESTAMPTZ
created_atTIMESTAMPTZ
updated_atTIMESTAMPTZ

api_keys

API keys for programmatic envelope access via the REST API.

idUUID
user_idUUID
nameTEXT
key_hashTEXT
key_prefixTEXT
scopesJSONB
last_used_atTIMESTAMPTZ
expires_atTIMESTAMPTZ
enabledBOOLEAN
created_atTIMESTAMPTZ

settings

Application-wide configuration including SMTP settings, branding, and feature flags.

keyTEXT
valueJSONB
updated_atTIMESTAMPTZ
Replace DocuSign, HelloSign, and PandaDoc with a self-hosted, one-time purchase alternative. Built with Next.js and PostgreSQL for enterprise-grade document signing without recurring subscription fees. Features: document upload (PDF/DOCX/image) with auto-conversion, 12 field types (signature, initials, date, text, checkbox, radio, dropdown, file attachment, formula, company, title, email), HTML5 Canvas signature pad (draw, type, upload), sequential and parallel signing routing, email delivery via SMTP, full envelope lifecycle (draft → sent → delivered → signed → completed/declined/expired/voided), audit trail with Certificate of Completion (SHA-256 hashed event log), REST API for envelope CRUD, webhooks for real-time event notifications, reusable templates with WYSIWYG field placement, automatic reminders and expiration, white-label branding, SSO/SAML authentication, and embedded signing widget.

External Dependencies

  • 🔴
    smtp server
    serviceRequired

    Email delivery for signing invitations, reminders, and notifications. Any SMTP provider works: SendGrid, Mailgun, Postmark, or self-hosted.

  • 🔴
    docker
    infrastructureRequired

    Containerized deployment via Docker Compose with PostgreSQL, Redis, and MinIO services.

  • 🔴
    postgresql
    infrastructureRequired

    Primary database for envelopes, recipients, documents, fields, audit events, templates, and user data.

  • 🔴
    redis
    infrastructureRequired

    Job queue backend for BullMQ — handles email delivery, reminders, expiration, and document processing jobs.

  • 🔴
    s3-compatible storage
    infrastructureRequired

    Document file storage. MinIO is the default (self-hosted), but any S3-compatible provider works.

  • 🟡
    twilio (optional)
    serviceOptional

    SMS OTP verification for signer authentication. Optional — email-only mode works without it.

Tags

No tags

Details

Category
developer-tools
Difficulty
high
Version
1.1.1
Published
6/16/2026

Related Blueprints

Coming soon...