Dashboard
Welcome back
Total Clients
0
👥
Active Clients
0
✅
Pending Clients
0
⏳
AML Pending
0
🛡️
AML Approved
0
✅
Docs Awaiting Sig
0
✍️
Signed
0
🔏
Messages Pending
0
💬
Documents Sent
0
📤
Questionnaires In
0
📋
Recent Clients
Recent Activity
Clients
Loading…
| Code | Client | Type | Services | Status | Actions | |
|---|---|---|---|---|---|---|
| Loading clients… | ||||||
All Documents
Loading…
| Code | Client | Document Type | Generated | Sent | Status | Actions |
|---|---|---|---|---|---|---|
| Loading documents… | ||||||
Generate Document
Select a client and document type
1. Select Client
Digital Signatures
Track document signing status
Awaiting Signature
Completed
All
| Code | Client | Document | Sent | Signed | Signer | Status | Actions |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
Settings
Company details and configuration
Company Details
Firm Information
Contact
Address
Signing Portal
The signing portal URL is the web address where clients open their signing link. This is your GitHub Pages URL for this file.
Example signing link: [portal-url]?sign=TOKEN
Email — Resend.com
Configure Resend to send emails directly from this portal. A Cloudflare Worker proxy is required — see setup instructions below.
📋 Cloudflare Worker setup instructions
- Go to workers.cloudflare.com → sign up free → Create a Worker
- Paste the proxy code (ask Claude for it if needed) → Deploy
- Go to Worker Settings → Variables → Add secret:
RESEND_API_KEY= your Resend key - Copy the Worker URL (e.g.
https://resend-proxy.yourname.workers.dev) and paste above - Save Settings and click the test button below
Firestore Setup
Add these rules in Firebase Console → Firestore → Rules:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId}/{document=**} {
allow read, write: if request.auth != null
&& request.auth.uid == userId;
}
match /publicSigning/{token} {
allow read: if true;
allow create: if request.auth != null;
allow update: if resource.data.status == 'pending';
}
match /publicQuestionnaire/{token} {
allow read: if true;
allow create: if request.auth != null;
allow update: if resource.data.status == 'pending';
}
}
}