{"id":16653610,"url":"https://github.com/norm/hasworn","last_synced_at":"2026-02-13T03:49:38.714Z","repository":{"id":66550709,"uuid":"386226901","full_name":"norm/hasworn","owner":"norm","description":"A collection of historic clothes wearings","archived":false,"fork":false,"pushed_at":"2025-01-24T05:57:04.000Z","size":247,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-12T08:02:23.637Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/norm.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2021-07-15T08:59:03.000Z","updated_at":"2025-01-24T05:57:07.000Z","dependencies_parsed_at":"2025-01-19T10:27:54.187Z","dependency_job_id":"1ca7479c-3be2-4af0-b805-25bf5a16fc34","html_url":"https://github.com/norm/hasworn","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/norm/hasworn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Fhasworn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Fhasworn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Fhasworn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Fhasworn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/norm","download_url":"https://codeload.github.com/norm/hasworn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Fhasworn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275128752,"owners_count":25410372,"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","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"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":[],"created_at":"2024-10-12T09:46:02.533Z","updated_at":"2026-02-13T03:49:33.694Z","avatar_url":"https://github.com/norm.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"hasworn\n=======\n\nA place to collection my tshirt wearing history.\n\n\n## Pre-requisites for working locally\n\n* docker and docker-compose: brew install --cask docker --or-- brew install docker docker-compose\n* flask: pip install flask\n* libsass: pip install libsass\n* entr: brew install entr\n\n\n## Generated static sites\n\nRunning in development:\n\n    # bring up the stack\n    export HASWORN_ENV=dev\n    ./compose build\n    ./start\n\n    # if this is a new checkout, or volumes have been removed\n    ./manage collectstatic --noinput\n    ./manage migrate\n    DJANGO_SUPERUSER_PASSWORD=norm ./manage createsuperuser \\\n        --username norm --email norm@example.com --noinput\n\nTo test a generated hasworn site:\n\n    ./manage import_csv sample/norm.csv\n\nTo preview the generated site:\n\n    ./update_css\n    python static.py\n\nTo automatically remake the CSS when developing it:\n\n    find sass -type f | entr -d ./update_css\n\nWhen done developing:\n\n    # shut down temporarily\n    ./compose down\n\n    # shut down and remove volumes to start afresh (or when development stops)\n    ./compose down --volumes --remove-orphans\n\n\n## Scripts\n\nScripts to interact with docker-compose, using the right configuration and\nenvironment files. These **default to production**; in development set the\nenvironment variable `HASWORN_ENV=dev` first.\n\n  * **compose**\n\n    Run a docker-compose operation.\n\n      ./compose down\n\n  * **start**\n\n    Bring up all hasworn services with docker-compose.\n\n        ./start\n\n  * **manage**\n\n    Shortcut to running `manage.py` commands inside the app container.\n\n        ./manage makemigrations\n        ./manage migrate\n\n  * **cert**\n\n    Register Let's Encrypt certificates.\n\n        ./cert\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorm%2Fhasworn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnorm%2Fhasworn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorm%2Fhasworn/lists"}