{"id":13494533,"url":"https://github.com/mfts/papermark","last_synced_at":"2025-05-12T20:49:35.051Z","repository":{"id":171535512,"uuid":"646985602","full_name":"mfts/papermark","owner":"mfts","description":"Papermark is the open-source DocSend alternative with built-in analytics and custom domains.","archived":false,"fork":false,"pushed_at":"2025-05-09T05:37:17.000Z","size":23685,"stargazers_count":6670,"open_issues_count":153,"forks_count":890,"subscribers_count":23,"default_branch":"main","last_synced_at":"2025-05-09T06:26:36.388Z","etag":null,"topics":["dataroom","hacktoberfest","next-auth","nextjs","open-source","pdf","postgresql","prisma","tailwindcss","typescript","zod"],"latest_commit_sha":null,"homepage":"https://papermark.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mfts.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-05-29T20:00:15.000Z","updated_at":"2025-05-09T05:37:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"55a0de2c-bc49-4930-b459-5d4c3f41a679","html_url":"https://github.com/mfts/papermark","commit_stats":{"total_commits":1700,"total_committers":65,"mean_commits":"26.153846153846153","dds":"0.17294117647058826","last_synced_commit":"52010fb3a7aa4f9562aee1b3f3684e826c31d4d3"},"previous_names":["mfts/papermark"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfts%2Fpapermark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfts%2Fpapermark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfts%2Fpapermark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfts%2Fpapermark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mfts","download_url":"https://codeload.github.com/mfts/papermark/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253820347,"owners_count":21969508,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dataroom","hacktoberfest","next-auth","nextjs","open-source","pdf","postgresql","prisma","tailwindcss","typescript","zod"],"created_at":"2024-07-31T19:01:25.852Z","updated_at":"2025-05-12T20:49:35.027Z","avatar_url":"https://github.com/mfts.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003ePapermark\u003c/h1\u003e\n  \u003ch3\u003eThe open-source DocSend alternative.\u003c/h3\u003e\n\n\u003ca target=\"_blank\" href=\"https://www.producthunt.com/posts/papermark-3?utm_source=badge-top-post-badge\u0026amp;utm_medium=badge\u0026amp;utm_souce=badge-papermark\"\u003e\u003cimg src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=411605\u0026amp;theme=light\u0026amp;period=daily\" alt=\"Papermark - The open-source DocSend alternative | Product Hunt\" style=\"width:250px;height:40px\"\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://www.papermark.com\"\u003epapermark.com\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/mfts/papermark/stargazers\"\u003e\u003cimg alt=\"GitHub Repo stars\" src=\"https://img.shields.io/github/stars/mfts/papermark\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://twitter.com/papermarkio\"\u003e\u003cimg alt=\"Twitter Follow\" src=\"https://img.shields.io/twitter/follow/papermarkio\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/mfts/papermark/blob/main/LICENSE\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/license-AGPLv3-purple\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\nPapermark is the open-source document-sharing alternative to DocSend, featuring built-in analytics and custom domains.\n\n## Features\n\n- **Shareable Links:** Share your documents securely by sending a custom link.\n- **Custom Branding:** Add a custom domain and your own branding.\n- **Analytics:** Gain insights through document tracking and soon page-by-page analytics.\n- **Self-hosted, Open-source:** Host it yourself and customize it as needed.\n\n## Demo\n\n![Papermark Welcome GIF](.github/images/papermark-welcome.gif)\n\n## Tech Stack\n\n- [Next.js](https://nextjs.org/) – Framework\n- [TypeScript](https://www.typescriptlang.org/) – Language\n- [Tailwind](https://tailwindcss.com/) – CSS\n- [shadcn/ui](https://ui.shadcn.com) - UI Components\n- [Prisma](https://prisma.io) - ORM [![Made with Prisma](https://made-with.prisma.io/dark.svg)](https://prisma.io)\n- [PostgreSQL](https://www.postgresql.org/) - Database\n- [NextAuth.js](https://next-auth.js.org/) – Authentication\n- [Tinybird](https://tinybird.co) – Analytics\n- [Resend](https://resend.com) – Email\n- [Stripe](https://stripe.com) – Payments\n- [Vercel](https://vercel.com/) – Hosting\n\n## Getting Started\n\n### Prerequisites\n\nHere's what you need to run Papermark:\n\n- Node.js (version \u003e= 18.17.0)\n- PostgreSQL Database\n- Blob storage (currently [AWS S3](https://aws.amazon.com/s3/) or [Vercel Blob](https://vercel.com/storage/blob))\n- [Resend](https://resend.com) (for sending emails)\n\n### 1. Clone the repository\n\n```shell\ngit clone https://github.com/mfts/papermark.git\ncd papermark\n```\n\n### 2. Install npm dependencies\n\n```shell\nnpm install\n```\n\n### 3. Copy the environment variables to `.env` and change the values\n\n```shell\ncp .env.example .env\n```\n\n### 4. Initialize the database\n\n```shell\nnpm run dev:prisma\n```\n\n### 5. Run the dev server\n\n```shell\nnpm run dev\n```\n\n### 6. Open the app in your browser\n\nVisit [http://localhost:3000](http://localhost:3000) in your browser.\n\n## Tinybird Instructions\n\nTo prepare the Tinybird database, follow these steps:\n\n0. We use `pipenv` to manage our Python dependencies. If you don't have it installed, you can install it using the following command:\n   ```sh\n   pkgx pipenv\n   ```\n1. Download the Tinybird CLI from [here](https://www.tinybird.co/docs/cli.html) and install it on your system.\n2. After authenticating with the Tinybird CLI, navigate to the `lib/tinybird` directory:\n   ```sh\n   cd lib/tinybird\n   ```\n3. Push the necessary data sources using the following command:\n   ```sh\n   tb push datasources/*\n   tb push endpoints/get_*\n   ```\n4. Don't forget to set the `TINYBIRD_TOKEN` with the appropriate rights in your `.env` file.\n\n#### Updating Tinybird\n\n```sh\npipenv shell\n## start: pkgx-specific\ncd ..\ncd papermark\n## end: pkgx-specific\npipenv update tinybird-cli\n```\n\n## Contributing\n\nPapermark is an open-source project, and we welcome contributions from the community.\n\nIf you'd like to contribute, please fork the repository and make any changes you'd like. Pull requests are warmly welcome.\n\n### Our Contributors ✨\n\n\u003ca href=\"https://github.com/mfts/papermark/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=mfts/papermark\" /\u003e\n\u003c/a\u003e\n","funding_links":[],"categories":["TypeScript","Document Signatures","Open-source Projects 🔓","Document Management"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmfts%2Fpapermark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmfts%2Fpapermark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmfts%2Fpapermark/lists"}