{"id":49455171,"url":"https://github.com/SuffolkLITLab/docassemble-AssemblyLine","last_synced_at":"2026-07-06T19:00:40.507Z","repository":{"id":37508053,"uuid":"323679025","full_name":"SuffolkLITLab/docassemble-AssemblyLine","owner":"SuffolkLITLab","description":"Quickly go from a paper court form to a runnable, guided, step-by-step web application powered by Docassemble. Swap out branding and pre-built questions to meet your needs.","archived":false,"fork":false,"pushed_at":"2026-06-26T13:38:09.000Z","size":3628,"stargazers_count":64,"open_issues_count":102,"forks_count":9,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-06-26T15:08:56.158Z","etag":null,"topics":["access-to-justice","assemblyline-core","courts","docassemble","document-assembly-line","form-builder"],"latest_commit_sha":null,"homepage":"https://suffolklitlab.org/docassemble-AssemblyLine-documentation/","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/SuffolkLITLab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-12-22T16:33:04.000Z","updated_at":"2026-06-23T15:09:42.000Z","dependencies_parsed_at":"2026-03-02T00:05:35.384Z","dependency_job_id":null,"html_url":"https://github.com/SuffolkLITLab/docassemble-AssemblyLine","commit_stats":null,"previous_names":[],"tags_count":76,"template":false,"template_full_name":null,"purl":"pkg:github/SuffolkLITLab/docassemble-AssemblyLine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuffolkLITLab%2Fdocassemble-AssemblyLine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuffolkLITLab%2Fdocassemble-AssemblyLine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuffolkLITLab%2Fdocassemble-AssemblyLine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuffolkLITLab%2Fdocassemble-AssemblyLine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SuffolkLITLab","download_url":"https://codeload.github.com/SuffolkLITLab/docassemble-AssemblyLine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuffolkLITLab%2Fdocassemble-AssemblyLine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35202786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["access-to-justice","assemblyline-core","courts","docassemble","document-assembly-line","form-builder"],"created_at":"2026-04-30T05:00:30.918Z","updated_at":"2026-07-06T19:00:40.479Z","avatar_url":"https://github.com/SuffolkLITLab.png","language":"Python","funding_links":[],"categories":["Document Automation \u0026 Drafting"],"sub_categories":["Commercial AI Research Platforms"],"readme":"# Suffolk LIT Lab Document Assembly Line\r\n\r\n[![PyPI version](https://badge.fury.io/py/docassemble-AssemblyLine.svg)](https://badge.fury.io/py/docassemble-AssemblyLine)\r\n\r\n\u003cimg src=\"https://user-images.githubusercontent.com/7645641/142245862-c2eb02ab-3090-4e97-9653-bb700bf4c54d.png\" alt=\"drawing\" width=\"300\" alt=\"work together\" style=\"align: center;\"/\u003e\r\n\r\nThe Assembly Line Project is a collection of volunteers, students, and institutions who joined together\r\nduring the COVID-19 pandemic to help increase access to the court system. Our vision is mobile-friendly,\r\neasy to use **guided** online forms that help empower litigants to access the court remotely.\r\n\r\nOur signature project is [CourtFormsOnline.org](https://courtformsonline.org).\r\n\r\nWe designed a step-by-step, assembly line style process for automating court forms on top of Docassemble\r\nand built several tools along the way that **you** can use in your home jurisdiction.\r\n\r\nThis package contains **runtime code** and **pre-written questions** to support authoring robust, \r\nconsistent, and attractive Docassemble interviews that help complete court forms.\r\n\r\nRead more on our [documentation page](https://suffolklitlab.org/docassemble-AssemblyLine-documentation/).\r\n\r\n\r\n# Related repositories\r\n\r\n* https://github.com/SuffolkLitLab/docassemble-ALWeaver\r\n* https://github.com/SuffolkLitLab/docassemble-ALMassachusetts\r\n* https://github.com/SuffolkLitLab/docassemble-MassAccess\r\n* https://github.com/SuffolkLitLab/docassemble-ALThemeTemplate\r\n* https://github.com/SuffolkLitLab/EfileProxyServer\r\n\r\n# Documentation\r\n\r\nhttps://suffolklitlab.org/docassemble-AssemblyLine-documentation/\r\n\r\n# Installation\r\n\r\n## Menu-driven installation\r\n\r\nThe recommended installation method is with the [guided installation script](https://assemblyline.suffolklitlab.org/docs/get_started/installation).\r\n\r\n## Manual installation\r\n\r\nNormally you do not need to manually install the Assembly Line. Use the [installation script](https://suffolklitlab.org/docassemble-AssemblyLine-documentation/docs/installation)\r\nif you can. The instructions below are for your optional reference.\r\n\r\nThis package depends on the following configuration changes on your Docassemble server:\r\n\r\n* Ensure that [font-awesome](https://docassemble.org/docs/config.html#default%20icons) is enabled (this may be on by default:\r\n```yaml\r\ndefault icons: font awesome\r\n```\r\n* Add a [Google API key](https://docassemble.org/docs/config.html#google) that has access to:\r\n    * Google Places API\r\n    * Google Geocoding API\r\n* Add a [VoiceRSS API key](https://docassemble.org/docs/config.html#voicerss)\r\n* Add a [Twilio API key](https://docassemble.org/docs/config.html#twilio) for SMS support\r\n* Add an email account: [Mailgun](https://docassemble.org/docs/config.html#mailgun%20api) or [SendGrid](https://docassemble.org/docs/config.html#sendgrid%20api) recommended for email support\r\n* To show package update time and to enable the feedback form, add a GitHub Private Access token to your config.yml file, like this:\r\n```yaml\r\n# Needs access to create new issues on repositories\r\ngithub issues:\r\n  username: \"suffolklitlab-issues\"\r\n  token: \"12345\"\r\n# Does not need any special access to public repositories  \r\ngithub readonly:\r\n  username: \"suffolklitlab-issues\"\r\n  password: \"45678\"\r\n  type: \"basic\"\r\n```\r\n* If you are also using the [Assembly Line Weaver](https://github.com/SuffolkLITLab/docassemble-assemblylinewizard), you may want to set up a [Docassemble API key](https://docassemble.org/docs/api.html#manage_api) in your config.yml file to allow you to install packages automatically, like this:\r\n```yaml\r\ninstall packages api key: 12345\r\n```\r\n\r\n# Migration\r\n\r\nSee [discussion here](https://github.com/SuffolkLITLab/docassemble-AssemblyLine/issues/69)\r\n\r\n\r\n# ALDocument class\r\n\r\n## Purpose\r\n\r\nThe ALDocument class is a small utility library that makes it simpler to use the following features in an interview:\r\n\r\n* Conditional assembly of multiple, optional documents that are triggered in different ways in your interview\r\n* An addendum for PDF files that makes it simple to deal with overflow text\r\n* A customizable download screen that lists the documents in a neat table\r\n* A customizable \"send\" button that allows the user to email the final forms to a location of their choice\r\n\r\nHere is a small snippet that you can copy and modify that shows how to use the most important features of the ALDocument class.\r\n\r\n```\r\n---\r\nobjects:\r\n  - CRA_Motion_to_Dismiss_attachment: ALDocument.using(filename=\"CRA_Motion_to_Dismiss\", title=\"Motion to Dismiss CRA\", enabled=True, has_addendum=True, default_overflow_message=\"[See addendum]\")  \r\n---\r\nobjects:\r\n  - al_user_bundle: ALDocumentBundle.using(elements=[CRA_Motion_to_Dismiss_attachment], title=\"Forms to download and deliver to court\", filename=\"motion_to_dismiss_CRA.pdf\")\r\n  - al_court_bundle: ALDocumentBundle.using(elements=[CRA_Motion_to_Dismiss_attachment], title=\"Forms to download and deliver to court\", filename=\"motion_to_dismiss_CRA.pdf\")\r\n---\r\ngeneric object: ALDocument\r\nattachment:\r\n  variable name: x.addendum\r\n  docx template file: docx_addendum.docx\r\n---\r\ncode: |\r\n  CRA_Motion_to_Dismiss_attachment.overflow_fields['reasons_for_request'].overflow_trigger = 640\r\n  CRA_Motion_to_Dismiss_attachment.overflow_fields['reasons_for_request'].label = \"Reasons for request\"\r\n  CRA_Motion_to_Dismiss_attachment.overflow_fields.gathered = True\r\n  \r\n---\r\nattachment:\r\n    variable name: CRA_Motion_to_Dismiss_attachment[i]\r\n    name: CRA Motion to Dismiss\r\n    filename: CRA_Motion_to_Dismiss\r\n    skip undefined: True\r\n    pdf template file: CRA_Motion_to_Dismiss.pdf\r\n    fields: \r\n      - \"court_county\": ${ trial_court.address.county }\r\n      - \"docket_number\": ${ docket_number }\r\n      - \"user_signature\": ${ users[0].signature_if_final(i) }\r\n      - \"signature_date\": ${ signature_date }\r\n```\r\n\r\nIt is very common to have a *contingent* document in ALDocument. If your document is contingent, remove the `enabled=True` from the object declaration, and use\r\nsome other method to \"turn on\" the attachment.\r\n\r\nE.g.,\r\n\r\n```\r\ncode: |\r\n  CRA_Motion_to_Dismiss_attachment.enabled = condition1 and condition2\r\n```\r\n\r\n# Changelog\r\n\r\nSee [CHANGELOG.MD](https://github.com/SuffolkLITLab/docassemble-AssemblyLine/blob/main/CHANGELOG.md)\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSuffolkLITLab%2Fdocassemble-AssemblyLine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSuffolkLITLab%2Fdocassemble-AssemblyLine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSuffolkLITLab%2Fdocassemble-AssemblyLine/lists"}