{"id":13850558,"url":"https://github.com/nonsalant/contract","last_synced_at":"2025-05-15T20:03:07.223Z","repository":{"id":164660772,"uuid":"44742592","full_name":"nonsalant/contract","owner":"nonsalant","description":"A signable contract that lives in a single file","archived":false,"fork":false,"pushed_at":"2025-02-15T07:05:48.000Z","size":614,"stargazers_count":522,"open_issues_count":0,"forks_count":102,"subscribers_count":23,"default_branch":"main","last_synced_at":"2025-04-19T02:14:05.578Z","etag":null,"topics":["contracts","freelance","self-hosted","small-business"],"latest_commit_sha":null,"homepage":"https://stefanmatei.com/contract-generator/","language":"PHP","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/nonsalant.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-10-22T12:04:10.000Z","updated_at":"2025-04-18T07:36:54.000Z","dependencies_parsed_at":"2024-01-17T16:08:11.252Z","dependency_job_id":"a18bb6b0-6df9-45ce-b6a8-149eb06d98ce","html_url":"https://github.com/nonsalant/contract","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonsalant%2Fcontract","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonsalant%2Fcontract/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonsalant%2Fcontract/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonsalant%2Fcontract/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nonsalant","download_url":"https://codeload.github.com/nonsalant/contract/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254414493,"owners_count":22067271,"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":["contracts","freelance","self-hosted","small-business"],"created_at":"2024-08-04T20:01:18.544Z","updated_at":"2025-05-15T20:03:05.678Z","avatar_url":"https://github.com/nonsalant.png","language":"PHP","funding_links":[],"categories":["PHP"],"sub_categories":[],"readme":"### Updates\n\n\u003cp\u003e\n  \u003ca target=\"_blank\" href=\"https://stefanmatei.com/contract-generator/edit#below-contract\"\u003e\n    \u003cimg alt=\"A simple interface with pairs of fields for “replace this” and “with this”. Each pair of inputs has a red button with an X inside it to remove the item. Screenshot from Safari iOS in landscape mode.\" src=\"https://github.com/nonsalant/contract/assets/180561/33b27fc8-a5c1-40c7-ba77-63d22eb55c28\" width=\"500\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n🆕 12/31/23: Added functionality for shortcodes.\n\n---\n\n# Single File Contract\n## A contract that lives in a **single file** and becomes static HTML after it's been signed.\n\n1. [**Generate** a contract file →](https://stefanmatei.com/contract-generator/edit)\n1. **Upload** it to your server\n1. **Send** your client a link to it\n* **[View demo](https://stefanmatei.com/contract-generator/contract-demo.html)**\n\n[![email-contract](https://user-images.githubusercontent.com/180561/209838611-9b40307e-de05-44c0-967a-54399d85ef53.png)](https://stefanmatei.com/contract-generator/contract-demo.html)\n\n---\n\n## How it works\n\n* **[Contract Generator →](https://stefanmatei.com/contract-generator/edit)**\n\n1. Click the link above to create a contract file with custom content or HTML, a signature for the first party, and filename like `contract-1234567890.php`.\n2. Upload the generated file to your own server or domain. You can also rename this file and put it in a folder with a unique name, eg: `contract-1234567890/index.php`.\n3. Once signed by both parties, **the PHP file will delete itself from your server and leave behind a static HTML file.**\n\n---\n\n[![Netlify Status](https://api.netlify.com/api/v1/badges/dc7d73d9-c327-4bcd-a33a-657603bc64ab/deploy-status)](https://app.netlify.com/sites/stefanmatei/deploys)\n\n---\n\n## What's in each file\n\n### [contract.php](https://github.com/nonsalant/contract/blob/master/contract.php)\n\nAn example of a contract script: contains **all code** (PHP, CSS, HTML, PNG-data, JS) required by a stand-alone contract file. Upon being signed, this script deletes itself (or rather, it deletes its .php file), and leaves behind an .html file with the same name: a final version of the contract, signed by both parties.\n\nThe first 10 or so lines of the file are used to store contract metadata (one per line), ie:\n\n```php\n\u003c?php /* ##########################\n[client_email]\n[dev_email]\n[dev_signature]\n[dev_ip]\n[dev_timestamp]\n[dev_timestamp_offset]\n[dev_name]\n[client_name]\n###################################\n```\n---\n\n### test.php \nA copy of `contract.php` -- the only difference is when the filename is `test.php` or `demo.php` the PHP file doesn't delete itself when signed.\n\n---\n\n### [📁/generator/](https://github.com/nonsalant/contract/tree/master/generator)\n\nFolder containing all the code behind the [online generator](https://stefanmatei.com/contract-generator/).\n\nThe Contract Generator can be downloaded by getting the generator.zip archive from the [Releases section](https://github.com/nonsalant/contract/releases/).\n\n[![contract-generator](https://user-images.githubusercontent.com/180561/209838852-20825cf1-ab25-4f09-8ec7-c26eb80c0a14.jpg)](https://stefanmatei.com/contract-generator/)\n\n\n---\n\n[MIT License](http://www.opensource.org/licenses/mit-license.php)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnonsalant%2Fcontract","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnonsalant%2Fcontract","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnonsalant%2Fcontract/lists"}