mirror of
https://github.com/mfts/papermark.git
synced 2025-12-20 01:03:24 +08:00
main
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
pipenvto 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/tinybirddirectory: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_TOKENwith the appropriate rights in your.envfile.
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.
Our Contributors ✨
Languages
TypeScript
99.4%
JavaScript
0.3%
CSS
0.2%
