Awesome
<div align="center"> <h1 align="center">Papermark</h1> <h3>The open-source DocSend alternative.</h3><a target="_blank" href="https://www.producthunt.com/posts/papermark-3?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-papermark"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=411605&theme=light&period=daily" alt="Papermark - The open-source DocSend alternative | Product Hunt" style="width:250px;height:40px"></a>
</div> <div align="center"> <a href="https://www.papermark.io">papermark.io</a> </div> <br/> <div align="center"> <a href="https://github.com/mfts/papermark/stargazers"><img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/mfts/papermark"></a> <a href="https://twitter.com/papermarkio"><img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/papermarkio"></a> <a href="https://github.com/mfts/papermark/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/badge/license-AGPLv3-purple"></a> </div> <br/>Papermark is the open-source document-sharing alternative to DocSend, featuring built-in analytics and custom domains.
Features
- Shareable Links: Share your documents securely by sending a custom link.
- Custom Branding: Add a custom domain and your own branding.
- Analytics: Gain insights through document tracking and soon page-by-page analytics.
- Self-hosted, Open-source: Host it yourself and customize it as needed.
Demo
Tech Stack
- Next.js – Framework
- TypeScript – Language
- Tailwind – CSS
- shadcn/ui - UI Components
- Prisma - ORM
- PostgreSQL - Database
- NextAuth.js – Authentication
- Tinybird – Analytics
- Resend – Email
- Stripe – Payments
- Vercel – Hosting
Getting Started
Prerequisites
Here's what you need to run Papermark:
- Node.js (version >= 18.17.0)
- PostgreSQL Database
- Blob storage (currently AWS S3 or Vercel Blob)
- Resend (for sending emails)
1. Clone the repository
git clone https://github.com/mfts/papermark.git
cd papermark
2. Install npm dependencies
npm install
3. Copy the environment variables to .env
and change the values
cp .env.example .env
4. Initialize the database
npm run dev:prisma
5. Run the dev server
npm run dev
6. Open the app in your browser
Visit http://localhost:3000 in your browser.
Tinybird Instructions
To prepare the Tinybird database, follow these steps:
- We use
pipenv
to manage our Python dependencies. If you don't have it installed, you can install it using the following command:pkgx pipenv
- Download the Tinybird CLI from here and install it on your system.
- After authenticating with the Tinybird CLI, navigate to the
lib/tinybird
directory:cd lib/tinybird
- Push the necessary data sources using the following command:
tb push datasources/* tb push endpoints/get_*
- Don't forget to set the
TINYBIRD_TOKEN
with the appropriate rights in your.env
file.
Updating Tinybird
pipenv shell
## start: pkgx-specific
cd ..
cd papermark
## end: pkgx-specific
pipenv update tinybird-cli
Contributing
Papermark is an open-source project, and we welcome contributions from the community.
If you'd like to contribute, please fork the repository and make any changes you'd like. Pull requests are warmly welcome.