Signify

A secure digital document signing platform for uploading PDFs, placing signature fields, and sending them to recipients for approval. It streamlines the full signing lifecycle with email invitations, recipient verification, activity tracking, and final PDF export.

Core Objectives

Streamline Document Preparation
Enable users to upload PDFs, place signature fields visually, and manage document layout in a browser-based editor.
Secure Recipient Signing
Provide controlled signing access through JWT auth, publish links, recipient tokens, and email-based verification so only intended signers can complete a document.
Close the Loop with Auditability
Track document status, recipient progress, and activity history while generating a finalized signed PDF that preserves the full workflow outcome.

Authentication & Signature Setup

Login and Authentication Signature Setup

Email/Password Login

Users can register and log in through secure backend authentication backed by hashed passwords and JWT sessions.

Google OAuth Login

The app supports Google sign-in for faster onboarding and account creation.

Signature Onboarding

First-time users are prompted to create a reusable signature profile before entering the app.

Premade or Drawn Signatures

Users can either generate a name-based signature or draw one manually and save it to their profile.

Dashboard & Document Preparation

Document Preparation Dashboard

Overview Metrics

The dashboard shows document counts, signature counts, shared documents, and completion rate pulled from backend overview endpoints.

Recent Document Management

Users can review recent files, inspect status, and jump back into editing or signing workflows.

Document Upload

PDFs are uploaded from the browser, converted to base64, and stored with file metadata for later editing and export.

Field Placement Editor

The document viewer supports drag, drop, move, and resize interactions for placing signature fields directly on the PDF.

Recipient Assignment

Users can assign recipient fields and save the field layout to the backend for persistent signing workflows.

Publishing, Recipient Access, and Signing

Publish Workflow Recipient Signing

Publish Workflow

Documents can be published to selected recipients with an expiration window and unique publish link.

Invitation Emails

The backend sends signing invitations with a direct link to each recipient using Nodemailer.

Public Recipient Access

Recipients can open a published document without a normal login and verify access through their invited email.

Signature Capture

Each recipient signs only the fields assigned to them, with the UI showing remaining fields and progress.

Final Completion

Once all recipients sign, the backend marks the document completed and supports export of the finalized PDF.

Architecture & Processing Flow

Sequential Processing Flow
User Auth Load Dashboard Upload & Annotate Save to MongoDB Publish & Email Sign & Export

1. User registers or logs in with email/password or Google OAuth and receives a JWT session.
2. The dashboard loads overview stats, recent documents, and activity using authenticated API requests.
3. A PDF is uploaded, rendered in the browser, and annotated with draggable signature or text fields.
4. The field layout is saved to MongoDB along with recipient assignments and document metadata.
5. Publishing generates a unique publish link, creates recipient tokens, stores expiry data, and sends invitation emails.
6. Recipients verify access, capture signatures, submit them to the backend, and the system marks the document completed and exports the signed PDF.

The backend is organized around a few purpose-built MongoDB collections instead of one oversized document record. Document, DocumentRecipients, DocumentTool, Signature, and Activity separate file storage, signer state, field layout, reusable signatures, and audit history, which keeps the workflow flexible and easier to query. There is also a legacy DocumentTools model for backward compatibility, showing the app was evolved carefully rather than rewritten from scratch.

A particularly strong architectural choice is the dual-path signing model. Authenticated users sign through JWT-protected routes, while published documents support public access through a publishLink plus recipient-specific verification, which matches real-world signing flows. The PDF rendering pipeline also does real work on coordinates and file formats: the frontend stores layout positions in browser coordinates, the backend converts them into PDF coordinates with pdf-lib, and signature images are embedded directly into the final document output.

Project Impact

Signify streamlines the document signing lifecycle by replacing fragmented email-and-print workflows with a structured, browser-based platform. From upload to final export, every step of the process is managed in one place, making it faster for document owners to prepare, distribute, and collect signed agreements.

For recipients, the dual-path signing model removes onboarding friction entirely. Authenticated users sign through their dashboard, while external recipients access documents via unique publish links and email verification, mirroring real-world signing flows where not every signer has an account.

Ultimately, Signify closes the loop between preparation and completion. Activity tracking, recipient progress visibility, and finalized PDF export ensure that document owners always know where a signing stands and can retrieve a fully assembled output the moment all parties have signed.