diff --git a/.devcontainer/on-create.sh b/.devcontainer/on-create.sh
index a66491ef7..fbd5351f2 100755
--- a/.devcontainer/on-create.sh
+++ b/.devcontainer/on-create.sh
@@ -9,10 +9,5 @@ npm install
# Copy the env file
cp .env.example .env
-# Source the env file, export the variables
-set -a
-source .env
-set +a
-
# Run the migrations
-npm run -w @documenso/prisma prisma:migrate-dev
+npm run prisma:migrate-dev
diff --git a/.env.example b/.env.example
index afe9557da..b4c5b616f 100644
--- a/.env.example
+++ b/.env.example
@@ -6,7 +6,7 @@ NEXTAUTH_SECRET="secret"
NEXT_PRIVATE_GOOGLE_CLIENT_ID=""
NEXT_PRIVATE_GOOGLE_CLIENT_SECRET=""
-# [[APP]]
+# [[URLS]]
NEXT_PUBLIC_WEBAPP_URL="http://localhost:3000"
NEXT_PUBLIC_MARKETING_URL="http://localhost:3001"
@@ -50,7 +50,9 @@ NEXT_PRIVATE_SMTP_SECURE=
NEXT_PRIVATE_SMTP_FROM_NAME="No Reply @ Documenso"
# REQUIRED: Defines the email address to use as the from address.
NEXT_PRIVATE_SMTP_FROM_ADDRESS="noreply@documenso.com"
-# OPTIONAL: The API key to use for the MailChannels proxy endpoint.
+# OPTIONAL: The API key to use for Resend.com
+NEXT_PRIVATE_RESEND_API_KEY=
+# OPTIONAL: The API key to use for MailChannels.
NEXT_PRIVATE_MAILCHANNELS_API_KEY=
# OPTIONAL: The endpoint to use for the MailChannels API if using a proxy.
NEXT_PRIVATE_MAILCHANNELS_ENDPOINT=
diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
new file mode 100644
index 000000000..d12bdad59
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.md
@@ -0,0 +1,50 @@
+---
+name: Bug Report
+about: Create a bug report to help us improve
+---
+
+
+
+## Issue Description
+
+
+
+## Steps to Reproduce
+
+
+
+
+1. Step 1
+2. Step 2
+3. ...
+
+## Expected Behavior
+
+
+
+## Current Behavior
+
+
+
+## Screenshots (optional)
+
+
+
+## Environment
+
+
+
+- OS: [e.g., Windows 10]
+- Browser: [e.g., Chrome, Firefox]
+- Version: [e.g., 2.0.1]
+
+## Checklist
+
+
+
+
+- [ ] I have searched the existing issues to make sure this is not a duplicate.
+- [ ] I have provided steps to reproduce the issue.
+- [ ] I have included relevant environment information.
+- [ ] I have included any relevant screenshots.
+- [ ] I understand that this is a voluntary contribution and that there is no guarantee of resolution.
diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md
new file mode 100644
index 000000000..a850a7a9a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-request.md
@@ -0,0 +1,41 @@
+---
+name: Feature Request
+about: Suggest a new idea or enhancement for this project
+---
+
+
+
+## Feature Description
+
+
+
+
+## Use Case
+
+
+
+
+## Proposed Solution
+
+
+
+
+## Alternatives (optional)
+
+
+
+
+## Additional Context
+
+
+
+## Checklist
+
+
+
+
+- [ ] I have searched the existing feature requests to make sure this is not a duplicate.
+- [ ] I have provided a detailed description of the requested feature.
+- [ ] I have explained the use case or scenario for this feature.
+- [ ] I have included any relevant technical details or design suggestions.
+- [ ] I understand that this is a suggestion and that there is no guarantee of implementation.
diff --git a/.github/ISSUE_TEMPLATE/improvement.md b/.github/ISSUE_TEMPLATE/improvement.md
new file mode 100644
index 000000000..709d3441f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/improvement.md
@@ -0,0 +1,41 @@
+---
+name: General Improvement
+about: Suggest a minor enhancement or improvement for this project
+---
+
+
+
+## Improvement Description
+
+
+
+
+## Rationale
+
+
+
+
+## Proposed Solution
+
+
+
+
+## Alternatives (optional)
+
+
+
+
+## Additional Context
+
+
+
+## Checklist
+
+
+
+
+- [ ] I have searched the existing issues and improvement suggestions to avoid duplication.
+- [ ] I have provided a clear description of the improvement being suggested.
+- [ ] I have explained the rationale behind this improvement.
+- [ ] I have included any relevant technical details or design suggestions.
+- [ ] I understand that this is a suggestion and that there is no guarantee of implementation.
diff --git a/.github/PULL_REQUEST_TEMPLATE/generic.md b/.github/PULL_REQUEST_TEMPLATE/generic.md
new file mode 100644
index 000000000..70b668b5c
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/generic.md
@@ -0,0 +1,49 @@
+---
+name: Pull Request
+about: Submit changes to the project for review and inclusion
+---
+
+## Description
+
+
+
+
+## Related Issue
+
+
+
+
+## Changes Made
+
+
+
+
+- Change 1
+- Change 2
+- ...
+
+## Testing Performed
+
+
+
+
+- Tested feature X in scenario Y.
+- Ran unit tests for component Z.
+- Tested on browsers A, B, and C.
+- ...
+
+## Checklist
+
+
+
+
+- [ ] I have tested these changes locally and they work as expected.
+- [ ] I have added/updated tests that prove the effectiveness of these changes.
+- [ ] I have updated the documentation to reflect these changes, if applicable.
+- [ ] I have followed the project's coding style guidelines.
+- [ ] I have addressed the code review feedback from the previous submission, if applicable.
+
+## Additional Notes
+
+
+
diff --git a/.github/PULL_REQUEST_TEMPLATE/test-addition.md b/.github/PULL_REQUEST_TEMPLATE/test-addition.md
new file mode 100644
index 000000000..f93c81493
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/test-addition.md
@@ -0,0 +1,40 @@
+---
+name: Test Addition
+about: Submit a new test, either unit or end-to-end (E2E), for review and inclusion
+---
+
+## Description
+
+
+
+
+## Related Issue
+
+
+
+
+## Test Details
+
+
+
+
+- Test Name: Name of the test
+- Type: [Unit / E2E]
+- Description: Brief description of what the test checks
+- Inputs: What inputs the test uses (if applicable)
+- Expected Output: What output or behavior the test expects
+
+## Checklist
+
+
+
+
+- [ ] I have written the new test and ensured it works as intended.
+- [ ] I have added necessary documentation to explain the purpose of the test.
+- [ ] I have followed the project's testing guidelines and coding style.
+- [ ] I have addressed any review feedback from previous submissions, if applicable.
+
+## Additional Notes
+
+
+
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 9a564b058..1269fd6c5 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -9,7 +9,7 @@ updates:
labels:
- "ci dependencies"
- "ci"
- open-pull-requests-limit: 10
+ open-pull-requests-limit: 0
- package-ecosystem: "npm"
directory: "/apps/marketing"
@@ -19,7 +19,7 @@ updates:
labels:
- "npm dependencies"
- "frontend"
- open-pull-requests-limit: 10
+ open-pull-requests-limit: 0
- package-ecosystem: "npm"
directory: "/apps/web"
@@ -29,4 +29,4 @@ updates:
labels:
- "npm dependencies"
- "frontend"
- open-pull-requests-limit: 10
+ open-pull-requests-limit: 0
diff --git a/.gitpod.yml b/.gitpod.yml
new file mode 100644
index 000000000..b03003160
--- /dev/null
+++ b/.gitpod.yml
@@ -0,0 +1,55 @@
+tasks:
+ - init: |
+ npm i &&
+ npm run dx:up &&
+ cp .env.example .env &&
+ set -a; source .env &&
+ export NEXTAUTH_URL="$(gp url 3000)" &&
+ export NEXT_PUBLIC_WEBAPP_URL="$(gp url 3000)" &&
+ export NEXT_PUBLIC_MARKETING_URL="$(gp url 3001)"
+ command: npm run d
+
+ports:
+ - port: 3000
+ visibility: public
+ onOpen: open-preview
+ - port: 3001
+ visibility: public
+ onOpen: open-preview
+ - port: 9000
+ visibility: public
+ onOpen: ignore
+ - port: 1100
+ visibility: private
+ onOpen: ignore
+ - port: 2500
+ visibility: private
+ onOpen: ignore
+ - port: 54320
+ visibility: private
+ onOpen: ignore
+
+
+github:
+ prebuilds:
+ master: true
+ pullRequests: true
+ pullRequestsFromForks: true
+ addCheck: true
+ addComment: true
+ addBadge: true
+
+vscode:
+ extensions:
+ - aaron-bond.better-comments
+ - bradlc.vscode-tailwindcss
+ - dbaeumer.vscode-eslint
+ - esbenp.prettier-vscode
+ - mikestead.dotenv
+ - unifiedjs.vscode-mdx
+ - GitHub.copilot-chat
+ - GitHub.copilot-labs
+ - GitHub.copilot
+ - GitHub.vscode-pull-request-github
+ - Prisma.prisma
+ - VisualStudioExptTeam.vscodeintellicode
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..5cf6aad4e
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,126 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, caste, color, religion, or sexual
+identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+- Demonstrating empathy and kindness toward other people
+- Being respectful of differing opinions, viewpoints, and experiences
+- Giving and gracefully accepting constructive feedback
+- Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+- Focusing on what is best not just for us as individuals, but for the overall
+ community
+
+Examples of unacceptable behavior include:
+
+- The use of sexualized language or imagery, and sexual attention or advances of
+ any kind
+- Trolling, insulting or derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or email address,
+ without their explicit permission
+- Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+support@documenso.com.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series of
+actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or permanent
+ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within the
+community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.1, available at
+[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
+
+Community Impact Guidelines were inspired by
+[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
+
+For answers to common questions about this code of conduct, see the FAQ at
+[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
+[https://www.contributor-covenant.org/translations][translations].
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index eca35cd8b..e2db661b8 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -5,20 +5,36 @@ If you plan to contribute to Documenso, please take a moment to feel awesome ✨
## Before getting started
- Before jumping into a PR be sure to search [existing PRs](https://github.com/documenso/documenso/pulls) or [issues](https://github.com/documenso/documenso/issues) for an open or closed item that relates to your submission.
-- Select and issue from [here](https://github.com/documenso/documenso/issues) or create a new one
-- Consider the results from the discussion in the issue
+- Select an issue from [here](https://github.com/documenso/documenso/issues) or create a new one
+- Consider the results from the discussion on the issue
- Accept the [Contributor License Agreement](https://documen.so/cla) to ensure we can accept your contributions.
+## Taking issues
+
+Before taking an issue, ensure that:
+
+- The issue has been assigned the public label
+- The issue is clearly defined and understood
+- No one has been assigned to the issue
+- No one has expressed intention to work on it
+
+You can then:
+
+1. Comment on the issue with your intention to work on it
+2. Begin work on the issue
+
+Always feel free to ask questions or seek clarification on the issue.
+
## Developing
-The development branch is main. All pull request should be made against this branch. If you need help getting started, [join us on Discord](https://documen.so/discord).
+The development branch is main. All pull requests should be made against this branch. If you need help getting started, [join us on Discord](https://documen.so/discord).
1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your
own GitHub account and then
[clone](https://help.github.com/articles/cloning-a-repository/) it to your local device.
2. Create a new branch:
-- Create a new branch (include the issue id and somthing readable):
+- Create a new branch (include the issue id and something readable):
```sh
git checkout -b doc-999-my-feature-or-fix
@@ -29,7 +45,7 @@ The development branch is main. All pull request should be made aga
## Building
> **Note**
-> Please be sure that you can make a full production build before pushing code or creating PRs.
+> Please ensure you can make a full production build before pushing code or creating PRs.
You can build the project with:
diff --git a/README.md b/README.md
index 29ffb0d65..f488b4a63 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,6 @@
-
-
-
-
+
+
The Open Source DocuSign Alternative.
@@ -16,62 +14,69 @@
Issues
·
Roadmap
+ ·
+ Upcoming Launches
-
+
+
+
+
+
+ src="https://github.com/documenso/documenso/assets/1309312/67e08c98-c153-4115-aa2d-77979bb12c94)">
+ src="https://github.com/documenso/documenso/assets/1309312/040cfbae-3438-4ca3-87f2-ce52c793dcaf">
+ src="https://github.com/documenso/documenso/assets/1309312/72d445be-41e5-4936-bdba-87ef8e70fa09">
+ src="https://github.com/documenso/documenso/assets/1309312/d7b86c0f-a755-4476-a022-a608db2c4633">
-
-
-
+ src=https://github.com/documenso/documenso/assets/1309312/c0f55116-ab82-433f-a266-f3fc8571d69f">