{"id":50508875,"url":"https://github.com/denisecase/signin-sheet-builder","last_synced_at":"2026-06-02T18:31:14.866Z","repository":{"id":344216597,"uuid":"1179962721","full_name":"denisecase/signin-sheet-builder","owner":"denisecase","description":"Generate printable sign-in sheets from CSV membership or registration data.","archived":false,"fork":false,"pushed_at":"2026-03-13T16:15:00.000Z","size":55,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-14T04:41:42.519Z","etag":null,"topics":["civic-tech","csv","data-transformation","python","signin-page","spreadsheet-automation"],"latest_commit_sha":null,"homepage":"https://denisecase.github.io/signin-sheet-builder/","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/denisecase.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":"CITATION.cff","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":".github/AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-12T15:01:17.000Z","updated_at":"2026-03-13T16:15:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/denisecase/signin-sheet-builder","commit_stats":null,"previous_names":["denisecase/signin-sheet-builder"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/denisecase/signin-sheet-builder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisecase%2Fsignin-sheet-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisecase%2Fsignin-sheet-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisecase%2Fsignin-sheet-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisecase%2Fsignin-sheet-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/denisecase","download_url":"https://codeload.github.com/denisecase/signin-sheet-builder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisecase%2Fsignin-sheet-builder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33833277,"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-06-02T02:00:07.132Z","response_time":109,"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":["civic-tech","csv","data-transformation","python","signin-page","spreadsheet-automation"],"created_at":"2026-06-02T18:31:13.686Z","updated_at":"2026-06-02T18:31:14.830Z","avatar_url":"https://github.com/denisecase.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# signin-sheet-builder\n\n[![Docs](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://denisecase.github.io/signin-sheet-builder/)\n[![CI Status](https://github.com/denisecase/signin-sheet-builder/actions/workflows/ci-python-zensical.yml/badge.svg?branch=main)](https://github.com/denisecase/signin-sheet-builder/actions/workflows/ci-python-zensical.yml)\n[![Python 3.14+](https://img.shields.io/badge/python-3.14%2B-blue?logo=python)](#)\n[![MIT](https://img.shields.io/badge/license-see%20LICENSE-yellow.svg)](./LICENSE)\n\nProfessional Python project for transforming tabular registration data into printable sign-in sheet layouts.\n\n# Overview\n\nThis project reads a source data file (typically CSV) and converts each input record into a **two-row sign-in sheet layout**.\n\nTypical use case:\n\n- start with one file containing many columns\n- sort and reorganize selected fields\n- expand each input row into two output rows\n- split results into multiple alphabetical groups\n- write output as CSV for maximum compatibility\n- optionally generate formatted Excel files for printing\n\nThe project is designed so that:\n\n- code can be published to GitHub\n- private data files stay local\n- transformation behavior is controlled by configuration\n\n# Input and Output\n\n### Input\n\n- `.csv` preferred\n- `.xlsx` optional if Excel support is enabled\n\nExample source:\n\n```\ndata/members.csv\n```\n\n### Output\n\nGenerated files appear in:\n\n```\nartifacts/\n```\n\nOutputs include:\n\n- multiple **CSV sign-in sheets**\n- optional **formatted Excel (.xlsx)** versions for printing\n\n# Configuration\n\nTransformation behavior is defined in a configuration file.\n\nPublic repositories should include:\n\n```\nconfig/config.example.toml\n```\n\nUsers create their own local version:\n\n```\nconfig/config.toml\n```\n\nExample configuration:\n\n```toml\nsplit_ranges = [\n  \"A-F\",\n  \"G-L\",\n  \"M-R\",\n  \"S-Z\",\n]\n\noutput_headers = [\n  \"Last-Address\",\n  \"First-City\",\n  \"Area-Zip\",\n  \"Group-Phone\",\n  \"Role-PhoneType\",\n  \"Signature-OKEdits\",\n]\n\nrow1_fields = [\n  \"Last Name\",\n  \"First Name\",\n  \"Area\",\n  \"Group\",\n  \"Role\",\n  \"\",\n]\n\nrow2_fields = [\n  \"Address\",\n  \"City\",\n  \"Zip\",\n  \"Phone Number\",\n  \"Type of Number\",\n  \"\",\n]\n\nadd_spacer_row = false\nsort_field = \"Last Name\"\n```\n\n### Split Ranges\n\nThe `split_ranges` configuration determines how records are divided into separate sign-in sheets.\n\nExample:\n\n```\nA-F\nG-L\nM-R\nS-Z\n```\n\nThese ranges can be adjusted to balance table workloads if some letter groups contain more names.\n\n# Working Files\n\n```\nconfig/                     configuration files\ndata/                       local input data\nartifacts/                  generated outputs\ndocs/                       documentation\nsrc/signin_sheet_builder/   package source code\n\npyproject.toml              project configuration\nzensical.toml               documentation configuration\n```\n\n# Installation\n\nClone the repository:\n\n```shell\ngit clone https://github.com/username/signin-sheet-builder\ncd signin-sheet-builder\ncode .\n```\n\n## Step 1. Set Up the Project Environment Setup\n\nIn a VS Code terminal:\n\n```shell\nuv self update\nuv python pin 3.14\nuv sync --extra dev --extra docs --upgrade\n\nuvx pre-commit install\ngit add -A\nuvx pre-commit run --all-files\n```\n\n## Step 2. Customize the Data\n\nPlace your private data and configuration locally:\n\n```\ndata/members.csv\nconfig/config.toml\n```\n\n## Step 3. Run the Tool (On Windows)\n\nGenerate sign-in sheets from a source CSV file.\nRun the full pipeline. This command performs all steps:\n\n1. generate sign-in CSV files\n2. format Excel versions\n3. export PDFs for printing\n\n```shell\nuv run signin-create-all\n```\n\nOr run each step in order:\n\n```shell\nuv run signin-create-csv\nuv run signin-create-xlsx\nuv run signin-create-pdf\n```\n\n\n# Development Commands\n\n```\nuv run ruff format .\nuv run ruff check . --fix\nuv run zensical build\n\ngit add -A\ngit commit -m \"update\"\ngit push -u origin main\n```\n\n# Notes\n\n- Keep real data out of Git.\n- Local data in `data/`.\n- Generated outputs in `artifacts/`.\n- Excel and PDF generation are optional; depend on operating system and installed libraries.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenisecase%2Fsignin-sheet-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdenisecase%2Fsignin-sheet-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenisecase%2Fsignin-sheet-builder/lists"}