{"id":44343602,"url":"https://github.com/openlibhums/hourglass","last_synced_at":"2026-02-11T13:11:39.846Z","repository":{"id":95808890,"uuid":"602936926","full_name":"openlibhums/hourglass","owner":"openlibhums","description":"Hourglass press theme for OLH","archived":false,"fork":false,"pushed_at":"2026-02-02T16:57:46.000Z","size":35450,"stargazers_count":1,"open_issues_count":70,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-03T06:09:30.182Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openlibhums.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2023-02-17T09:08:49.000Z","updated_at":"2026-01-27T09:00:15.000Z","dependencies_parsed_at":"2023-10-30T10:34:27.022Z","dependency_job_id":"2c32ced2-afc1-4638-af6b-88eb80786b57","html_url":"https://github.com/openlibhums/hourglass","commit_stats":null,"previous_names":["birkbeckctp/hourglass","openlibhums/hourglass"],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/openlibhums/hourglass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlibhums%2Fhourglass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlibhums%2Fhourglass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlibhums%2Fhourglass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlibhums%2Fhourglass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openlibhums","download_url":"https://codeload.github.com/openlibhums/hourglass/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlibhums%2Fhourglass/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29333170,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T12:42:24.625Z","status":"ssl_error","status_checked_at":"2026-02-11T12:41:23.344Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-02-11T13:11:38.511Z","updated_at":"2026-02-11T13:11:39.839Z","avatar_url":"https://github.com/openlibhums.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hourglass Theme for Janeway\n\n## Minimum Janeway version\n\n1.7\n\n## Installing\n\n1. Clone this repository into the theme folder of your\n   [Janeway](https://github.com/BirkbeckCTP/janeway) installation\n   (with the current minimum version):\n\n   ```shell\n   cd src/themes\n   git clone git@github.com:BirkbeckCTP/hourglass.git\n   ```\n\n2. With your Python virtual environment activated, install the Python\n   dependencies using pip.\n\n   ```shell\n   pip install -r requirements.txt\n   ```\n\n3. Install the JavaScript dependencies using NPM:\n\n   ```shell\n   npm install\n   ```\n\n   You should see a new `node_modules` file in the `hourglass` folder.\n\n4. Add the app name to your `INSTALLED_APPS` in `settings.py`:\n\n   ```py\n   INSTALLED_APPS = [\n       ...,\n       'themes.hourglass',\n       ...,\n   ]\n   ```\n\n5. Make changes to settings for `django-components`, mostly according to the\n   [installation\n   instructions](https://github.com/EmilStenstrom/django-components/tree/d9342782266b6ec41e3f2c39229d71d975f809a2#installation)\n   However, do *not* apply caching with `loaders.cached.loader`. Instead,\n   use these loaders:\n\n   ```py\n   'loaders': [\n       'utils.template_override_middleware.Loader',\n       'django.template.loaders.filesystem.Loader',\n       'django_components.template_loader.Loader',\n       'django.template.loaders.app_directories.Loader',\n   ],\n   ```\n\n6. Make changes to settings for `django_minify_html` if desired according to the\n   [installation\n   instructions](https://github.com/adamchainz/django-minify-html#installation)\n\n## Deploying to production\n\nFrom the Janeway root, build assets for all themes:\n\n```shell\npython src/manage.py build_assets\n```\n\nYou can call the same command via NPM in the theme root:\n\n```shell\ncd src/themes/hourglass\nnpm run build\n```\n\n## Updating in production\n\n```shell\ncd src/themes/hourglass\ngit pull\npip install -r requirements.txt\nnpm install\npython ../../manage.py build_assets\n```\n\n## Developing\n\n### CSS\n\nUse Tailwind classes in the HTML templates to apply styling.\n\nIn the rare case you need to apply a style to the base layer or define\na custom component, make changes to `src/input.css` using `@layer` and\n`@apply` commands.\n\nWhen making lots of small CSS changes that you want to see in the browser\nduring development, you can use the hot replacement (HMR) feature provided\nby Tailwind. To watch for changes and recompile the CSS based on classes\nused automatically, use this NPM command:\n\n```shell\nnpm run dev\n```\n\nThis should work smoothly with the `django-browser-reload` configuration\nin Janeway so that you only have to save the HTML file you’re working in\nto see the changes take place in the browser. Templates and static CSS\nfiles are both watched and can trigger reloads independently.\n\n#### Styling notes\n\nEach section of content is given a container and relative positioning, so\nthat it can be used as an anchor for background colors and images.\n\nZ-index is used as follows:\n\n- `-z-10` for the solid light tan background\n\n- `z-0`, `z-10`, and `z-20` for the constructivist collages of geometric shapes and cut-out photos\n\n- `z-30` for pseudo-elements used to extend alternate color backgrounds\noutside the container to the edge left and/or right\n\n- `z-40` for the content layer, along with its immediate, in-container\nbackground color\n\n- `z-50` for the sticky desktop nav so it is persistent on top of\neverything else\n\n### JavaScript\n\nModify the files in `js` and rerun `build_assets`.\n\nNew files need to be added to `OTHER_SOURCE_FILES` in `build_assets.py`.\n\n### Code styling and linting\n\nThe repository is set up with a few formatters and linters:\n\n- [Standard](https://standardjs.com/) for JavaScript\n\n- [djhtml](https://github.com/rtts/djhtml) for Django template file indentation,\n  using 2-space-indents to better handle long Tailwind class lines\n\nPlease run these two commands before pushing:\n\n```shell\nstandard --fix\ndjhtml --tabwidth 2 templates\n```\n\nWe haven’t enforced them as a pre-commit hook, because we’d need to\ndiscuss the implications of that first.\n\n## Copyediting and Content Changes\n\nAll the content for this theme is stored in GitHub, rather the Janeway content\nmanagement system. You can propose changes in GitHub by following these steps:\n\n1. Make sure you have a GitHub account and that you’ve been added to an OLH\n   GitHub team with the right access.\n\n2. Make sure you have a Janeway account for the installation that you want\n   to edit and that your account has staff access.\n\n3. While logged in to the website, find the live page you want to edit,\n   and click on the “Edit on GitHub” link. You should be taken to the\n   GitHub page with the source code. You should also see the name of the\n   branch at the top of the page, after the file path.\n\n   ![The copyediting branch on this GitHub repository](src/media/copyediting-branch.png)\n\n4. Edit the file, and then select “Commit changes”. Enter a commit\n   message, and leave “Commit directly to the copyediting branch”\n   selected. Select “Commit changes”.\n\n   ![The commit window](src/media/copyediting-commit.png)\n\n5. Open a pull request from the copyediting branch to the main branch. Or\n   just ask a member of the tech team to do so for you. They will review\n   your edits and merge them into the live version of the website.\n\n## Changing a link to a media file\n\nYou can change a hyperlink to a Word doc or PDF like this:\n\n1. Upload the new file to the appropriate\n   [Media Manager in Janeway](https://janeway.readthedocs.io/en/latest/manager/content/index.html?highlight=media%20manager#media-files).\n   \n3. Copy the link Janeway gives you, and then paste it in to the appropriate\n   page using the steps above for Copyediting and Content Changes. For example,\n   in this line, you'd just replace the whole URL from \"https\" to \".doc\". Keep the\n   quotes around the link.\n\n   https://github.com/BirkbeckCTP/hourglass/blob/af0c2b87f06c271fe80639eb80fcf4960f72dbb2/templates/custom/journal-applications.html#L120\n\n## Engineering\n\nAs an alternative, we could use\n[django-tailwind](https://github.com/timonweb/django-tailwind).\n\n## Licensing\n\nThe code in this repository is licensed under AGPL 3.0.\n\nUnless otherwise stated, the original textual content and visual designs\nin this repository are the copyright of Birkbeck, University of London,\nand they are licenced under a [Creative Commons Attribution 4.0\nInternational License](https://creativecommons.org/licenses/by/4.0/) (CC\nBY 4.0). The Open Library of Humanities and its logos are registered\ntrademarks.\n\nThe attribution-required and trademarked content is restricted to the\nfollowing folders:\n\n- `templates/custom/*`\n\n- `components/*`\n\n- `src/media/*`\n\nThe CC BY license lets you share and adapt these materials so long as you\nproperly credit the source. Proper attribution of the OLH must be given in\nthe following manner:\n\n- Attribute the materials wherever they appear, including published\n  end-product websites.\n\n- Spell out the full name of the Open Library of Humanities and provide\na link to our website, as in one of these examples:\n\n  - “The Open-Access Movement” was first published by the Open Library of\nHumanities, openlibhums.org\n\n  - Diamond open-access diagram by the\n    [Open Library of Humanities](https://www.openlibhums.org/)\n\n- Display the attribution so that it is clearly visible and easily\n  legible, not obscured or hidden, with text that is the same size as the\n  main text in your work, or a minimum of 12pt (print) or 18px (web),\n  whichever is larger\n\n- Under no circumstances may your use or attribution of our materials\n  misconstrue the Open Library of Humanities as a publisher of your works\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenlibhums%2Fhourglass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenlibhums%2Fhourglass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenlibhums%2Fhourglass/lists"}