Implementation of a universal upload allowing for multiple storage backends
starting with `database` and `s3`.
Allows clients to put and retrieve files from either client or server using
a blend of client and server actions.
* feat: update document table layout
- Removed dashboard page
- Removed redundant ID column
- Moved date to first column
- Added estimated locales for SSR dates
- Fixed z-index when dragging pre-existing fields
- Refactored document flow
- Added button spinner
- Added animation for document flow slider
- Updated drag and drop fields
- Updated document flow so it adjusts to the height of the PDF
- Updated claim plan dialog
This change actually makes the authoring flow work for
the most part by tying in emailing and more.
We have also done a number of quality of life updates to
simplify the codebase overall making it easier to continue
work on the refresh.
description:Create a bug report to help us improve
body:
- type:markdown
attributes:
value:
Thank you for reporting an issue.
Please fill in as much of the form below as you're able to.
- type:textarea
attributes:
label:Issue Description
description:Please provide a clear and concise description of the problem.
- type:textarea
attributes:
label:Steps to Reproduce
description:Please provide step-by-step instructions to reproduce the issue. Include code snippets, error messages, and any other relevant information.
- type:textarea
attributes:
label:Expected Behavior
description:Describe what you expected to happen.
- type:textarea
attributes:
label:Current Behavior
description:Describe what is currently happening.
- type:textarea
attributes:
label:Screenshots (optional)
description:If applicable, add screenshots to help explain the issue.
- type:input
attributes:
label:Operating System [e.g., Windows 10]
- type:input
attributes:
label:Browser [e.g., Chrome, Firefox]
- type:input
attributes:
label:Version [e.g., 2.0.1]
- type:checkboxes
attributes:
label:Please check the boxes that apply to this issue report.
options:
- label:I have searched the existing issues to make sure this is not a duplicate.
- label:I have provided steps to reproduce the issue.
- label:I have included relevant environment information.
- label:I have included any relevant screenshots.
- label:I understand that this is a voluntary contribution and that there is no guarantee of resolution.
- label:I want to work on creating a PR for this issue if approved
description:Suggest a new idea or enhancement for this project
body:
- type:markdown
attributes:
value:Please provide a clear and concise title for your feature request
- type:textarea
attributes:
label:Feature Description
description:Describe the feature you are requesting in detail. Explain what problem it solves or what value it adds to the project.
- type:textarea
attributes:
label:Use Case
description:Provide a scenario or use case where this feature would be beneficial. Explain how users would interact with this feature and why it's important.
- type:textarea
attributes:
label:Proposed Solution
description:If you have an idea of how this feature could be implemented, describe it here. Include any technical details, UI/UX considerations, or design suggestions.
- type:textarea
attributes:
label:Alternatives (optional)
description:Are there any alternative ways to achieve the same goal? Describe other approaches that could be considered if this feature is not implemented.
- type:textarea
attributes:
label:Additional Context
description:Add any additional context or information that might be relevant to the feature request.
- type:checkboxes
attributes:
label:Please check the boxes that apply to this feature request.
options:
- label:I have searched the existing feature requests to make sure this is not a duplicate.
- label:I have provided a detailed description of the requested feature.
- label:I have explained the use case or scenario for this feature.
- label:I have included any relevant technical details or design suggestions.
- label:I understand that this is a suggestion and that there is no guarantee of implementation.
description:Suggest a minor enhancement or improvement for this project
body:
- type:markdown
attributes:
value:Please provide a clear and concise title for your improvement suggestion
- type:textarea
attributes:
label:Improvement Description
description:Describe the improvement you are suggesting in detail. Explain what specific aspect of the project it addresses or enhances.
- type:textarea
attributes:
label:Rationale
description:Explain why this improvement would be beneficial. Share any context, pain points, or reasons for suggesting this change.
- type:textarea
attributes:
label:Proposed Solution
description:If you have a suggestion for how this improvement could be implemented, describe it here. Include any technical details, design suggestions, or other relevant information.
- type:textarea
attributes:
label:Alternatives (optional)
description:Are there any alternative approaches to achieve the same improvement? Describe other ways to address the issue or enhance the project.
- type:textarea
attributes:
label:Additional Context
description:Add any additional context or information that might be relevant to the improvement suggestion.
- type:checkboxes
attributes:
label:Please check the boxes that apply to this improvement suggestion.
options:
- label:I have searched the existing issues and improvement suggestions to avoid duplication.
- label:I have provided a clear description of the improvement being suggested.
- label:I have explained the rationale behind this improvement.
- label:I have included any relevant technical details or design suggestions.
- label:I understand that this is a suggestion and that there is no guarantee of implementation.
Signing documents is a fundamental building block of private, economic, and government interactions. Access to easy and secure signing to participate in society should therefore be a fundamental right for everyone. The technology to enable this should be accessible and widespread.
We know that open source is the key to solving this need once and for all to benefit all humankind. Using open source kickstarts innovation by putting the open sharing of ideas and solutions first. With Documenso, we will create an open and globally accessible signing platform to empower users, customers, and developers to fulfill their needs. Documenso is built by and for the global community, listening and implementing what is needed. Being transparent with the code and the processes that use it brings trust and security to the platform.
We build Documenso for longevity and scale by embracing the capital efficiency and inclusiveness of the Commercial Open Source (COSS) movement. We are building a global commodity for the world.
@@ -62,14 +70,14 @@ Join us in creating the next generation of open trust infrastructure.
## 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.
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.
- 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
@@ -103,7 +111,7 @@ Contact us if you are interested in our Enterprise plan for large organizations
### Requirements
To run Documenso locally, you will need
To run Documenso locally you will need
- Node.js
- Postgres SQL Database
@@ -121,7 +129,7 @@ Want to get up and running quickly? Follow these steps:
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.
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
@@ -148,7 +156,7 @@ npm run d
### Manual Setup
Follow these steps to setup Documenso on your local machine:
Follow these steps to setup documenso on you local machine:
1. [Clone the repository](https://help.github.com/articles/cloning-a-repository/) it to your local device.
@@ -156,11 +164,11 @@ Follow these steps to setup Documenso on your local machine:
git clone https://github.com/documenso/documenso
```
2. Run `npm i` in the root directory
2. Run `npm i` in root directory
3. Create your `.env` from the `.env.example`. You can use `cp .env.example .env` to get started with our handpicked defaults.
5. Create the database schema by running `npm run prisma:migrate-dev`
6. Run `npm run dev` in the root directory to start
6. Run `npm run dev` 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)**.
- 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
@@ -195,80 +203,13 @@ We support DevContainers for VSCode. [Click here to get started.](https://vscode
## Docker
🚧 Docker containers and images are current in progress. We are actively working on bringing a simple Docker build and publish pipeline for Documenso.
🚧 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.
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
```
> Please note the below deployment methods are for v0.9, we will update these to v1.0 once it has been released.
### Railway
@@ -280,15 +221,15 @@ WantedBy=multi-user.target
## Troubleshooting
### I'm not receiving any emails when using the developer quickstart.
### 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.
When using the developer quickstart an [Inbucket](https://inbucket.org/) server will be spun up in a docker container that will store all outgoing email locally for you to view.
The Web UI can be found at http://localhost:9000, while the SMTP port will be on localhost:2500.
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
In case 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
@@ -313,7 +254,7 @@ containers:
- '::'
```
### I can't see environment variables in my package scripts.
### I can't see environment variables in my package scripts
Wrap your package script with the `with:env` script like such:
@@ -321,7 +262,7 @@ 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:
The same can be done when using `npx` for one of bin scripts:
@@ -79,7 +79,7 @@ There weren’t any deeper reasons we choose WiseKey, other than they offered wh
Do you have questions or thoughts about this? As always, let me know in the comments, on <a href="http://twitter.com/eltimuro" target="_blank">twitter.com/eltimuro</a>
or directly: <a href="https://documen.so/timur" target="_blank">documen.so/timur</a>
Join the self-hoster community here: <a href="https://documen.so/discord" target="_blank">https://documen.so/discord</a>
Join the self-hoster community here: <a href="https://documenso.slack.com/" target="_blank">https://documenso.slack.com/</a>
description: It's the Launch Week Day finale, Day 5! We are going out with a bang and introducing the 🔴 LIVE roadmap, featuring our next Product Hunt Launch - Free Singleplayer Documenso - Sign without creating an account!
authorName: 'Timur Ercan'
authorImage: '/blog/blog-author-timur.jpeg'
authorRole: 'Co-Founder'
date: 2023-09-29
tags:
- Free Plan
- Launch
- Roadmap
---
<figure>
<MdxNextImage
src="/blog/roadmap.png"
width="1260"
height="630"
alt="XKCD: Bug"
/>
<figcaption className="text-center">
"Being early is, uh, good." -Unknown
</figcaption>
</figure>
> TLDR; We are launching a [🔴 LIVE roadmap](https://documen.so/launches), that gets updated regularly.\
> First upcoming launch: A free single signer experience.
## The Road Ahead
It's been quite a week, launching our [design system](https://documenso.com/blog/design-system), [kicking of a Malfunction Mania](https://documenso.com/blog/malfunction-mania), a [shiny new contributor perk](https://documenso.com/blog/shop) and our [early adopter deal](https://documenso.com/blog/early-adopters). After discussing Version 1.0 a lot, we want to close the week by looking ahead. As an open company, we want transparency about what we are working on and what to expect next. Especially for our Early Adopters, we want to paint a clear picture of what to expect in the near term.
Communicating software development progress and goals is historically tricky because of it's complex nature. Exact release dates are notoriously unreliable; if they are not, they force a particular style of development, forcing the team to make tradeoffs on scope and quality.
To give an appropriate insight into our work, we are launching our new [🔴 LIVE roadmap](https://documen.so/launches) today:
- A List of quarterly development and feature goals
- That gets updated regularly (bi-weekly)
- Has up-to-date insights from the team on where we stand
**While there are some great features planned, one stands out: Single Player Mode!**
🚨 We are going back to Product Hunt! Are you ready, player one?
</figcaption>
</figure>
</a>
Single Player Mode will be a free, loginless signing experience for single signers. If you hate creating an account to sign a single, once-in-a-while-document yourself as much as we do, we've got you. Our new free tier will accompany Singleplayer. While you don't HAVE to create an account to sign sth. quickly, you can. A free tier Documenso Account will give you the following:
- A place to store all your sent and received Documenso-signed documents
- Free forever
- Unlimited recipients
- 5 free signatures per month (for now, excluding third party types like QES)
- The use of templates, as soon as we [release](https://documen.so/launches) them
Singleplayer will launch in the first half of October, shortly after the release of 1.0, **[ON PRODUCT HUNT!](https://www.producthunt.com/products/documenso)** That's right, we are going back to Product Hunt to kick of this new phase of Documenso and you are invited to join us once again :)
**[Subscribe on PH](https://www.producthunt.com/products/documenso)** to be notified when we launch.
If you have any questions or comments, please reach out on [Twitter / X](https://twitter.com/eltimuro) (DM open) or [Discord](https://documen.so/discord).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.