mirror of
https://github.com/documenso/documenso.git
synced 2025-11-10 04:22:32 +10:00
337 lines
12 KiB
Markdown
337 lines
12 KiB
Markdown
🚨 We are launching our new free tier "Single Player Mode" on Product Hunt next monday: https://www.producthunt.com/products/documenso
|
|
|
|
<img src="https://github.com/documenso/documenso/assets/13398220/a643571f-0239-46a6-a73e-6bef38d1228b" alt="Documenso Logo">
|
|
|
|
<p align="center" style="margin-top: 20px">
|
|
<p align="center">
|
|
The Open Source DocuSign Alternative.
|
|
<br>
|
|
<a href="https://documenso.com"><strong>Learn more »</strong></a>
|
|
<br />
|
|
<br />
|
|
<a href="https://documen.so/discord">Discord</a>
|
|
·
|
|
<a href="https://documenso.com">Website</a>
|
|
·
|
|
<a href="https://github.com/documenso/documenso/issues">Issues</a>
|
|
·
|
|
<a href="https://github.com/documenso/documenso/milestones">Roadmap</a>
|
|
·
|
|
<a href="https://documen.so/launches">Upcoming Launches</a>
|
|
</p>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<a href="https://documen.so/discord"><img src="https://img.shields.io/badge/Discord-documen.so/discord-%235865F2" alt="Join Documenso on Discord"></a>
|
|
<a href="https://github.com/documenso/documenso/stargazers"><img src="https://img.shields.io/github/stars/documenso/documenso" alt="Github Stars"></a>
|
|
<a href="https://github.com/documenso/documenso/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-AGPLv3-purple" alt="License"></a>
|
|
<a href="https://github.com/documenso/documenso/pulse"><img src="https://img.shields.io/github/commit-activity/m/documenso/documenso" alt="Commits-per-month"></a>
|
|
<a href="https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/documenso/documenso">
|
|
<img alt="open in devcontainer" src="https://img.shields.io/static/v1?label=Dev%20Containers&message=Enabled&color=blue&logo=visualstudiocode" />
|
|
</a>
|
|
<a href="code_of_conduct.md"><img src="https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg" alt="Contributor Covenant"></a>
|
|
</p>
|
|
|
|
<div>
|
|
<img style="display: block; height: 120px; width: 24%"
|
|
src="https://github.com/documenso/documenso/assets/1309312/67e08c98-c153-4115-aa2d-77979bb12c94)">
|
|
<img style="display: block; height: 120px; width: 24%"
|
|
src="https://github.com/documenso/documenso/assets/1309312/040cfbae-3438-4ca3-87f2-ce52c793dcaf">
|
|
<img style="display: block; height: 120px; width: 24%"
|
|
src="https://github.com/documenso/documenso/assets/1309312/72d445be-41e5-4936-bdba-87ef8e70fa09">
|
|
<img style="display: block; height: 120px; width: 24%"
|
|
src="https://github.com/documenso/documenso/assets/1309312/d7b86c0f-a755-4476-a022-a608db2c4633">
|
|
<img style="display: block; height: 120px; width: 24%"
|
|
src=https://github.com/documenso/documenso/assets/1309312/c0f55116-ab82-433f-a266-f3fc8571d69f">
|
|
</div>
|
|
|
|
## About this project
|
|
|
|
Signing documents digitally should be fast and easy and should be the best practice for every document signed worldwide.
|
|
|
|
This is technically quite easy today, but it also introduces a new party to every signature: The signing tool providers. While this is not a problem in itself, it should make us think about how we want these providers of trust to work.
|
|
|
|
Documenso aims to be the world's most trusted document-signing tool. This trust is built by empowering you to self-host Documenso and review how it works under the hood.
|
|
|
|
Join us in creating the next generation of open trust infrastructure.
|
|
|
|
## Recognition
|
|
|
|
<p align="center">
|
|
<a href="https://www.producthunt.com/posts/documenso?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-documenso" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=395047&theme=light&period=daily" alt="Documenso - The open source DocuSign alternative | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
|
|
<a href="https://www.producthunt.com/posts/documenso?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-documenso" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=395047&theme=light" alt="Documenso - The Open Source DocuSign Alternative. | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
|
|
</p>
|
|
|
|
## Community and Next Steps 🎯
|
|
|
|
We're currently working on a redesign of the application, including a revamp of the codebase, so Documenso can be more intuitive to use and robust to develop upon.
|
|
|
|
- Check out the first source code release in this repository and test it.
|
|
- Tell us what you think in the [Discussions](https://github.com/documenso/documenso/discussions).
|
|
- Join the [Discord server](https://documen.so/discord) for any questions and getting to know to other community members.
|
|
- ⭐ the repository to help us raise awareness.
|
|
- Spread the word on Twitter that Documenso is working towards a more open signing tool.
|
|
- Fix or create [issues](https://github.com/documenso/documenso/issues), that are needed for the first production release.
|
|
|
|
## Contributing
|
|
|
|
- To contribute, please see our [contribution guide](https://github.com/documenso/documenso/blob/main/CONTRIBUTING.md).
|
|
|
|
## Contact us
|
|
|
|
Contact us if you are interested in our Enterprise plan for large organizations that need extra flexibility and control.
|
|
|
|
<a href="https://cal.com/timurercan/enterprise-customers?utm_source=banner&utm_campaign=oss"><img alt="Book us with Cal.com" src="https://cal.com/book-with-cal-dark.svg" /></a>
|
|
|
|
## Tech Stack
|
|
|
|
- [Typescript](https://www.typescriptlang.org/) - Language
|
|
- [Next.js](https://nextjs.org/) - Framework
|
|
- [Prisma](https://www.prisma.io/) - ORM
|
|
- [Tailwind](https://tailwindcss.com/) - CSS
|
|
- [shadcn/ui](https://ui.shadcn.com/) - Component Library
|
|
- [NextAuth.js](https://next-auth.js.org/) - Authentication
|
|
- [react-email](https://react.email/) - Email Templates
|
|
- [tRPC](https://trpc.io/) - API
|
|
- [Node SignPDF](https://github.com/vbuch/node-signpdf) - Digital Signature
|
|
- [React-PDF](https://github.com/wojtekmaj/react-pdf) - Viewing PDFs
|
|
- [PDF-Lib](https://github.com/Hopding/pdf-lib) - PDF manipulation
|
|
- [Stripe](https://stripe.com/) - Payments
|
|
- [Vercel](https://vercel.com) - Hosting
|
|
|
|
<!-- - Support for [opensignpdf (requires Java on server)](https://github.com/open-pdf-sign) is currently planned. -->
|
|
|
|
## Local Development
|
|
|
|
### Requirements
|
|
|
|
To run Documenso locally, you will need
|
|
|
|
- Node.js
|
|
- Postgres SQL Database
|
|
- Docker (optional)
|
|
|
|
### Developer Quickstart
|
|
|
|
> **Note**: This is a quickstart for developers. It assumes that you have both [docker](https://docs.docker.com/get-docker/) and [docker-compose](https://docs.docker.com/compose/) installed on your machine.
|
|
|
|
Want to get up and running quickly? Follow these steps:
|
|
|
|
1. [Clone the repository](https://help.github.com/articles/cloning-a-repository/) it to your local device.
|
|
|
|
```sh
|
|
git clone https://github.com/documenso/documenso
|
|
```
|
|
|
|
2. Set up your `.env` file using the recommendations in the `.env.example` file. Alternatively, just run `cp .env.example .env` to get started with our handpicked defaults.
|
|
|
|
3. Run `npm run dx` in the root directory
|
|
|
|
- This will spin up a postgres database and inbucket mailserver in a docker container.
|
|
|
|
4. Run `npm run dev` in the root directory
|
|
|
|
5. Want it even faster? Just use
|
|
|
|
```sh
|
|
npm run d
|
|
```
|
|
|
|
#### Access Points for Your Application
|
|
|
|
1. **App** - http://localhost:3000
|
|
2. **Incoming Mail Access** - http://localhost:9000
|
|
|
|
3. **Database Connection Details**
|
|
- **Port**: 54320
|
|
- **Connection**: Use your favorite database client to connect using the provided port.
|
|
|
|
## Developer Setup
|
|
|
|
### Manual Setup
|
|
|
|
Follow these steps to setup Documenso on your local machine:
|
|
|
|
1. [Clone the repository](https://help.github.com/articles/cloning-a-repository/) it to your local device.
|
|
|
|
```sh
|
|
git clone https://github.com/documenso/documenso
|
|
```
|
|
|
|
2. Run `npm i` in the root directory
|
|
|
|
3. Create your `.env` from the `.env.example`. You can use `cp .env.example .env` to get started with our handpicked defaults.
|
|
|
|
4. Set the following environment variables:
|
|
|
|
- NEXTAUTH_URL
|
|
- NEXTAUTH_SECRET
|
|
- NEXT_PUBLIC_WEBAPP_URL
|
|
- NEXT_PUBLIC_MARKETING_URL
|
|
- NEXT_PRIVATE_DATABASE_URL
|
|
- NEXT_PRIVATE_DIRECT_DATABASE_URL
|
|
- NEXT_PRIVATE_SMTP_FROM_NAME
|
|
- NEXT_PRIVATE_SMTP_FROM_ADDRESS
|
|
|
|
5. Create the database schema by running `npm run prisma:migrate-dev`
|
|
|
|
6. Run `npm run dev` in the root directory to start
|
|
|
|
7. Register a new user at http://localhost:3000/signup
|
|
|
|
---
|
|
|
|
- Optional: Seed the database using `npm run prisma:seed -w @documenso/prisma` to create a test user and document.
|
|
- Optional: Create your own signing certificate.
|
|
- To generate your own using these steps and a Linux Terminal or Windows Subsystem for Linux (WSL), see **[Create your own signing certificate](./SIGNING.md)**.
|
|
|
|
### Run in Gitpod
|
|
|
|
- Click below to launch a ready-to-use Gitpod workspace in your browser.
|
|
|
|
[](https://gitpod.io/#https://github.com/documenso/documenso)
|
|
|
|
### Run in DevContainer
|
|
|
|
We support DevContainers for VSCode. [Click here to get started.](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/documenso/documenso)
|
|
|
|
## Docker
|
|
|
|
🚧 Docker containers and images are current in progress. We are actively working on bringing a simple Docker build and publish pipeline for Documenso.
|
|
|
|
## Self Hosting
|
|
|
|
We support a variety of deployment methods, and are actively working on adding more. Stay tuned for updates!
|
|
|
|
> Please note that the below deployment methods are for v0.9, we will update these to v1.0 once it has been released.
|
|
|
|
### Fetch, configure, and build
|
|
|
|
First, clone the code from Github:
|
|
|
|
```
|
|
git clone https://github.com/documenso/documenso.git
|
|
```
|
|
|
|
Then, inside the `documenso` folder, copy the example env file:
|
|
|
|
```
|
|
cp .env.example .env
|
|
```
|
|
|
|
The following environment variables must be set:
|
|
|
|
* `NEXTAUTH_URL`
|
|
* `NEXTAUTH_SECRET`
|
|
* `NEXT_PUBLIC_WEBAPP_URL`
|
|
* `NEXT_PUBLIC_MARKETING_URL`
|
|
* `NEXT_PRIVATE_DATABASE_URL`
|
|
* `NEXT_PRIVATE_DIRECT_DATABASE_URL`
|
|
* `NEXT_PRIVATE_SMTP_FROM_NAME`
|
|
* `NEXT_PRIVATE_SMTP_FROM_ADDRESS`
|
|
|
|
> If you are using a reverse proxy in front of Documenso, don't forget to provide the public URL for both `NEXTAUTH_URL` and `NEXT_PUBLIC_WEBAPP_URL` variables!
|
|
|
|
Now you can install the dependencies and build it:
|
|
|
|
```
|
|
npm i
|
|
npm run:build:web
|
|
npm run prisma:migrate-deploy
|
|
```
|
|
|
|
Finally, you can start it with:
|
|
|
|
```
|
|
npm run start
|
|
```
|
|
|
|
This will start the server on `localhost:3000`. For now, any reverse proxy can then do the frontend and SSL termination.
|
|
|
|
> If you want to run with another port than 3000, you can start the application with `next -p <ANY PORT>` from the `apps/web` folder.
|
|
|
|
### Run as a service
|
|
|
|
You can use a systemd service file to run the app. Here is a simple example of the service running on port 3500 (using 3000 by default):
|
|
|
|
```bash
|
|
[Unit]
|
|
Description=documenso
|
|
After=network.target
|
|
|
|
[Service]
|
|
Environment=PATH=/path/to/your/node/binaries
|
|
Type=simple
|
|
User=www-data
|
|
WorkingDirectory=/var/www/documenso/apps/web
|
|
ExecStart=/usr/bin/next start -p 3500
|
|
TimeoutSec=15
|
|
Restart=always
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
### Railway
|
|
|
|
[](https://railway.app/template/DjrRRX)
|
|
|
|
### Render
|
|
|
|
[](https://render.com/deploy?repo=https://github.com/documenso/documenso)
|
|
|
|
## Troubleshooting
|
|
|
|
### I'm not receiving any emails when using the developer quickstart.
|
|
|
|
When using the developer quickstart, an [Inbucket](https://inbucket.org/) server will be spun up in a docker container that will store all outgoing emails locally for you to view.
|
|
|
|
The Web UI can be found at http://localhost:9000, while the SMTP port will be on localhost:2500.
|
|
|
|
### Support IPv6
|
|
|
|
If you are deploying to a cluster that uses only IPv6, You can use a custom command to pass a parameter to the Next.js start command
|
|
|
|
For local docker run
|
|
|
|
```bash
|
|
docker run -it documenso:latest npm run start -- -H ::
|
|
```
|
|
|
|
For k8s or docker-compose
|
|
|
|
```yaml
|
|
containers:
|
|
- name: documenso
|
|
image: documenso:latest
|
|
imagePullPolicy: IfNotPresent
|
|
command:
|
|
- npm
|
|
args:
|
|
- run
|
|
- start
|
|
- --
|
|
- -H
|
|
- '::'
|
|
```
|
|
|
|
### I can't see environment variables in my package scripts.
|
|
|
|
Wrap your package script with the `with:env` script like such:
|
|
|
|
```
|
|
npm run with:env -- npm run myscript
|
|
```
|
|
|
|
The same can be done when using `npx` for one of the bin scripts:
|
|
|
|
```
|
|
npm run with:env -- npx myscript
|
|
```
|
|
|
|
This will load environment variables from your `.env` and `.env.local` files.
|
|
|
|
## Repo Activity
|
|
|
|

|