{"id":13376184,"url":"https://github.com/ActiveCampaign/PactMaker","last_synced_at":"2025-03-13T01:31:55.981Z","repository":{"id":66239069,"uuid":"122682235","full_name":"ActiveCampaign/PactMaker","owner":"ActiveCampaign","description":"Starter workflow for creating electronically signed PDF agreements.","archived":false,"fork":false,"pushed_at":"2022-06-22T16:07:21.000Z","size":331,"stargazers_count":134,"open_issues_count":2,"forks_count":33,"subscribers_count":20,"default_branch":"main","last_synced_at":"2024-05-19T12:17:02.273Z","etag":null,"topics":["agreement","document-generator","express","gdpr","nodejs","pdf-generation","pdf-signature"],"latest_commit_sha":null,"homepage":"","language":"EJS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ActiveCampaign.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":null,"security":null,"support":null,"governance":null}},"created_at":"2018-02-23T23:10:53.000Z","updated_at":"2024-05-12T16:45:26.000Z","dependencies_parsed_at":"2023-02-20T16:31:54.088Z","dependency_job_id":null,"html_url":"https://github.com/ActiveCampaign/PactMaker","commit_stats":null,"previous_names":["wildbit/pactmaker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ActiveCampaign%2FPactMaker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ActiveCampaign%2FPactMaker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ActiveCampaign%2FPactMaker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ActiveCampaign%2FPactMaker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ActiveCampaign","download_url":"https://codeload.github.com/ActiveCampaign/PactMaker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243293791,"owners_count":20268141,"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":["agreement","document-generator","express","gdpr","nodejs","pdf-generation","pdf-signature"],"created_at":"2024-07-30T05:02:32.694Z","updated_at":"2025-03-13T01:31:55.651Z","avatar_url":"https://github.com/ActiveCampaign.png","language":"EJS","readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg width=\"250\" src=\"media/logo.png\" alt=\"PactMaker\"\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003eStarter workflow for creating self-signed PDF agreements. If you’re working on becoming GDPR compliant, we wrote a [quick guide](https://postmarkapp.com/blog/gdpr-get-ready) on how you can get prepared.\n\n\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)\n\nPactMaker spins up a website with a form that lets your customers self-sign PDF agreements. After each agreement is signed, it sends an email with a copy of the PDF using [Postmark](https://postmarkapp.com). PactMaker is built with node.js, express, and EJS templating.\n\n![PactMaker Screenshot](media/screenshot.png)\n\n## Configuration\nCreate an environment variable file(`.env`) in the project root with the following variables:\n\n```\nPOSTMARK_SERVER_TOKEN=''\nPOSTMARK_FROM_ADDRESS=''\nINTERNAL_EMAIL_RECIPIENTS=''\nINTERNAL_EMAIL_SUBJECT=''\nSIGNEE_EMAIL_SUBJECT=''\nTITLE=''\n```\n\n#### `POSTMARK_SERVER_TOKEN`\nServer tokens can be found under the credentials tab on your Postmark server.\n\n#### `POSTMARK_FROM_ADDRESS`\nThe email address you want to send the email from. You must verify your domain or create a valid Sender Signature on Postmark.\n\n#### `INTERNAL_EMAIL_RECIPIENTS`\nComma-separated list of email address you want to send the PDF agreement to.\n\n#### `INTERNAL_EMAIL_SUBJECT`\nThe subject line of the email that gets sent to your team. Available variables: `\u003c%= company %\u003e`, `\u003c%= name %\u003e`, `\u003c%= role %\u003e`, and `\u003c%= email %\u003e`.\n\n#### `SIGNEE_EMAIL_SUBJECT`\nThe subject line of the email that gets sent to the person who just signed the agreement. Available variables: `\u003c%= company %\u003e`, `\u003c%= name %\u003e`, `\u003c%= role %\u003e`, and `\u003c%= email %\u003e`.\n\n#### `TITLE`\nThe name of your company or app. This will appear on the page header and footer.\n\n## Get started\nBefore you get started, make sure you have an environment variable file(see above) and that [Node.js](https://nodejs.org/en/) and [npm](https://www.npmjs.com/get-npm) is installed.\n\n* In terminal, run `npm install`\n* Run `npm start` or `heroku local` to run the project locally\n* By default, `npm start` uses [port 3000](http://localhost:3000) and `heroku local` uses [port 5000](http://localhost:5000).\n\n## Email templates\nThe email content for the signee and internal email can be found under [`/emails`](emails). Templates are rendered using [EJS](http://www.embeddedjs.com/). Available variables: `\u003c%= company %\u003e`, `\u003c%= name %\u003e`, `\u003c%= role %\u003e`, and `\u003c%= email %\u003e`.\n\n## Agreement template\nThe agreement PDF template can be found at [`/views/agreement.ejs`](views/agreement.ejs). PactMaker comes with basic styles for presenting different signatures.\n\n### Autogenerated example agreement\nIt’s important to let your customers preview the agreement before signing it. PactMaker automatically generates an [example agreement](https://pactmaker.herokuapp.com/example.pdf) at the root URL so that you can link to it. Example values can be found in [examples.json](examples.json).\n","funding_links":[],"categories":["HTML"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FActiveCampaign%2FPactMaker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FActiveCampaign%2FPactMaker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FActiveCampaign%2FPactMaker/lists"}