{"id":20525862,"url":"https://github.com/deltachat/deltachat-pages","last_synced_at":"2025-06-14T15:05:40.508Z","repository":{"id":22382732,"uuid":"90034271","full_name":"deltachat/deltachat-pages","owner":"deltachat","description":"Delta Chat Website","archived":false,"fork":false,"pushed_at":"2025-06-04T20:31:10.000Z","size":212285,"stargazers_count":81,"open_issues_count":12,"forks_count":67,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-06-11T02:30:24.435Z","etag":null,"topics":["android","deltachat","messenger"],"latest_commit_sha":null,"homepage":"https://delta.chat/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deltachat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","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},"funding":{"custom":["https://delta.chat/en/contribute#donate-money"],"liberapay":"delta.chat","open_collective":"delta-chat"}},"created_at":"2017-05-02T13:04:32.000Z","updated_at":"2025-06-04T20:31:11.000Z","dependencies_parsed_at":"2023-09-29T12:46:10.741Z","dependency_job_id":"3b66a2db-94e1-438d-9ae3-d0e57d0802fe","html_url":"https://github.com/deltachat/deltachat-pages","commit_stats":{"total_commits":2449,"total_committers":80,"mean_commits":30.6125,"dds":0.5994283380971825,"last_synced_commit":"e1264849b6f8b70ecd72920941fcd8fac7632667"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deltachat%2Fdeltachat-pages","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deltachat%2Fdeltachat-pages/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deltachat%2Fdeltachat-pages/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deltachat%2Fdeltachat-pages/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deltachat","download_url":"https://codeload.github.com/deltachat/deltachat-pages/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deltachat%2Fdeltachat-pages/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259246158,"owners_count":22828001,"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":["android","deltachat","messenger"],"created_at":"2024-11-15T23:10:27.356Z","updated_at":"2025-06-14T15:05:40.489Z","avatar_url":"https://github.com/deltachat.png","language":"JavaScript","funding_links":["https://delta.chat/en/contribute#donate-money","https://liberapay.com/delta.chat","https://opencollective.com/delta-chat"],"categories":[],"sub_categories":[],"readme":"Delta Chat Website\n================================================================================\n\nThis repository contains the default website of Delta Chat -\nfeel free to edit any file you like and send a pull request.\n\nFormatting of blog posts and web pages\n--------------------------------------\n\nIn the various source text files that are used \nfor generating the static https://delta.chat website \nwe use [Semantic linefeeds](http://rhodesmill.org/brandon/2012/one-sentence-per-line/)\nto keep \"diffs\" for changes small. The gist of it is\nthat you put each \"phrase\" part of a sentence into a single line.\n\n\nHow to create a new blog post\n--------------------------------------------------------------------------------\n\n- In the directory `_posts` create new file in the form `YYYY-MM-DD-title.md` \n  e.g by copying an existing file.\n\n- Write your blog post to the file and do not forget \n  to add or modify the `title:` and `author:` line on the top.\n\n- **images up to a width of ~400px**\n  can be added with `\u003cimg style=\"float: left\" ...\u003e` or `\u003cimg style=\"float: left\" ...\u003e` -\n  on small mobile screens, where floating is barely possible, these images will get their own paragraph\n  in case you add an **empty line** after the images (also see existing blog posts as a pattern)\n\n- for **larger images** or if you do not want floating,\n  omit the floating rule and just use `\u003cimg ...\u003e` followed by an **empty line**;\n  these images always get their own paragraph then\n\n- That's all, the result goes to https://delta.chat/en/blog , and the\n  [RSS-Feed](https://delta.chat/feed.xml).\n\n\nTesting changes\n--------------------------------------------------------------------------------\n\n- You can create your fork on GitHub and GitHub pages; \n  the forked website will then be available at \n  `https://\u003cyour-username\u003e.github.io/deltachat-pages/`\n\n- If you have Nix installed,\n  you can build a website preview in `result/` with `nix build`\n  or run `nix develop` and start `jekyll serve` in development shell\n  to have a live preview at http://127.0.0.1:4000/en/\n  If you don't have Nix installed,\n  you can install it with [The Determinate Nix Installer](https://github.com/DeterminateSystems/nix-installer).\n\n- Alternatively, [install Jekyll](https://jekyllrb.com/docs/installation/) \n  on your local machive, run `bundle install` in this directory,\n  and execute `bundle exec jekyll serve`.\n  Then open http://127.0.0.1:4000/en/ in a browser\n  to preview the English version of the website.\n\n- If you get Ruby dependency problems, you can also build the page in a docker\n  container:  \n  ```sudo docker run -i -p 4000:4000 -v $PWD:/srv/jekyll -v $PWD/_site:/srv/jekyll/_site jekyll/builder:4 /bin/bash -c \"chmod 777 /srv/jekyll \u0026\u0026 jekyll serve\"```  \n  You can open the page in a browser at http://localhost:4000/en/.\n\nDirectory structure\n--------------------------------------------------------------------------------\n\n- `/en` - Contains the source language files in Markdown. Can be edited directly.\n\n- `/de`, `/es`, `fr` … - Contains the translated files, use Transifex to edit them;\n  you **MUST NOT** edit any files in these directories,\n  as they will be overwritten with the next pull from Transifex.\n\n- `/_layouts` - This directory contains a default layout template \n  for each language (the layout is referenced in Markdown using _layout: name_)\n\n- `/assets` - Page specific images and files; \n  in general, we use one subdirectory per page or section.\n\n- `/assets/css` - CSS and layout specific images and files.\n\n\nTranslate the website\n--------------------------------------------------------------------------------\n\nYou can edit and improve the existing translations \nwith [Transifex](https://www.transifex.com/delta-chat/delta-chat-pages/). \nTo **update existing translations from** the Transifex server, \nsee the scripts in the `tools` folder.\n\n\n### Initial setup\n\n- make sure `translate-toolkit` and `transifex-client` are installed\n\n- run the following commands (answer `n` to the question `Do you want to delete it and reinit the project? [Y/n]:`)\n```\ncd ./tools\ntx init --user=api --pass=\u003cyour api token\u003e\ntx set --auto-remote https://www.transifex.com/projects/p/delta-chat-pages/\n# fix historical typo in word verifiy\nsed -i s#translations/delta-chat-pages.verifiy-downloadspo#translations/delta-chat-pages.verify-downloadspo# .tx/config\n```\nfor more info see the comments in `./tools/t-dance.sh`.\n\n\n### Add a new language\n\n- create the directory `/\u003clang\u003e`\n\n- add the language to `tlangs` in `tools/t-dance.sh`\n  and run `./tools/t-dance.sh pull`.\n  copy files not handled by Transifex (./en/gdpr*) and adapt the header.\n\n- add the language to `/_includes/footer-languages.html` and `redirect.js`\n\n### Update translations\n\n- run `./tools/t-dance.sh pull`\n\n\n### Add a new page\n\n- create the source as `en/\u003cname\u003e.md`\n\n- modify `tools/.tx/config` - add a section for the new page\n\n- modify `tools/t-dance.sh` - add your page to `sfiles` variable\n\n- after merging, from master, run `./tools/t-dance push--do-this-only-from-master`\n\n- after that, you may want to give the file a meaningful name on Transifex\n  (\"Dashboard / Delta Chat Website / Resources / en.po\",\n  then in the upper right menu \"Settings / Name\" - leave \"Slug\" unchanged)\n\n\n### Update _typos_ in sources\n\nUpdating typos in the English sources\n**that shall not result in retranslations**\nis a bit tricky:\n\nThe English source is used as the ID for the translations,\nso fixing a typo will change the ID\nand result in translations needing to be redone.\n\nCurrently, this can be handled only manually:\n- fix the typo or grammar\n- run `./tools/t-dance push--do-this-only-from-master`\n  and then `./tools/t-dance.sh pull`\n- use `git diff` to check if translations are missing,\n  if so, go to the string on Transifex,\n  the old translation is typically shown as a **suggestion**\n\nOf course, that can also be done by the translators,\nbut it is good to keep that in mind,\nand avoid unnecessary changes to the English sources.\n\nIf a **retranslation is wanted**, of course,\nall these manual steps are not needed.\nSame for a blog post that is not translated.\n\n\nFurther Hints\n--------------------------------------------------------------------------------\n\n- wherever possible, use **Markdown** instead of HTML, \n  esp. in files for translation.\n\n- **no JavaScript** wherever possible, \n  no **weird CSS** or other complicated things.\n\n- the layout should be **as simple as possible** \n  and should always work on **small mobile screens** as well as on **desktops**.\n\n- while laying out a page, don't force a special structure. Header, Content, Footer - done.\n\n- no complex navigation - Simply link subpages from the main pages.\n\n- **no one-page-layout** - we also have sites with long text, \n  and we do not want to have separate layouts.\n\n- we do not want a complex navigation, some toplinks, a footer, done.\n\n- Remember: **Form follows function, KISS.** The site should be dead-simple.\n\n- Finally: Have fun :)\n\n\nLicense\n--------------------------------------------------------------------------------\n\nLicensed GPLv3+, see the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeltachat%2Fdeltachat-pages","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeltachat%2Fdeltachat-pages","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeltachat%2Fdeltachat-pages/lists"}