Contract Management
Business & SaaS · React + Node (Express) · 22 @molecule/* packages
DocuSign-like contract management with templates, signing, expiry, and alerts — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (15)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Dashboard
/dashboard(signed in) - Contracts
/contracts(signed in) - ContractDetail
/contracts/:id(signed in) - Templates
/templates(signed in) - Settings
/settings(signed in) - NewContract
/contracts/new(signed in) - TemplateEditor
/templates/:id(signed in) - Counterparties
/counterparties(signed in) - Reports
/reports(signed in) - Notifications
/notifications(signed in)
Data model (11 tables)
- activities — id, actorId, action, resourceType, resourceId, metadata, createdAt
- activity_seen_status — userId, lastSeenActivityId, updatedAt
- contract_templates — id, user_id, name, description, content, body_html, category, type, …
- contract_versions — id, contract_id, user_id, body_html, body_md, generated_from_template_id, generated_at, created_at, …
- contracts — id, user_id, number, title, description, template_id, counterparty_id, party_name, …
- counterparties — id, user_id, organization, contact_name, email, phone, address, notes, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- notifications — id, user_id, kind, title, body, contract_id, payload, link, …
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
- signature_events — id, contract_id, signature_id, user_id, kind, occurred_at, ip, user_agent, …
- signatures — id, contract_id, user_id, signer_name, signer_email, role, order, status, …
API (8 handlers)
- contracts
api/src/handlers/contracts.ts - counterparties
api/src/handlers/counterparties.ts - notifications
api/src/handlers/notifications.ts - profile
api/src/handlers/profile.ts - reports
api/src/handlers/reports.ts - sign-public
api/src/handlers/sign-public.ts - signatures
api/src/handlers/signatures.ts - templates
api/src/handlers/templates.ts
Subscription tiers
free / pro / team — gated by: maxContracts, maxSignatures, maxTemplates, advancedFeatures, canExport, retentionDays
Built from 22 @molecule/* packages
@molecule/api-audit-database@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-pdf-pdfkit@molecule/api-permissions-custom@molecule/api-reporting-database@molecule/api-resource-activity-feed@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/api-uploads-s3@molecule/app-billing-react@molecule/app-command-palette@molecule/app-data-table@molecule/app-date-range-picker@molecule/app-file-upload@molecule/app-notification-feed-react@molecule/app-sidebar-layout-react
Required secrets
DATABASE_URLPostgreSQL connection stringMEILISEARCH_API_KEYMeiliSearch API keyS3_BUCKETS3 bucket for contract filesMAILGUN_API_KEYMailgun API keyMAILGUN_DOMAINMailgun sending domainSTRIPE_SECRET_KEYStripe secret API key (sk_test_... in test mode)STRIPE_WEBHOOK_SECRETStripe webhook signing secret (whsec_...)
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing