Papermark is the open-source document sharing alternative to DocSend with built-in analytics and custom domains.
- Shareable Links: Share your document securely by sending a custom link
- Custom Branding: Add a custom domain and your own branding
- Analytics: Get insights via document tracking and soon page-by-page analytics
- Self-hosted, open-source: Host it yourself and hack on it
- 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
Here's what you need to be able to run Papermark:
- Node.js (version >= 18)
- PostgreSQL Database
- Blob storage (currently AWS S3 or Vercel Blob)
- Resend (for sending emails)
git clone https://github.com/mfts/papermark.git
cd papermark
npm install
cp .env.example .env
npx prisma generate
npx prisma migrate deploy
npm run dev
Visit http://localhost:3000 in your browser.
To prepare the Tinybird database, follow these steps:
- We use
pipenv
to manage my 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 datasources 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.
pipenv shell
## start: pkgx-specific
cd ..
cd papermark
## end: pkgx-specific
pipenv update tinybird-cli
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 changes as you'd like. Pull requests are warmly welcome.