{"id":21561865,"url":"https://github.com/bviggiano/pact","last_synced_at":"2026-02-13T03:24:32.113Z","repository":{"id":249884437,"uuid":"828630697","full_name":"bviggiano/pact","owner":"bviggiano","description":"A Github based tool designed to help streamline the process of creating, versioning, and distributing programming assignments.","archived":false,"fork":false,"pushed_at":"2025-03-02T23:20:11.000Z","size":595,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-03T00:49:28.619Z","etag":null,"topics":["assignments","courses","education","projects","school","school-assignment","school-project","teaching","teaching-materials","teaching-resources","teaching-tool"],"latest_commit_sha":null,"homepage":"","language":"Python","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/bviggiano.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":"2024-07-14T18:10:26.000Z","updated_at":"2025-03-02T23:19:36.000Z","dependencies_parsed_at":"2025-03-03T00:59:00.502Z","dependency_job_id":null,"html_url":"https://github.com/bviggiano/pact","commit_stats":null,"previous_names":["bviggiano/pact"],"tags_count":11,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bviggiano%2Fpact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bviggiano%2Fpact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bviggiano%2Fpact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bviggiano%2Fpact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bviggiano","download_url":"https://codeload.github.com/bviggiano/pact/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244159990,"owners_count":20408019,"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":["assignments","courses","education","projects","school","school-assignment","school-project","teaching","teaching-materials","teaching-resources","teaching-tool"],"created_at":"2024-11-24T09:28:37.587Z","updated_at":"2026-02-13T03:24:32.108Z","avatar_url":"https://github.com/bviggiano.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Programming Assignment Creation Tool (PACT) 📄\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/bviggiano/pact/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/bviggiano/pact/convert.yml?style=flat-square\u0026logo=github\u0026label=build\" alt=\"Build Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.python.org/downloads/\"\u003e\u003cimg src=\"https://img.shields.io/badge/python-3.10+-blue?style=flat-square\u0026logo=python\u0026logoColor=white\" alt=\"Python 3.10+\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/bviggiano/pact/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-green?style=flat-square\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/bviggiano/pact\"\u003e\u003cimg src=\"https://img.shields.io/badge/template-use_this-purple?style=flat-square\u0026logo=github\" alt=\"Use This Template\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nPACT is a simple Github based tool designed to help streamline the process of creating, versioning, and distributing programming assignments.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"pact.webp\" width=\"250\" height=\"250\"\u003e\n\u003c/p\u003e\n\n\n## What is PACT? 📝\n\nThe core functionality of PACT is to provide a way to automatically convert the \"solution\" form of a programming assignment into a version that is ready to be distributed to students. To do this, PACT relies on a few keyword triggers that are placed in the solution code. These triggers and the resulting behavior they cause are highly customizable.\n\n\n## Getting Started 🚀\n\nThis PACT repository is designed to be utilized as a starting template for a repository containing the assignments for your course.\n\n\u003e [!IMPORTANT]\n\u003e Since this repository will contain the solution versions of the assignments, it is recommended to keep it **private** to prevent students from accessing the solution code.\n\n### 1. Create Your Repository\n\n1. Navigate to [github.com/bviggiano/pact](https://github.com/bviggiano/pact)\n2. Click on the **\"Use this template\"** button, located above the file list and next to the \"Code\" button\n3. Select **\"Create a new repository\"**\n4. On the repository creation page, choose a repository name (e.g., `CS101`) and set the visibility to **private**\n\n### 2. Enable GitHub Actions Permissions\n\n\u003e [!WARNING]\n\u003e **The automated release workflow will fail with a 403 error until you complete this step.**\n\n1. Go to your repository's **Settings** tab\n2. In the left sidebar, click **Actions** → **General**\n3. Scroll down to **Workflow permissions**\n4. Select **Read and write permissions**\n5. Click **Save**\n\n\u003e [!NOTE]\n\u003e **For GitHub Organizations**: If your repository is in an organization, you may need to enable this setting at the organization level first. Go to Organization Settings → Actions → General → Workflow permissions.\n\n### 3. Set Up Local Environment\n\nAfter configuring permissions, set up the PACT conda environment:\n\n```bash\nconda env create -f environment.yml\nconda activate pact_env\npip install -e .\n```\n\n\u003e [!TIP]\n\u003e Check out the [pact/README.md](./pact/README.md) file for detailed information on how to use PACT to create assignments, including trigger keywords and customization options.\n\n\n## Contributing 🤝\n\nContributions to PACT are welcome! Whether it's adding new features, fixing bugs, or improving documentation, all contributions are appreciated. 😁\n\n## License 📝\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n\u003cp align=\"center\"\u003e\nHappy Coding! 🚀\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbviggiano%2Fpact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbviggiano%2Fpact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbviggiano%2Fpact/lists"}