{"id":24375173,"url":"https://github.com/IAQI/tqc-website","last_synced_at":"2025-09-29T09:31:31.701Z","repository":{"id":271931148,"uuid":"914980491","full_name":"QCrypt/tqc-website","owner":"QCrypt","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-18T22:25:18.000Z","size":253700,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-18T23:21:42.879Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"SCSS","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/QCrypt.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":"2025-01-10T17:54:03.000Z","updated_at":"2025-01-18T22:25:20.000Z","dependencies_parsed_at":"2025-01-18T23:19:38.900Z","dependency_job_id":null,"html_url":"https://github.com/QCrypt/tqc-website","commit_stats":null,"previous_names":["qcrypt/tqc-website"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QCrypt%2Ftqc-website","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QCrypt%2Ftqc-website/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QCrypt%2Ftqc-website/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QCrypt%2Ftqc-website/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QCrypt","download_url":"https://codeload.github.com/QCrypt/tqc-website/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234604975,"owners_count":18859168,"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":[],"created_at":"2025-01-19T05:53:51.062Z","updated_at":"2025-09-29T09:31:31.694Z","avatar_url":"https://github.com/QCrypt.png","language":"SCSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TQC 2025+ website\n\n[![Netlify Status](https://api.netlify.com/api/v1/badges/2d3b6d5c-0a7d-4fea-a32e-9a1f7cbaa79a/deploy-status)](https://app.netlify.com/sites/tqc-website/deploys)\n\nHugo-powered TQC website for 2025 edition and later, live at at https://tqc-website.netlify.app. The Theory of Quantum Computation, Communication and Cryptography (TQC) is a leading annual international conference for students and researchers working in the theoretical aspects of quantum information science. \n\n [Hugo](https://gohugo.io/) is a fast static website generator. https://tqc-website.netlify.app is generously hosted by [netlify](https://www.netlify.com/) under a [Open Source Plan](https://www.netlify.com/legal/open-source-policy/) :heart:!\n\nThis project branched off from https://github.com/QCrypt/qcrypt-website in 2025 which is maintained since 2020 by [Christian Schaffner](https://github.com/cschaffner).\n\n\u003e [!CAUTION]\n\u003e TODO: adjust everything below here!\n\n## History\nOriginally based on the Hugo template from https://github.com/GDGToulouse/devfest-theme-hugo\nadapted from the fork by the cloudnative-amsterdam people: https://github.com/cloudnative-amsterdam/public-website\n\nUsed to run https://2020.qcrypt.net, https://2021.qcrypt.net, https://2022.qcrypt.net.\n\nSince 2023, the theme submodule is included directly in this git repository.\n\nIn preparation of the 2025 edition, a more permanent solution is envisioned with one main page, where more years can be added, broadly modeled after the IACR flagship websites like https://eurocrypt.iacr.org/2024, https://eurocrypt.iacr.org/2025, https://crypto.iacr.org/2023/, https://asiacrypt.iacr.org/2024/, and the *odd one out (in terms of design)* https://crypto.iacr.org/2024/.\n\n\n## Building this conference site from scratch\n\u003e [!WARNING]\n\u003e This has only been tested on macOS so far, so sharing your experience with other platforms here is very appreciated!\n\n1. Install [Hugo](https://gohugo.io/installation/) and [Dart Sass](https://gohugo.io/hugo-pipes/transpile-sass-to-css/)\n2. Clone this repo:\n\n```bash\n$ git clone https://github.com/IAQI/tqc-website.git\n```\n\n3. It's done. Just start Hugo server to see the site live!\n\n```bash\n$ cd tqc-website\n$ hugo server\n``` \n\n5. Edit the markdown source files with ending .md in the /content/ subdirectories to make changes to the site. You might also have to edit .json and .yml files in the /data/ subdirectory. As long as the hugo server is running, your changes should be visible immediately at http://localhost:1313/.\n\n6. Using a suitable editor like [Visual Studio Code](https://code.visualstudio.com/) allows to easily search across all source files, and will help finding the correct file to edit if you want to make specific changes.\n\n7. When you are happy with the result, commit the changes to the master branch. The site is then automatically deployed to https://tqc-website.netlify.com/ and accessible under https://tqc-website.netlify.app. If you have the proper rights, you can see the deployment logs on [netlify](https://app.netlify.com/sites/tqc-website/deploys).\n\n\n## Customizing the theme\nIs described in the [README.md](/themes/devfest-theme-hugo/README.md) of the theme.\n\n## High-level overview\nThis site is built with modern web technologies:\n\n* **Hugo**: [Hugo](https://gohugo.io/) is a fast website builder that turns simple text files into a complete website. It watches for changes in your content and instantly updates the site while you work.\n\n* **JamStack Architecture**: The website follows a modern approach where all pages are created ahead of time. This makes the site fast, secure, and reliable since there's no need to generate pages when visitors arrive. Learn more about [JamStack](https://jamstack.org/).\n\n* **Content Management**: Content is written in [Markdown](https://www.markdownguide.org/) files that are easy to edit and track changes. Multiple people can work on the site together through [GitHub](https://github.com/), and all changes are safely stored and can be reviewed.\n\n* **Styling with CSS/SASS**: The website's appearance is controlled through [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS) and [SASS](https://sass-lang.com/) style files that make it easy to maintain a consistent look. Each conference year can have its own visual theme, and the site works well on all screen sizes.\n\n* **Netlify Hosting**: [Netlify](https://www.netlify.com/) automatically builds and publishes the website whenever changes are made and committed to this repository. It ensures the site is secure, fast, and available worldwide through its global network.\n\nThis combination of tools creates a website that's fast, secure, and easy to maintain by the conference organizers. Sounds great? Check out [this guided walk](/themes/devfest-theme-hugo#a-guided-walk-through-the-ingredients) to learn how it actually works in more detail.\n\n## Setting up the next year 2025 based on previous years\n\n### design \n1. create a new logo, see previous editions for inspirations.\n2. choose a background image for the main site, e.g. [2024](/static/images/2024/background-2024.jpg) or [2023](/static/images/2023/background-2023.jpg) \n3. and make a related banner, e.g. [2024](/static/images/2024/banner-2024.jpg) or [2023](/static/images/2023/banner-2023.jpg) \n4. pick a related themecolor, like `#0099cc` or `#ac191c`.\n\n### create new subdirectories for content\n1. It's probably easiest to copy the entire content folder from a previous year like [/content/2024](/content/2024) and start adjusting from there\n2. create 2025 subfolder in [/static/images](/static/images)\n3. put the images (logo, background image, banner) from above to this folder\n\n### add info to main config file [/hugo.toml](/hugo.toml) \n4. In `[params]`, LEAVE the currentYear and date as it is right now. Change this only when the new 2025 site is ready.\n5. add a section `[params.2025]` and supply the required information\n6. the timeanddate_cityid can be inferred from https://www.timeanddate.com/worldclock/personal.html by looking at the link after clicking on \"Share This Personal World Clock\" \n7. Under `[menu]`, create a new `[[menu.2025]]` structure as for 2023 and 2024.\n\n### adjust content files\n1. Go through all .md files in [/content/2025](/content/2025) and the `_index.md` files in the subdirectories, and adjust the front matter. \n2. Adjust the `menu:` sub-entry to say `2025` instead of `2024`.\n3. put `draft: true` in case you want to disable the page for the time being.\n4. In general, whenever the year is passed on as parameter, you might have to update it. So, searching under [/content/2025](/content/2025) for all occurrences of 2024 and replacing the correct ones with 2025 is probably a good strategy.\n\n### create new style file\n1. In [/themes/devfest-theme-hugo/assets/style/](/themes/devfest-theme-hugo/assets/style/), duplicate [theme-2024.css](/themes/devfest-theme-hugo/assets/style/theme-2024.scss) and rename it to `theme-2025.css`\n2. adjust the last line to set the `--primary:` variable in `root` to the themecolor picked above.\n\n\n### Steps you will need help with\n1. on https://github.com/orgs/IAQI/teams, create a new team ```tqc-202x```\n2. add admins \n3. add repositories \n5. In netlify https://app.netlify.com/teams/qcrypt/members: add new admin as collaborator to qcrypt-website\n1. on https://api.slack.com/apps/A01P06YNCCU/incoming-webhooks , create a new Webhook (on the bottom of the page)\n1. paste the Webhook URL into netfliy:  https://app.netlify.com/sites/qcrypt2024/settings/deploys (for deploy succeesful and deploy failed)\n1. add admins to Slack channel\n3. We probably need new email addresses like 2025@tqc-conference.org and pcchairs2025@tqc-conference.org .\n3. connect new admins to admins from last year\n4. Is it time to update the hugo version? check what needs to be updated.\n\n### bump year\nOnce the new site is ready to be \"promoted\" to be the current year, make the following changes:\n1. In hugo.toml, in [params], change the currentYear and date\n2. In [[server.redirects]], change the forward to = \"/2025/\"\n3. In [/netlify.toml](/netlify.toml) , adjust the redirect as well\n\n\n## Later Updates\n\n### call for papers, venue updates, registration\n1. adjust the according .md file in content/2025, possibly by switching back \"draft: false\" and adjusting the content from previous year\n2. **all changes to the website should be mentioned in a table with \"Website Updates\" like on https://qcrypt.net/2023/**, for the convenience of the website visitors\n3. The call-to-action buttons on the main site can be adjusted depending on the news.\n\n### tutorial, invited speakers, panelists are known\n1. update the .md files in [/content/2025/speakers](/content/2025/speakers)\n2. remove previous images from the images subdirectory, upload new ones, and make sure the photoURL field of the speaker is pointing there.\n3. Use sensible names for the .md files, like eleni_diamanti.md \n4. Per speaker, create an according session in [/content/2025/sessions](/content/2025/sessions), using the examples from previous years.\n\n### accepted papers and posters are known\n1. Get accepted papers as json export from hotcrp from PC chair\n2. run [this python script](/static/python-scripts/sanitize_hotcrp_json.py) to sanitize the output, removing all emails, pc_conflicts etc.\n3. put the resulting file as accepted-papers-2025.json into [data](/main/data)\n\nProceed accordingly with the list of accepted posters.\n\n### creating a schedule\n1. duplicate [/main/data/schedule-2024.yml](schedule-2024.yml) and call it schedule-2025.yml\n2. make sure all sessions exist\n3. Adjust the id's of the contributed papers in the sessions with contributed papers\n\n\n## More detailed explanations of the different content sections\n\nHave a look at the [Hugo Documentation](https://gohugo.io/documentation/), ChatGPT is also quite knowledgable.\n\nHugo's favorite [Content format](https://gohugo.io/content-management/formats/) is markdown, and that's what we use throughout. For [data sources](https://gohugo.io/content-management/data-sources/) and config files, Hugo understands TOML, YAML, JSON, CSV, XML. We use the first three only.\n\nEvery content file contains a [front matter](https://gohugo.io/content-management/front-matter/), specifying metadata for the content, usually in yaml format. Important parameters are title, year, type, draft, menu. They influence how content is displayed.\n\n\u003e [!WARNING]\n\u003e In this site, we are deviating from the Hugo-recommended [Organization of content source](https://gohugo.io/content-management/organization/#organization-of-content-source), because our top levels in the `content/\u003cDIRECTORIES\u003e` are years, instead of topics. Therefore, the `.Section` variable is often our `$currentYear`.\n\nThe original Hugo template had multilingual support (French / English), but we have dropped this in the meanwhile, some reminders of these times are still around, though.\n\n### Hugo Shortcodes\n\u003e [!NOTE]\n\u003e We often use [Hugo shortcodes](https://gohugo.io/content-management/shortcodes/) in this project. There are two different types:\n\u003e * `{{%  %}}` produces markdown content like the `jumbo` element on the main page.\n\u003e * `{{\u003c  \u003e}}` produces HTML output, e.g. used to produce links with `button-link` inside the `jumbo` element on the main page.\n\u003e Some shortcodes have closing brackets, using the markdown content enclosed between them (like `jumbo`), others don't (like `button-link`).\n\n### file names\n\u003e [!IMPORTANT]\n\u003e Even though Hugo is quite forgiving, please use sensible and consistent file names for content pages, pictures etc. [This page](https://docs.hugoblox.com/reference/site-structure/) recommends to:\n\u003e - Stick to lowercase for all file names, including content files (`about.md`), layouts, and static assets (`images/logo.png`).\n\u003e - Use hyphens (`-`) or underscores (`_`) to separate words instead of spaces or capital letters (e.g., `my-article.md` or `my_article.md`).\n\n\n### Menus in the header\nSee [Menus](https://gohugo.io/content-management/menus/) in the Hugo documentation. We are using a mix of \"In side configuration\" and \"in front matter\" menu definitions.\n\nThe basic structure of the top menu is copied from the IACR flagship conference websites (like https://eurocrypt.iacr.org/2024). The basic menu structure is defined in [/hugo.toml](/hugo.toml) under [menu]. We have a menu hierarchy for each year, but these basic entries should basically be the same every year. The items \"Technical Program\" and \"Attend\" do not correspond to actual pages, they are used as parent menu items for other pages.\n\nThe other items in the menu are defined in the front matter of content pages.\n\n### Footer\nThe content of the footer is specified in [/data/footer.yml](/data/footer.yml). The \"social share\" options are currently disabled, the \"social follow\" options are Twitter and YouTube. \n\u003e [!NOTE]\n\u003e Maybe we want to move away from Twitter soon?\n\nThe footer rarely needs to be changed. It automatically links to the charter, history and code of conduct of the current year. Just make sure that the content directory of the currentYear also contains these three files:\n* `charter.md`\n* `history.md`\n* `code-of-conduct.md`\n  \nCopy them over from the previous year and make sure they are up to date!\n\nIt is a requirement by the Netlify Open Source plan to link to a code of conduct, so do not remove that part!\n\n### Main page\nThe main home page per year is the `/content/YEAR/_index.html`, like [/content/2024/_index.html](/content/2024/_index.html). It has `type: home` and `layout: home` in the front matter.\n\nIt is the only page without a banner on top, as it starts with a [jumbo element](/main/themes/devfest-theme-hugo/README.md#jumbo-bloc) which takes as arguments the background image, label and logo. The content of it is the date, and various call to actions using button-links, which in turn take arguments like label, url, icon.\n\nThe following elements are:\n* home-info: some basic information about QCrypt\n* home-keydates: the two most important tables: one with key dates, one with website updates, see [2023](https://qcrypt.net/2023/) for an example. Again, this is inspired by [the IACR pages](https://eurocrypt.iacr.org/2023/)). \n* home-location: image, address, and coordinates of the venue\n* partners: list of sponsors, or call for sponsors\n\n### Team\nOne of the first content pages to update and display. Follow the example of previous years.\n\nAll committees get their own subfolder, and there is an image folder for all portrait pictures. Ensure the photoURL front matter item points to the correct picture. When creating and naming new files, follow [reasonable conventions](#file-names).\n\n### Partners / Sponsors\nThe subdirectory is called `partners` but on the website, we commonly refer to them as \"Sponsors\". There are subfolders for the different categories. Logos should go into the `logos/` subfolders, and the `logo` front matter entry should refer to that logo file.\n\n### Speakers \u0026 Sessions\nVery similar to the administration of the [team](#Team).\n\nMake sure to create [sessions](/content/2024/sessions/) for all speakers. In front matter of the session (e.g. [this one](/content/2023/sessions/tutorial_yuen.md)), specify one or more speaker, referring to the `key` entry in the speaker front matter (e.g. `yuen` in [this one](/content/2023/speakers/tutorial/yuen.md)).\n\nThe front matter of sessions should specify the `year`, `format` (like `contributed`, `invited`, `industry`, `tutorial` etc.). The `type` has to be `sessions` in order to render the session properly.\n\nFor sessions with contributed talks, specify the paper ids once they are known.\n\nThere is an [overview of speakers](/content/2025/speakers/_index.html) (e.g. [2024](/2024/speakers/)), and and [overview of sessions](/content/2025/sessions/_index.html) (e.g. [2024](/2024/sessions/), both should be added to the \"Technical Program\" menu when ready.\n\n### Schedule\nOnce a schedule is drawn up, insert the session names and start times into [/data/schedule-2025.yml](/data/schedule-2025.yml) like in previous years. A schedule is then automatically generated and can be added to the \"Technical Program\" submenu by setting `draft: false` in [/content/2025/schedule/_index.html](/content/2025/schedule/_index.html)\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIAQI%2Ftqc-website","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FIAQI%2Ftqc-website","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIAQI%2Ftqc-website/lists"}