diff --git a/.env.example b/.env.example
index 4919f0053..c47995207 100644
--- a/.env.example
+++ b/.env.example
@@ -103,6 +103,12 @@ NEXT_PRIVATE_STRIPE_WEBHOOK_SECRET=
NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_MONTHLY_PRICE_ID=
NEXT_PUBLIC_STRIPE_ENTERPRISE_PLAN_MONTHLY_PRICE_ID=
+# [[BACKGROUND JOBS]]
+NEXT_PRIVATE_JOBS_PROVIDER="local"
+NEXT_PRIVATE_TRIGGER_API_KEY=
+NEXT_PRIVATE_TRIGGER_API_URL=
+NEXT_PRIVATE_INNGEST_EVENT_KEY=
+
# [[FEATURES]]
# OPTIONAL: Leave blank to disable PostHog and feature flags.
NEXT_PUBLIC_POSTHOG_KEY=""
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 8113ada52..d6a275a59 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -4,6 +4,7 @@ module.exports = {
extends: ['@documenso/eslint-config'],
rules: {
'@next/next/no-img-element': 'off',
+ 'no-unreachable': 'error',
},
settings: {
next: {
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 1fc8321db..f5542fbb5 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -5,11 +5,19 @@
"editor.codeActionsOnSave": {
"source.fixAll": "explicit"
},
- "eslint.validate": ["typescript", "typescriptreact", "javascript", "javascriptreact"],
+ "eslint.validate": [
+ "typescript",
+ "typescriptreact",
+ "javascript",
+ "javascriptreact"
+ ],
"javascript.preferences.importModuleSpecifier": "non-relative",
"javascript.preferences.useAliasesForRenames": false,
"typescript.enablePromptUseWorkspaceTsdk": true,
"files.eol": "\n",
"editor.tabSize": 2,
- "editor.insertSpaces": true
-}
+ "editor.insertSpaces": true,
+ "[prisma]": {
+ "editor.defaultFormatter": "Prisma.prisma"
+ },
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index d6a5053f4..16738923c 100644
--- a/README.md
+++ b/README.md
@@ -73,10 +73,22 @@ Contact us if you are interested in our Enterprise plan for large organizations
## Tech Stack
+
Active Subscriptions.
+Customers with an Active Subscriptions.
+ Our Enterprise License is great large organizations looking to switch to Documenso for all + their signing needs. It's availible for our cloud offering as well as self-hosted setups and + offer a wide range of compliance and Adminstration Features. +
+ +Free Plan
+Free
$0
@@ -102,10 +102,10 @@ export const PricingTable = ({ className, ...props }: PricingTableProps) => {
Early Adopters
+Individual
- For fast-growing companies that aim to scale across multiple teams. + Everything you need for a great signing experience.
- - Limited Time Offer: Read More - -
-Unlimited Teams
-Unlimited Users
-Unlimited Documents per month
-Includes all upcoming features
-Email, Discord and Slack assistance
+Unlimited Documents per Month
+API Accesss
+Email and Discord Support
+Premium Profile Name
Enterprise
-Pricing on request
+Teams
+- For large organizations that need extra flexibility and control. + For companies looking to scale across multiple teams.
- event('enterprise-contact')} - > - - +Everything in Early Adopters, plus:
-Custom Subdomain
-Compliance Check
-Guaranteed Uptime
-Reporting & Analysis
-24/7 Support
+Unlimited Documents per Month
+API Accesss
+Email and Discord Support
+Team Inbox
+5 Users Included
++ Add More Users for {period === 'MONTHLY' ? '$10/ mo.' : '$96/ yr.'} +
{label}
++ {`${tooltip} : `} + {payload[0].value} +
++ Profile is currently visible. +
+ +Toggle the switch to hide your profile from the public.
+ > + ) : ( + <> ++ Profile is currently hidden. +
+ +Toggle the switch to show your profile to the public.
+ > + )} +{template.publicTitle}
+{template.publicDescription}
+404 Profile not found
+ ++ The profile you are looking for could not be found. +
+ ++ {BADGE_DATA[publicProfile.badge.type].name} +
++ Since {DateTime.fromJSDate(publicProfile.badge.since).toFormat('LLL ‘yy')} +
++ {line} +
+ ))} ++ It looks like {publicProfile.name} hasn't added any documents to their profile yet.{' '} + {!user?.id && ( + + While waiting for them to do so you can create your own Documenso account and get + started with document signing right away. + + )} + {'userId' in profile && user?.id === profile.userId && ( + + Go to your{' '} + + public profile settings + {' '} + to add documents. + + )} +
++ Want your own public profile? + + Like to have your own public profile with agreements? + +
+ +- - {field.Recipient.name - ? `${field.Recipient.name} (${field.Recipient.email})` - : field.Recipient.email}{' '} - - inserted a {FRIENDLY_FIELD_TYPE[field.type].toLowerCase()} +
+ {field.Recipient.signingStatus === SigningStatus.SIGNED ? 'Signed' : 'Pending'}{' '} + {FRIENDLY_FIELD_TYPE[field.type].toLowerCase()} field
-- {field.Signature?.typedSignature} -
- ), - ) - .with( - { type: P.union(FieldType.NAME, FieldType.TEXT, FieldType.EMAIL) }, - () => field.customText, - ) - .with({ type: FieldType.DATE }, () => - convertToLocalSystemFormat( - field.customText, - documentMeta?.dateFormat ?? DEFAULT_DOCUMENT_DATE_FORMAT, - documentMeta?.timezone ?? DEFAULT_DOCUMENT_TIME_ZONE, - ), - ) - .with({ type: FieldType.FREE_SIGNATURE }, () => null) - .exhaustive()} + {field.Recipient.signingStatus === SigningStatus.SIGNED && + match(field) + .with({ type: FieldType.SIGNATURE }, (field) => + field.Signature?.signatureImageAsBase64 ? ( ++ {field.Signature?.typedSignature} +
+ ), + ) + .with( + { type: P.union(FieldType.NAME, FieldType.TEXT, FieldType.EMAIL) }, + () => field.customText, + ) + .with({ type: FieldType.DATE }, () => + convertToLocalSystemFormat( + field.customText, + documentMeta?.dateFormat ?? DEFAULT_DOCUMENT_DATE_FORMAT, + documentMeta?.timezone ?? DEFAULT_DOCUMENT_TIME_ZONE, + ), + ) + .with({ type: FieldType.FREE_SIGNATURE }, () => null) + .exhaustive()} + + {field.Recipient.signingStatus === SigningStatus.NOT_SIGNED && ( ++ {FRIENDLY_FIELD_TYPE[field.type]} +
+ )}